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