交互組件
XR交互
每個場景至少需要一個 XR Interaction Manager,以建立交互器和交互對象之間的連接。
Input Actions 必須通過 Input Action Manager 啓用(yòng),要手動添加它們,請找到 Input Action Manager 腳本,并将 Input Action 資産(chǎn)作(zuò)為(wèi)元素添加,這些資産(chǎn)位于示例路徑中(zhōng)的 Shared Assets > Input Actions 文(wén)件夾下。
控制器
Controller Manager 是除 QCHTI 示例外,用(yòng)于示例中(zhōng)交互的簡單預制件。它包含以下 GameObjects:
XR Controller Manager 會根據連接的 InputDevice 過濾應用(yòng)程序中(zhōng)使用(yòng)的 XRControllerProfile。有(yǒu)關 Microsoft Mixed Reality Motion Controller Profile 或 Oculus Touch Controller Profile 的詳細信息,請參閱 Unity 文(wén)檔。
如果使用(yòng)的是主控制器,設備指針将被激活。設備指針包含主控制器的網格和輸入引用(yòng)。如果使用(yòng)的是帶有(yǒu)兩個控制器的 VR 設備,則會激活 XR Controllers GameObject。XR Controllers 預制件包含左側和右側控制器的兩個 GameObjects,每個 GameObject 上都有(yǒu)一個 XR Controller(基于操作(zuò)的控制器)組件,引用(yòng)了每個控制器預制件和具(jù)體(tǐ)的輸入引用(yòng)。
交互預制件
交互預制件是一個較複雜的預制件,可(kě)用(yòng)于在不同的交互方法之間切換。它包含在 Snapdragon Spaces Samples 中(zhōng),并包括三種當前支持的交互方法的預制件。可(kě)以使用(yòng) XR Interaction Toolkit 示例場景作(zuò)為(wèi)如何使用(yòng)此預制件及其組件的示例。
交互管理(lǐ)器組件位于此預制件的根 GameObject 中(zhōng),它包含處理(lǐ)不同交互輸入模式的方法以及輸入交互切換的代碼。
對于 AR 設備,默認配置會首先使用(yòng)手部跟蹤,如果 Unity 項目中(zhōng)沒有(yǒu)包含 QCHT 包或手部跟蹤與目标設備不兼容,則會回退到凝視指針。否則,它會按以下順序切換:Hand Tracking > Gaze Pointer > Device Input.。
對于 VR/MR 設備,如果控制器被跟蹤,它将自動以 XR Controllers 作(zuò)為(wèi)默認輸入模式。如果沒有(yǒu)控制器被跟蹤,它将以手部跟蹤作(zuò)為(wèi)默認輸入模式。交互預制件中(zhōng)的自動控制器切換組件會檢測控制器的跟蹤狀态,在控制器被跟蹤時自動禁用(yòng)手部跟蹤,或在沒有(yǒu)控制器被跟蹤時啓用(yòng)手部跟蹤。用(yòng)戶可(kě)以通過按下左側控制器上的菜單按鈕,在 XR Controllers/手部跟蹤和凝視指針輸入模式之間切換。
手部跟蹤 有(yǒu)關手部跟蹤的相關文(wén)檔,請參閱 QCHT 手部跟蹤。 |
凝視指針
Gaze Pointer預制件由以下遊戲對象組成:
Gaze Interaction 用(yòng)戶界面組件添加到 XR Gaze Interactor 遊戲對象上。它管理(lǐ) XR Gaze Interactor 組件與場景中(zhōng) UI 對象的交互,以及指針的計時器持續時間和“點擊”功能(néng)。
GAZE 指針的限制 目前,Gaze 指針隻能(néng)與場景中(zhōng)帶有(yǒu) XR Simple Interactable 組件的 UI 對象交互,而指針控制器可(kě)以同時與 UI 和 3D 對象交互。 |
XR Gaze Interactor 預制件還具(jù)有(yǒu) Spaces Composition Layer 組件,有(yǒu)關使用(yòng) Composition Layer 渲染視圖鎖定内容的文(wén)檔,請參見 Unity Gaze Pointer Composition Layer Sample。
輸入操作(zuò)速查表
用(yòng)于輸入操作(zuò)的按鈕:
主控制器 | XR 右手控制器 | XR 左手控制器 | |
選擇 | 輕觸觸摸闆 | 右觸發按鈕 | 左觸發按鈕 |
Gaze/指針切換 | 菜單按鈕 | 無 | 左菜單按鈕 |
觸摸闆 | 觸摸闆 | 右搖杆 | 左搖杆 |
錨點位置确認 | 輕觸觸摸闆 | 任意觸發按鈕 | 任意觸發按鈕 |
控制器觸覺
控制器的觸覺反饋通過 Interaction Manager 的 SendHapticImpulse 函數發送到 XR Controller Manager。當調用(yòng) SendHapticImpulse 時,在按下 UI 按鈕或滾動時,主控制器和 XR 控制器都會觸發觸覺脈沖。
警告! 目前,無論哪個控制器觸發操作(zuò),觸覺反饋都會在兩個 XR 控制器上感受到。 |
XR 控制器的控制器動畫
每個 XR 控制器在 XRControllers 中(zhōng)都有(yǒu)一個引用(yòng)其 XR 控制器預制件的引用(yòng),包含帶有(yǒu)按鈕形狀變化的控制器網格。
每個預制件都附有(yǒu)一個 XR 控制器輸入動畫腳本,該腳本會根據接收到的控制器每個按鈕的數值更新(xīn)混合形狀權重值,從而生成按鈕動畫。
編輯器攝像機控制器
盡管構建時間可(kě)能(néng)相當耗時,但編輯器攝像機控制器允許在 Unity 編輯器中(zhōng)進行快速測試,并提供快捷鍵在 Gaze 指針和控制器之間切換。切換鍵會在編輯器控制台中(zhōng)顯示。
Spaces 手部追蹤按鈕綁定
XR Interaction Toolkit 示例中(zhōng)的每個按鈕、切換或滑塊預制件都有(yǒu)一個 Spaces 手部追蹤按鈕綁定組件,以禁用(yòng)手部追蹤以外的其他(tā)交互方式中(zhōng)不必要的 XR Simple Interactable 組件和捕捉體(tǐ)積。
交互包
Snapdragon Spaces 插件可(kě)以很(hěn)好地與多(duō)個交互包配合使用(yòng)。請參閱具(jù)體(tǐ)頁(yè)面以了解如何開始使用(yòng)這些交互包的詳細信息:
● MRTK3
● QCHT
● XRIT