XRSession: requestHitTestSourceForTransientInput() 方法
XRSession 介面的 requestHitTestSourceForTransientInput() 方法返回一個 Promise,該 Promise 解析為一個 XRTransientInputHitTestSource 物件,該物件可以傳遞給 XRFrame.getHitTestResultsForTransientInput()。
語法
js
requestHitTestSourceForTransientInput(options)
引數
options-
一個包含配置選項的物件,具體來說是
profile-
一個字串,指定將用於計算命中測試結果的瞬態輸入源的 輸入配置檔名稱。
entityTypes可選-
一個
Array,指定用於建立命中測試源的實體型別。如果未指定實體型別,則陣列預設為一個包含plane型別的單個元素。可能的型別point:基於檢測到的特徵點計算命中測試結果。plane:基於檢測到的真實世界平面計算命中測試結果。mesh:基於檢測到的網格計算命中測試結果。
offsetRay可選-
用於執行命中測試的
XRRay物件。如果未提供XRRay物件,則會建立一個新的XRRay物件,而不帶任何引數。
返回值
一個 Promise,該 Promise 解析為一個 XRTransientInputHitTestSource 物件。
異常
requestHitTestSourceForTransientInput() 不會丟擲真正的異常,而是會使用 DOMException 來拒絕返回的 Promise,具體來說是以下之一
NotSupportedErrorDOMException-
如果
hit-test不是XRSystem.requestSession()中啟用的功能,則會丟擲此異常。 InvalidStateErrorDOMException-
如果會話已結束,則會丟擲此異常。
NotAllowedErrorDOMException-
如果請求數量過多,則會丟擲此異常。某些使用者代理出於隱私原因可能會限制使用。
示例
請求瞬態命中測試源
要請求命中測試源,請使用啟用了 hit-test 會話功能的 XRSession 啟動一個會話。接下來,配置命中測試源並將其儲存以供以後在幀迴圈中使用,然後呼叫 XRFrame.getHitTestResultsForTransientInput() 獲取結果。
js
const xrSession = navigator.xr.requestSession("immersive-ar", {
requiredFeatures: ["local", "hit-test"],
});
let transientHitTestSource = null;
xrSession
.requestHitTestSourceForTransientInput({
profile: "generic-touchscreen",
offsetRay: new XRRay(),
})
.then((touchScreenHitTestSource) => {
transientHitTestSource = touchScreenHitTestSource;
});
// frame loop
function onXRFrame(time, xrFrame) {
let hitTestResults = xrFrame.getHitTestResultsForTransientInput(
transientHitTestSource,
);
// do things with the transient hit test results
}
規範
| 規範 |
|---|
| WebXR Hit Test 模組 # dom-xrsession-requesthittestsourcefortransientinput |
瀏覽器相容性
載入中…