XRHitTestResult

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在部分或全部支持的浏览器中。

实验性:这是一个实验性技术
在生产环境中使用此功能之前,请仔细查看浏览器兼容性表

XRHitTestResultWebXR 设备 API的接口,包含命中测试的单个结果。您可以通过调用XRFrame.getHitTestResults()获取帧的XRHitTestResult对象数组。

实例属性

无。

实例方法

XRHitTestResult.createAnchor() 实验性

返回一个Promise,该 Promise 解析为根据命中测试结果创建的XRAnchor

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 的浏览器中加载。

另请参阅