本指南將概略說明如何使用 Unity 為 Android XR 開發應用程式。Android XR 支援 Unity 提供的工具和功能,而且 Unity 的 Android XR 支援功能是以 OpenXR 為基礎建構,因此「OpenXR 總覽」一文所述的許多功能,Unity 也都支援。
請參閱這份指南,瞭解:
- Unity 支援 Android XR
- Unity XR 基礎知識
- 開發及發布 Android XR 應用程式
- Android XR 適用的 Unity 套件
- Unity OpenXR:Android XR 套件
- 適用於 Unity 的 Android XR 擴充功能
- 功能和相容性注意事項
- 輸入和互動
Android XR 的 Unity 支援
為 Android XR 建構 Unity 應用程式時,您可以善用最新版 Unity 6 中的混合實境工具和功能。包括使用 XR Interaction Toolkit、AR Foundation 和 OpenXR Plugin 的混合實境範本,協助您快速上手。使用 Unity 建構 Android XR 應用程式時,建議您採用 Universal Render Pipeline (URP) 做為算繪管道,並使用 Vulkan 做為 Graphics API。這些功能可讓您運用 Unity 的部分圖形功能,但這些功能僅支援 Vulkan。如要進一步瞭解如何設定這些選項,請參閱專案設定指南。
Unity XR 基礎知識
如果您是 Unity 或 XR 開發新手,可以參閱 Unity 的 XR 手冊,瞭解基本的 XR 概念和工作流程。XR 手冊包含下列資訊:
- XR 供應商外掛程式,包括 Unity OpenXR:Android XR 和 Android XR Extensions for Unity
- XR 支援套件,可新增應用程式層級的其他功能
- XR 架構指南,說明 Unity XR 技術堆疊和 XR 子系統
- 設定 XR 專案
- 建構及執行 XR 應用程式
- XR 圖像指南,包括通用轉譯管道、立體轉譯、凹凸轉譯、多視圖轉譯區域和 VR 影格時間碼
- XR 音訊指引,包括支援音訊空間化器
開發及發布 Android 應用程式
Unity 提供 Android 開發、建構及發布的深入說明文件,涵蓋的主題包括 Unity 中的 Android 權限、Android 建構設定、建構 Android 應用程式,以及向 Google Play 提交應用程式。
Android XR 的 Unity 套件
有兩個套件可支援建構適用於 Android XR 的 Unity 應用程式。這兩個套件都是 XR 供應商外掛程式,可透過 Unity 的 XR 外掛程式管理 套件啟用。XR 外掛程式管理員會新增專案設定,方便您管理 XR 外掛程式的載入、初始化、設定和建構支援,並提供相關說明。如要讓應用程式在執行階段執行 OpenXR 功能,專案必須透過外掛程式管理員啟用這些功能。
這張圖片顯示如何透過 Unity 編輯器啟用這些功能群組。
Unity OpenXR Android XR
Unity OpenXR Android XR 套件是 XR 外掛程式,可將 Android XR 支援功能新增至 Unity。這個 XR 外掛程式提供 Unity 的大部分 Android XR 支援,並為 AR Foundation 專案啟用 Android XR 裝置支援。AR Foundation 專為想要建立 AR 或混合實境體驗的開發人員設計。這個類別提供 AR 功能的介面,但本身不會實作任何功能。Unity OpenXR Android XR 套件提供實作項目。如要開始使用這個套件,請參閱套件手冊,內含入門指南。
適用於 Unity 的 Android XR 擴充功能
適用於 Unity 的 Android XR 擴充功能是 Unity OpenXR Android XR 套件的補充功能,內含其他功能,可協助您建構沉浸式體驗。可單獨使用,也可與 Unity OpenXR Android XR 套件搭配使用。
如要開始使用這個套件,請按照專案設定指南或快速入門指南,匯入 Android XR Extensions for Unity。
功能和相容性注意事項
下表說明 Unity OpenXR 支援的功能:Android XR 套件和 Android XR Extensions for Unity 套件,可用於判斷哪個套件包含所需功能,以及任何相容性考量。
功能 |
Unity OpenXR:Android XR 功能字串 |
Android XR Extensions for Unity 功能字串 |
用途和預期行為 |
---|---|---|---|
Android XR:AR 專案
|
Android XR (擴充功能):工作階段管理
|
如要使用任一套件的功能,必須為該套件啟用 AR 專案工作階段功能。您可以同時啟用這兩組功能,個別功能會相應處理衝突。 |
|
不適用 |
不適用 |
裝置追蹤功能可用來追蹤裝置在實體空間中的位置和旋轉角度。XR Origin GameObject 會自動處理裝置追蹤作業,並使用 XROrigin 元件和 GameObject 階層 (包含攝影機和 TrackedPoseDriver),將可追蹤項目轉換為 Unity 的座標系統。 |
|
Android XR:AR 相機 |
不適用 |
這項功能支援光線估算和全螢幕透視。 |
|
Android XR:AR 平面 |
Android XR (擴充功能):平面 |
這兩項功能完全相同,請擇一使用。Android XR (擴充功能):內含平面,因此開發人員不必依附 Unity OpenXR Android XR 套件,即可使用 Android XR (擴充功能):物件追蹤和持續性錨點功能。日後,Android XR (擴充功能):平面將會移除,改用 Android XR:AR 錨點。 |
|
不適用 |
Android XR (擴充功能):物件追蹤 |
這項功能可偵測及追蹤實體環境中的物件,並搭配參照物件庫使用。 |
|
Android XR:AR 臉部
|
Android XR:臉部追蹤
|
Android XR:AR Face 功能提供虛擬人偶眼睛支援。透過 Android XR 的臉部追蹤功能存取使用者的臉部表情。這兩項功能可以同時使用。 |
|
Android XR:AR Raycast
|
不適用 |
這項功能可讓您投射光線,並計算該光線與實體環境中偵測到的平面可追蹤物件或深度可追蹤物件之間的交集。 |
|
Android XR:AR Anchor |
Android XR (擴充功能):錨點
|
這兩項功能都支援空間錨點和平面錨點,請擇一使用。如要使用持續性錨點,請使用 Android XR (擴充功能):錨點。日後,Android XR (擴充功能):錨點將會移除,所有錨點功能都會移至 Android XR:AR 錨點。 |
|
Android XR:AR 遮蔽
|
不適用 |
遮蔽功能可讓應用程式中的混合實境內容,顯示為隱藏或部分遮蔽在實體環境中的物體後方。 |
|
成效指標 |
Android XR 效能指標 |
不適用 |
使用這項功能存取 Android XR 裝置的效能指標。 |
支援合成層 (必須使用 OpenXR 外掛程式和 XR 合成層) |
Android XR:透視合成層
|
使用 Unity 的合成層支援功能,建立基本合成層 (例如四邊形、圓柱體、投影)。Android XR:透視合成層可用於建立具有自訂網格的透視層,並從 Unity 的 GameObject 讀取資料。 |
|
凹凸算繪 (需要 OpenXR 外掛程式)
|
凹陷 (舊版) |
透過凹凸透鏡成像,降低使用者周邊視野區域的解析度,進而加快成像速度。Unity 的凹凸透鏡成像功能僅適用於使用 URP 和 Vulkan 的應用程式。Unity 適用的 Android XR 擴充功能中的「Foveation (Legacy)」功能也支援內建的轉譯管道和 OpenGL ES。建議您盡可能使用 Unity 的凹凸感渲染功能,並注意為 Android XR 建構時,建議使用 URP 和 Vulkan。 |
|
不適用 |
Android XR:無界參考空間 |
這項功能會將 XRInputSubsystem 追蹤原點模式設為 Unbounded。「Unbounded」表示 XRInputSubsystem 會追蹤與世界錨點相關的所有 InputDevice,而世界錨點可能會變更。 |
|
不適用 |
環境混合模式 |
這項功能可讓您設定 XR 環境混合模式,控制虛擬圖像在穿透模式啟用時,如何與真實世界環境融合。 |
輸入和互動
Android XR 支援多模態自然輸入。
除了手部和眼球追蹤功能,還支援 6DoF 控制器、滑鼠和實體鍵盤等周邊裝置。也就是說,Android XR 應用程式應支援手部互動,且不能假設所有裝置都會隨附控制器。
互動設定檔
Unity 會使用互動設定檔,管理 XR 應用程式與各種 XR 裝置和平台的通訊方式。這些設定檔會為不同硬體設定建立預期輸入和輸出內容,確保各種平台都能相容並提供一致的功能。啟用互動設定檔後,您可以確保 XR 應用程式在不同裝置上正常運作、維持一致的輸入對應,並存取特定 XR 功能。如要設定互動設定檔:
- 開啟「Project Settings」視窗 (選單:依序點選「Edit」>「Project Settings」)。
- 按一下「XR 外掛程式管理」展開外掛程式部分 (如有需要)。
- 在 XR 外掛程式清單中選取「OpenXR」。
- 在「互動設定檔」部分,選取「+」按鈕即可新增設定檔。
- 從清單中選取要新增的設定檔。
手部互動
OpenXR 外掛程式提供手部互動 (XR_EXT_hand_interaction
),您只要啟用「手部互動設定檔」,即可在 Unity 輸入系統中公開 <HandInteraction>
裝置版面配置。使用這個互動設定檔,透過 OpenXR 定義的四種動作姿勢 (「捏合」、「戳」、「瞄準」和「握持」) 支援手部輸入。如需其他手部互動或手部追蹤功能,請參閱本頁面的 XR Hands。
眼球注視互動
OpenXR 外掛程式提供眼球注視互動 (XR_EXT_eye_gaze_interaction
),您可以使用這個版面配置擷取擴充功能傳回的眼睛姿勢資料 (位置和旋轉)。如要進一步瞭解 OpenXR 輸入指南中的眼球注視互動,請參閱這篇文章。
控制器互動
Android XR 支援 6DoF 控制器的 Oculus Touch 控制器設定檔。這兩個設定檔都是由 OpenXR 外掛程式提供。
滑鼠互動
Android XR 滑鼠互動設定檔 (XR_ANDROID_mouse_interaction
) 由 Android XR Extensions for Unity 提供。並在 Unity 輸入系統中公開裝置版面配置。<AndroidXRMouse>
手掌姿勢互動
OpenXR 外掛程式支援手掌姿勢互動 (XR_EXT_palm_pose
),可在 Unity 輸入系統中公開 <PalmPose>
版面配置。手掌姿勢並非要取代可執行手部追蹤的擴充功能或套件,以因應更複雜的用途,而是可用於放置應用程式專屬的視覺內容,例如虛擬人偶圖像。手掌姿勢包含手掌位置和方向。
XR Hands
XR Hands 套件可讓您使用 XR_EXT_hand_tracking
和 XR_FB_hand_tracking_aim
存取手部追蹤資料,並提供包裝函式,將手部追蹤資料中的手部關節資料轉換為輸入姿勢。如要使用 XR Hands 套件提供的功能,請啟用「Hand Tracking Subsystem」和「Meta Hand Tracking Aim OpenXR」功能。
如果您需要更精細的手部姿勢或手部關節資料,或是需要使用自訂手勢,XR hands 套件就非常實用。
詳情請參閱 Unity 的專案 XR Hands 設定說明文件。
選擇手部算繪方式
Android XR 支援兩種手部算繪方式:手部網格和預先建構的視覺化工具。
手部網格
Android XR Unity 套件包含「手部網格」功能,可存取 XR_ANDROID_hand_mesh extension
。「手部網格」
功能會提供使用者雙手的網格。手部網格包含代表手部幾何結構的三角形頂點。這項功能旨在提供個人化網格,代表使用者雙手的真實幾何形狀,以供視覺化。
XR Hands 預製物件
XR Hands 套件包含名為「Hands visualizer」的範例,其中包含完全裝備的左右手,可根據情境適當呈現使用者的雙手。
系統手勢
Android XR 包含系統手勢,可開啟選單,讓使用者返回、開啟啟動器,或查看正在執行的應用程式總覽。使用者可以透過慣用手勢啟動這個系統選單。
使用者與系統導覽選單互動時,應用程式只會回應頭部追蹤事件。XR Hands 套件可偵測使用者何時執行特定動作,例如與這個系統導覽選單互動。檢查 AimFlags
、SystemGesture
和 DominantHand
可瞭解系統何時執行這項動作。如要進一步瞭解 AimFlags
,請參閱 Unity 的 Enum MetaAimFlags 說明文件。
XR Interaction Toolkit
XR Interaction Toolkit 套件是高階的互動系統,以元件為基礎,可用於建立 VR 和 AR 體驗。這個架構可透過 Unity 輸入事件,提供 3D 和 UI 互動功能。這項功能支援互動工作,包括觸覺回饋、視覺回饋和移動。
OpenXR™ 和 OpenXR 標誌是 The Khronos Group Inc. 的商標,已在中國、歐盟、日本和英國註冊為商標。