Android XR 版 Chrome 支援 WebXR。WebXR 是 W3C 的開放標準,可為支援的瀏覽器提供高效能 XR API。如果您是為網頁建構內容,可以使用 3D 模型強化現有網站,或打造全新沉浸式體驗。
Chrome for Android XR 支援下列 WebXR 功能:
如要查看 WebXR 的實際運作情形,請在 Android XR 裝置或 Android XR 模擬器上啟動 Chrome,並瀏覽官方 WebXR 範例。
前置條件:選擇 WebXR 架構
開始開發前,請務必選擇合適的 WebXR 架構。這麼做可大幅提升您自己的工作效率,並改善您創造的體驗品質。
- 如要完全控制 3D 場景,並建立自訂或複雜的互動,建議您使用 three.js 和 babylon.js。
- 如要快速製作原型,或使用類似 HTML 的語法定義 3D 場景,建議您使用 A-Frame 和 model-viewer。
- 您也可以參考更多架構和程式碼範例。
如果您偏好使用原生 JavaScript 和 WebGL,請參閱 GitHub 上的 WebXR,建立第一個 WebXR 實驗。
為 Android XR 進行調整
如果您有在其他裝置上執行的 WebXR 體驗,可能需要更新程式碼,才能在 Android XR 上正確支援 WebXR。舉例來說,以行動裝置為主的 WebXR 體驗必須從單一螢幕改為在 Android XR 中使用兩個立體螢幕。針對行動裝置或現有頭戴式裝置打造的 WebXR 體驗,可能需要調整輸入程式碼,以便以手勢為優先。
在 Android XR 上使用 WebXR 時,您可能需要更新程式碼,以便因應兩個螢幕 (每隻眼睛一個) 的情況。
關於如何確保 WebXR 中的深度感
當使用者將虛擬物件放置在實體空間時,其比例應正確無誤,讓物件看起來像是真正存在於該空間。舉例來說,在家具購物應用程式中,使用者需要信任虛擬扶手椅會完美地融入客廳。
Chrome for Android XR 支援 WebXR 中的深度感測模組,可強化裝置感知現實環境的尺寸和輪廓的能力。這項深度資訊可讓您打造更身歷其境且逼真的互動體驗,協助使用者做出明智的決定。
與行動裝置上的深度感測不同,Android XR 中的深度感測是立體的,會即時串流兩個深度地圖,以便雙眼視覺。您可能需要更新 WebXR 程式碼,才能正確支援立體深度影格。
以下範例會以立體方式算繪深度資訊:
// Called every time a XRSession requests that a new frame be drawn.
function onXRFrame(t, frame) {
const session = frame.session;
session.requestAnimationFrame(onXRFrame);
const baseLayer = session.renderState.baseLayer;
const pose = frame.getViewerPose(xrRefSpace);
if (pose) {
gl.bindFramebuffer(gl.FRAMEBUFFER, session.renderState.baseLayer.framebuffer);
// Clears the framebuffer.
gl.clearColor(0, 0, 0, 0);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// Note: Two views will be returned from pose.views.
for (const view of pose.views) {
const viewport = baseLayer.getViewport(view);
gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
const depthData = frame.getDepthInformation(view);
if (depthData) {
renderDepthInformationGPU(depthData, view, viewport);
}
}
} else {
console.error('Pose unavailable in the current frame!'); }
}
程式碼的重點
- 必須傳回有效的姿勢,才能存取深度資料。
pose.views
會為每個眼睛傳回一個檢視畫面,並執行兩次對應的 for 迴圈。
使用 WebXR 深度感測 API 進行即時深度視覺化。紅色代表較近的像素,藍色代表較遠的像素。
在 WebXR 中新增手勢互動
在 WebXR 應用程式中加入手勢互動功能,可提供更直覺且身歷其境的體驗,進而提升使用者參與度。
手勢輸入是 Android XR 的主要互動機制。Chrome for Android XR 支援手勢輸入 API 做為預設輸入方式。這個 API 可讓使用者以自然的方式與虛擬物件互動,使用手勢和手部動作抓取、推送或操控場景中的元素。
行動電話或以控制器為主的 XR 裝置可能尚不支援手勢輸入。您可能需要更新 WebXR 程式碼,才能正確支援手動輸入。「使用手勢的沉浸式 VR 工作階段」示範如何將手勢追蹤整合至 WebXR 專案。
以下動畫示範如何結合捏合與 WebXR API,讓使用者「抹除」虛擬空間的表面,以便顯示進入現實世界的透視窗。
WebXR 示範:使用手指撥動螢幕,以便透過螢幕看到真實世界。
WebXR 中的權限
當您使用需要權限的 WebXR API 時,Chrome 會提示使用者授予網站權限。所有 WebXR API 都需要 3D 對應和攝影機追蹤權限。追蹤的臉部、眼睛和手部資料的存取權也受到權限保護。如果已授予所有必要權限,呼叫 navigator.xr.requestSession('immersive-ar', options)
會傳回有效的 WebXR 工作階段。
使用者選擇的權限偏好設定會保留在每個網域。當您存取其他網域中的 WebXR 體驗時,Chrome 會再次提示您授予權限。如果 WebXR 體驗需要多項權限,Chrome 會逐一要求每項權限。
如同網站上的所有權限一樣,您應該妥善處理權限遭拒的情況。