XRHitTestResult
XRHitTestResult
是WebXR 设备 API的接口,包含命中测试的单个结果。您可以通过调用XRFrame.getHitTestResults()
获取帧的XRHitTestResult
对象数组。
实例属性
无。
实例方法
XRHitTestResult.createAnchor()
实验性XRHitTestResult.getPose()
实验性-
返回命中测试结果相对于给定基准空间的
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 命中测试模块 # xr-hit-test-result-interface |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。