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 |
瀏覽器相容性
載入中…