HoloLens2:輸入系統介紹

Jyadmin 提交于 周一, 09/16/2019 - 17:40

?

輸入系統(術語)

在MRTK提供的所有功能中,輸入系統是最大的系統之一。工具箱中的許多東西都是在它之上構建的(指針、焦點、預設)。輸入系統中的代碼允許在跨平臺之間進行自然交互,比如抓取和旋轉。

我們在這里說明一些有價值的術語:

數據源(Data providers)

在輸入配置文件中對輸入數據提供者的一個引用——換句話說它是輸入設備的管理器。這個組件的作用是把底層系統的輸入數據橋接成MRTK所使用的輸入數據。其中一個例子是Windows混合現實(Windows Mixed Reality)的適配,它的工作是把通過Windows混合現實(Windows Mixed Reality)api輸入的數據轉化為MRTK所使用的輸入數據。另外一個例子是OpenVR適配(它的工作室通過OpenVR api 得到輸入動作并轉化為MRTK所接受的數據)。

控制器(Controller)

物理控制器的抽象(包括所有的六軸手柄,HoloLens 1提供的空間手柄,全關節的手部捕捉器或者Leap Motion等等輸入設備)??刂破髋缮谠O備管理器(比如,一個WMR(windows混合現實)設備管理器會捕捉一個全關節的手,并管理他的生命期)

指針(Pointer)

控制器會通過指針來與游戲對象(game objects)進行交互。例如近距離交互指針,可以通過檢測手(既控制器)何時靠近其宣稱自己支持的“近距離交互”對象。隔空指針或者遠距離指針(比如遠距離射線指針),可以幫助我們處理超過我們手臂長度的遠距離內容。

指針由設備管理器創建,然后附加到輸入源。要獲取控制器的所有指針,請執行以下操作:controller.InputSource.Pointers。

?

HoloLens2:輸入系統

?

注意,一個控制器可以同時擁有許多不同的指針。但是為了確保操作順利,在某一時刻只有一個指針會被激活(比如,中距離指針的使用會組織近距離指針)。以確保這不會陷入混亂中,有一個指針中介控制指針允許活躍(例如,近距離指針被激活的時候,遠距離指針將會被關閉)。

焦點(Focus)

指針的事件將被發送給焦點對象。不同的指針類型將提供不同的焦點選擇方案,比如手指戳的指針會通過一個球體的碰撞來選擇焦點,而一個遠距離的射線指針將會通過一個線來檢測接收的焦點對象。所有焦點對象必須實現IMixedRealityFocusHandler接口來觸發。我們也可以注冊一個全局對象來接受所有指針事件,但我們在這里不推薦使用這種方法。

更新焦點對象的組件是FocusProvider。

光標(Cursor)

與指針關聯的實體,它在指針交互周圍提供額外的視覺提示。例如,手指光標會在你的手指周圍呈現一個圓環,當你的手指接近“接近可交互”的物體時,圓環可以旋轉。一個指針同時只能和一個光標關聯相關聯。

交互和操作(Interaction and Manipulation)

對象可以使用交互或操作腳本進行標記(這可能是Interactable.cs 或者NearInteractionGrabbable.cs / ManipulationHandler.cs)。

例如,NearInteractionGrabbable 和NearInteractionTouchable 允許某些指針(特別是靠近交互指針的指針)知道可以將焦點放在哪些對象上。

Interactable 和ManipulationHandler,這些組件,它們偵聽指針事件來影響移動/縮放/旋轉游戲對象的可視化表現。