從 MRTK2 到 MRTK3 的概念移轉指南
當您開始使用 MRTK3 時,您會發現 MRTK v2 中的數個概念已變更、取代或移除。 這是因為 MRTK3 使用 Unity 的 XR 互動工具組 (XRI) 架構來處理互動,以及 Unity 輸入系統加上 OpenXR 進行輸入。 本檔將協助橋接 MRTK v2 概念與其 MRTK3 對應專案之間的差距。
重要
對於 XRI 新手的開發人員,建議您先檢閱 Unity 的 XRI 架構檔。 所有 XRI 檔也適用于 MRTK3,因為大部分的互動和輸入功能只會繼承自 XRI。
術語
MRTK v2 詞彙 | MRTK3 字詞 | Description |
---|---|---|
Pointer | 互動器 | 互動者 會在 Interactionable 上執行互動。 有些 (但並非所有) 互動者都是由控制器所驅動,這些控制器會從中接收輸入動作和姿勢。 其他 Interactors 會獨立于控制器之外運作。 MRTK 隨附數個自訂 Interactors,在基本 Interactors Unity 已提供實用的混合實境互動。 您可以透過繼承或實作互動器介面來建置自訂互動專案, IXRHoverInteractor (、 IXRSelectInteractor 等等) 。 如需詳細資訊,請參閱 互動器架構檔。 |
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler |
可互動 | 可互動是 互動的收件者。 MRTK 隨附數個自訂的 Interactionables,可在已提供的基本 Interactionables Unity 之上提供實用的混合實境互動。 您可以透過繼承或實作可互動的介面, (IXRHoverInteractable 、 IXRSelectInteractable 等等來建置可互動) 。 如需 MRTK 如何擴充 XRI 互動的詳細資訊,請參閱 可互動架構檔。 |
控制器 | 控制器 | ActionBasedController是 Unity 輸入動作的集合,代表與特定裝置相關聯的系結。 輸入動作的集合可以衍生自多個裝置,因為與基礎輸入裝置之間 ActionBasedControllers 沒有 1:1 關聯性。 (A DeviceBasedController 是輸入裝置的 1:1 對應,但我們不會使用它們。) 許多互動者 ( ControllerBasedInteractor s,特別是) 接聽控制器的輸入動作,換句話說,XRController 底下的全 ControllerBasedInteractor 都會共用相同的選取動作。 |
Teleport 系統 | Locomotion 系統 | Locomotion 系統可讓使用者在 XR 體驗期間移動場景。 MRTK v2 的系統允許基本的遠端傳送和遠端埠熱點,並高度可自訂遠端傳送資料指標和指標行為。 XRI 提供下列新增功能來尋找:
|
焦點提供者 | XR 互動管理員 | XRInteractionManager是 Unity 機制,可作為場景中Interactors與Interactables之間的媒介。 Unity XRInteractionManager 會同步處理和仲裁 Interactors 與 Interactionables 之間的所有互動,而且相較于舊版焦點提供者,可大幅提升彈性。 |
指標媒體器 | 互動模式管理員 | 新的 互動模式管理員 可用來根據場景內的內容來啟用/停用動作專案集。 如需詳細資訊,請參閱 模式管理員檔 。 |
SceneQuery 遮罩 | 互動層 | XRI 互動層 可讓開發人員篩選哪些 Interactors 可以處理哪些互動專案。 這些層與 Unity 實體層不同。 |
焦點 | 暫留 | 互動性問題當 Interactable 是 Interactor 的有效目標時,將 滑鼠停留 在 Interactable 上。 一般而言,Hover 會指出互動者的意圖,例如以光線為目標、抓取手部鄰近性,或使用者正在查看物件。 |
選取/Poke/擷取/語音等。 | 選取 | 互動者問題 當 Interactable 同時是有效的目標和互動者選擇這麼做時,選取 [互動]。 ControllerBasedInteractors 通常會在其對應的控制器選取輸入動作引發時發出 Selects。 其他互動者可以有更複雜的邏輯,以判斷何時應該發出選取專案給目標互動。 MRTK v2 處理了與不同事件和程式碼路徑的不同類型的互動,換句話說,抓取與個別系統所產生的光線點選或擷取基本上是不同的互動。 在 MRTK3 中,物件的所有「選取」方式都會在相同的 Select 互動下整合。 我們強烈建議開發人員建置依賴特定互動類型的互動邏輯;相反地,撰寫可一般回應所有 Selects 的一般化程式碼。 如此一來,您的互動會跨所有輸入形式運作,甚至是尚未開發的互動類型。 請參閱 互動架構 ,以進一步閱讀我們不建議本課程的原因。 |
N/A | 啟動 | Activate 是可以在已經選取的物件上引發的額外動作。 例如,如果使用者選取具有控制器底框的波浪杆,觸發程式就會以 Activate 動作引發它。 |
資料提供者 | XRSubsystem + 提供者 | 由於 Unity 輸入系統和 OpenXR 處理大部分跨平臺輸入工作,因此 MRTK3 已不再需要大部分的資料提供者。 不過,針對 Unity 尚未涵蓋的一些極端值,我們會提供 XRSubsystem 可在不同平臺提供資料,例如 和 HandsAggregatorSubsystem SpeechSubsystem 。 如需子系統方法的概念性閱讀,請參閱 子系統架構檔 。 |
事件
MRTK v2 詞彙 | XRI 字詞 | 備註 |
---|---|---|
OnFocusEnter/Exit |
FirstHoverEnter LastHoverExit |
First 請注意 和 Last 前置詞。 這些包含在事件名稱中,因為任意數目的 Interactors 可以同時暫留 Interactable。 您也可以使用 HoverEnter 和 HoverExit 接聽每個個別的暫留進入/結束,雖然它比監視整體暫留狀態還不實用。 |
OnPointerDown/Up |
FirstSelectEnter LastSelectExit |
First 請注意 和 Last 前置詞。 這些包含在事件名稱中,因為任意數目的 Interactors 可以根據選取模式) 同時選取可互動 (。 您也可以使用 SelectEnter 和 SelectExit 來接聽每個個別的選取/結束,雖然它比監視整體選取狀態還不實用。 |
OnPointerDragged |
N/A | 只要在 interactorsSelecting 選取期間使用 輪詢附加轉換 GetAttachTransform 即可。 請記住,視互動的選取模式而定,不系結的 Interactors 數目可以選取 (並操作互動) 。 |
OnSourcePoseChanged, OnSourceDetected, OnSourceLost |
N/A | XRI 不會引發這些事件。 它們會透過 XRController 監視其相關聯的 輸入裝置來處理。 |