XRHitTestSource

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

XRHitTestSource 接口是 WebXR 设备 API 的一部分,用于处理命中测试订阅。您可以通过使用 XRSession.requestHitTestSource() 方法获取 XRHitTestSource 对象。

此对象本身不包含命中测试结果,但它用于通过调用 XRFrame.getHitTestResults() 来为每个 XRFrame 计算命中测试,该方法返回 XRHitTestResult 对象。

实例属性

无。

实例方法

XRHitTestSource.cancel() 实验性

取消命中测试订阅。

示例

获取会话的 XRHitTestSource 对象

调用 XRSession.requestHitTestSource() 来获取命中测试源。

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
}

取消命中测试订阅

要取消命中测试源的订阅,请调用 XRHitTestSource.cancel()。由于该对象将不再可用,您可以清理并将其设置为 null

js
hitTestSource.cancel();
hitTestSource = null;

规范

规范
WebXR Hit Test 模块
# hit-test-source-interface

浏览器兼容性

另见