XRHitTestResult
XRHitTestResult 接口是 WebXR 设备 API 的一部分,包含单次命中测试的结果。您可以通过调用 XRFrame.getHitTestResults() 来获取一帧中 XRHitTestResult 对象数组。
实例属性
无。
实例方法
XRHitTestResult.createAnchor()实验性XRHitTestResult.getPose()实验性-
返回命中测试结果相对于给定基础空间(base space)的
XRPose。
示例
在帧循环中获取 XRHitTestResult 对象
除了在帧循环中显示 XRHitTestResult 之外,此示例还演示了在请求此对象之前必须执行的几项操作。在设置会话时,请将 "hit-test" 指定为 requiredFeatures 之一。接下来,调用 XRSession.requestHitTestSource() 并传入所需的引用(通过调用 XRSession.requestReferenceSpace() 获取)。这将返回一个 XRHitTestSource。您将在帧循环中使用它来获取 XRHitTestResult 对象。
js
const xrSession = navigator.xr.requestSession("immersive-ar", {
requiredFeatures: ["local", "hit-test"],
});
let hitTestSource = null;
xrSession
.requestHitTestSource({
space: viewerSpace, // obtained from xrSession.requestReferenceSpace("viewer");
offsetRay: new XRRay({ y: 0.5 }),
})
.then((viewerHitTestSource) => {
hitTestSource = viewerHitTestSource;
});
// frame loop
function onXRFrame(time, xrFrame) {
let hitTestResults = xrFrame.getHitTestResults(hitTestSource);
// do things with the hit test results
}
获取命中测试结果的姿态
使用 getPose() 来查询结果的姿态。
js
let hitTestResults = xrFrame.getHitTestResults(hitTestSource);
if (hitTestResults.length > 0) {
let pose = hitTestResults[0].getPose(referenceSpace);
}
从命中测试结果创建锚点
一旦使用命中测试在现实世界表面上找到交点,您就可以创建一个 XRAnchor 将虚拟对象附加到该位置。
js
hitTestResult.createAnchor().then(
(anchor) => {
// add anchored objects to the scene
},
(error) => {
console.error(`Could not create anchor: ${error}`);
},
);
规范
| 规范 |
|---|
| WebXR Hit Test 模块 # xr-hit-test-result-interface |
浏览器兼容性
加载中…