交互組件

交互組件

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à)。

 

圖片27.png

 

控制器

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)示例。

 

圖片28.png


交互管理(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ì)象組成:

 

圖片30.png


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)控制器網格。

 

圖片31.png


每個(gè)預制件都附有一個(gè) XR 控制器輸入動畫(huà)腳本,該腳本會根據接收到的(de)控制器每個(gè)按鈕的(de)數值更新混合形狀權重值,從而生成按鈕動畫(huà)。

 

編輯器攝像機控制器

盡管構建時(shí)間可(kě)能相當耗時(shí),但編輯器攝像機控制器允許在 Unity 編輯器中進行快(kuài)速測試,并提供快(kuài)捷鍵在 Gaze 指針和(hé)控制器之間切換。切換鍵會在編輯器控制台中顯示。

 

圖片32.png 


圖片33.png

 

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