XRSession:requestHitTestSource() 方法
XRSession
接口的 requestHitTestSource()
方法返回一个 Promise
,该 Promise 解析为一个 XRHitTestSource
对象,该对象可以传递给 XRFrame.getHitTestResults()
。
语法
js
requestHitTestSource(options)
参数
返回值
一个 Promise
,该 Promise 解析为一个 XRHitTestSource
对象。
异常
requestHitTestSource()
不会抛出真正的异常,而是会拒绝返回的 Promise,并使用一个 DOMException
作为拒绝原因,具体来说,会使用以下其中一个:
NotSupportedError
DOMException
-
如果在
XRSystem.requestSession()
中,“hit-test” 功能未启用,则会抛出此异常。 InvalidStateError
DOMException
-
如果会话已结束,则会抛出此异常。
NotAllowedError
DOMException
-
如果请求数量过大,则会抛出此异常。出于隐私原因,某些用户代理可能会限制使用。
示例
请求命中测试源
要请求命中测试源,请先启动一个启用了“hit-test”会话功能的 XRSession
。接下来,配置命中测试源并将其存储以供稍后在帧循环中使用,并调用 XRFrame.getHitTestResults()
获取结果。
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
}
规范
规范 |
---|
WebXR 命中测试模块 # dom-xrsession-requesthittestsource |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。