?
輸入系統(tǒng)(術(shù)語)
在MRTK提供的所有功能中,輸入系統(tǒng)是最大的系統(tǒng)之一。工具箱中的許多東西都是在它之上構(gòu)建的(指針、焦點、預(yù)設(shè))。輸入系統(tǒng)中的代碼允許在跨平臺之間進行自然交互,比如抓取和旋轉(zhuǎn)。
我們在這里說明一些有價值的術(shù)語:
數(shù)據(jù)源(Data providers)
在輸入配置文件中對輸入數(shù)據(jù)提供者的一個引用——換句話說它是輸入設(shè)備的管理器。這個組件的作用是把底層系統(tǒng)的輸入數(shù)據(jù)橋接成MRTK所使用的輸入數(shù)據(jù)。其中一個例子是Windows混合現(xiàn)實(Windows Mixed Reality)的適配,它的工作是把通過Windows混合現(xiàn)實(Windows Mixed Reality)api輸入的數(shù)據(jù)轉(zhuǎn)化為MRTK所使用的輸入數(shù)據(jù)。另外一個例子是OpenVR適配(它的工作室通過OpenVR api 得到輸入動作并轉(zhuǎn)化為MRTK所接受的數(shù)據(jù))。
控制器(Controller)
物理控制器的抽象(包括所有的六軸手柄,HoloLens 1提供的空間手柄,全關(guān)節(jié)的手部捕捉器或者Leap Motion等等輸入設(shè)備)。控制器派生于設(shè)備管理器(比如,一個WMR(windows混合現(xiàn)實)設(shè)備管理器會捕捉一個全關(guān)節(jié)的手,并管理他的生命期)
指針(Pointer)
控制器會通過指針來與游戲?qū)ο螅╣ame objects)進行交互。例如近距離交互指針,可以通過檢測手(既控制器)何時靠近其宣稱自己支持的“近距離交互”對象。隔空指針或者遠(yuǎn)距離指針(比如遠(yuǎn)距離射線指針),可以幫助我們處理超過我們手臂長度的遠(yuǎn)距離內(nèi)容。
指針由設(shè)備管理器創(chuàng)建,然后附加到輸入源。要獲取控制器的所有指針,請執(zhí)行以下操作:controller.InputSource.Pointers。
?

?
注意,一個控制器可以同時擁有許多不同的指針。但是為了確保操作順利,在某一時刻只有一個指針會被激活(比如,中距離指針的使用會組織近距離指針)。以確保這不會陷入混亂中,有一個指針中介控制指針允許活躍(例如,近距離指針被激活的時候,遠(yuǎn)距離指針將會被關(guān)閉)。
焦點(Focus)
指針的事件將被發(fā)送給焦點對象。不同的指針類型將提供不同的焦點選擇方案,比如手指戳的指針會通過一個球體的碰撞來選擇焦點,而一個遠(yuǎn)距離的射線指針將會通過一個線來檢測接收的焦點對象。所有焦點對象必須實現(xiàn)IMixedRealityFocusHandler接口來觸發(fā)。我們也可以注冊一個全局對象來接受所有指針事件,但我們在這里不推薦使用這種方法。
更新焦點對象的組件是FocusProvider。
光標(biāo)(Cursor)
與指針關(guān)聯(lián)的實體,它在指針交互周圍提供額外的視覺提示。例如,手指光標(biāo)會在你的手指周圍呈現(xiàn)一個圓環(huán),當(dāng)你的手指接近“接近可交互”的物體時,圓環(huán)可以旋轉(zhuǎn)。一個指針同時只能和一個光標(biāo)關(guān)聯(lián)相關(guān)聯(lián)。
交互和操作(Interaction and Manipulation)
對象可以使用交互或操作腳本進行標(biāo)記(這可能是Interactable.cs 或者NearInteractionGrabbable.cs / ManipulationHandler.cs)。
例如,NearInteractionGrabbable 和NearInteractionTouchable 允許某些指針(特別是靠近交互指針的指針)知道可以將焦點放在哪些對象上。
Interactable 和ManipulationHandler,這些組件,它們偵聽指針事件來影響移動/縮放/旋轉(zhuǎn)游戲?qū)ο蟮目梢暬憩F(xiàn)。