正如Connect 2022的公告一樣,Meta Quest2和Meta Qust Pro端的Meta Quest Browser瀏覽器現在已經增加了對WebXR混合現實服務的支持。
Meta Quest Browser現在支持以下WebXR規范:
WebXR Augmented Reality Module (Passthrough)
WebXR Plane Detection Module
WebXR Anchors Module
Passthrough透視
Passthrough為Meta Quest頭顯提供了物理世界的實時3D可視化。在以前,你無法使用WebXR向用戶展示真實世界。但現在Meta Quest Browser瀏覽器現在已經增加了對WebXR混合現實服務的支持。
Passthrough在Quest Pro是全彩,而Quest 2則是灰度。
要使用Passthrough,請在請求WebXR會話時使用新的”immersive-ar”模式:
navigator.xr.requestSession("immersive-ar").then((session) => { xrSession = session;});
你可以檢測瀏覽器中是否支持Passthrough,如下所示:
navigator.xr.isSessionSupported('immersive-ar').then((supported) => { if (!supported) { return; } // 'immersive-ar' sessions are supported. // Page should advertise AR support to the user.}
你必須在透明背景繪制內容,否則將無法看到Passtrough環境。
你可以在這里體驗一個基本的Passtrough示例。
平面檢測
除了在防護系統中定義你的工作空間外,你同時可以轉到Settings > Guardian > Mixed Reality 來定義房間設置,如辦公桌、沙發等。
然后,瀏覽器會把所述對象顯示為具有世界位置的平面形狀。
要啟用這一功能,你必須在請求會話時傳遞”plane-detection”功能描述符:
const session = await navigator.xr.requestSession("immersive-ar", { requiredFeatures: ["plane-detection"]});
然后,瀏覽器請求用戶訪問房間設置信息,如果被允許,則將其呈現給會話。
啟用所述功能后,XRSession將包含包含XRPlanes的新數組“detectedPlanes”。每個XRPlane都包含一個世界位置和一個多邊形。目前,相關多邊形在Meta Quest頭顯始終是水平或垂直矩形。你可以使用這些多邊形進行命中測試、與VR對象的交互、遮擋等等。
由于很少有人運行防護系統的房間設置,XRSession添加了一個名為“initiateRoomCapture”的新助手功能。這個助手功能將從沉浸式會話中觸發防護系統的房間設置。建議你在確定“detectedPlanes”數組中沒有平面時調用所述函數。這個“detectedPlanes”數組不會立即填充,因此在會話創建后等待2到3秒,然后再做出決定。每個會話只能調用此函數一次。
你可以在這里體驗一個基本的平面檢測示例。
持久性錨點
錨點允許你定義現實世界中的位置。定義后,無論設備的原點在何處,錨點都會保持在同一空間中。這允許你在現實世界中放置虛擬對象或為場景設置公共原點。
Meta Quest頭顯同時支持持久錨,從而允許你在沉浸式會話中保存和恢復相關位置。
你可以通過調用帶有位置和XRSpace的“createAnchor”來創建非持久性錨點。這將返回一個具有獲取其世界位置的API的對象。即使頭顯的原點被重置,所述位置在現實世界中都將始終相同。
要創建持久性錨點,請對錨點對象調用“requestPersistentHandle”。生成的字符串可以由站點存儲。要恢復錨點,站點可以調用“restorePersistentAnchor”,它在相同位置返回錨點對象。
一個站點目前一次只能創建8個持久性錨點。如果會話在隱私模式下運行,則錨點不會持續。這意味著,如果在隱私模式下保存錨點并關閉,然后重新打開隱私模式,你無法再恢復持久性錨點。清除站點的歷史記錄同樣會刪除永久性錨點。
你可以在這里體驗一個基本的持久性錨點示例。