從 MRTK2 移轉至 MRTK3 的移轉指南

當您開始使用 MRTK3 時,您會發現 MRTK v2 中的數個概念已變更、取代或移除。 本文件有助於彌合 MRTK v2 概念與其 MRTK3 對應項目之間的差距。

互動

MRTK3 使用 Unity 的 XR 互動工具組 (XRI) 架構來處理互動,以及 Unity 輸入系統加上 OpenXR 進行輸入。

重要

對於 XRI 新手的開發人員,建議您先檢閱 Unity 的 XRI 架構檔。 所有 XRI 檔也適用於 MRTK3,因為大部分的互動和輸入功能都只是繼承自 XRI。

詞彙

MRTK v2 詞彙 MRTK3 字詞 描述
Pointer 互動者 Interactors 會在 Interactionables執行互動。 有些(但並非全部)Interactors 是由控制器驅動,從中接收輸入動作和姿勢。 其他 Interactors 獨立於控制器運作。

MRTK 會提供數個自定義 Interactors,在已提供的基本 Interactors Unity 之上提供實用的混合實境互動。 自定義互動專案可以透過繼承或藉由實作互動器介面 (IXRHoverInteractorIXRSelectInteractor等等) 來建置。 如需詳細資訊,請參閱 互動器架構檔
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler 可互動 互動者 是互動的收件者。 MRTK 會提供數個自定義的 Interactionables,在已提供的基本 Interactionables Unity 之上,提供實用的混合實境互動。 您可以透過繼承或實作可互動的介面來建置互動的介面(IXRHoverInteractableIXRSelectInteractable等等)。 如需 MRTK 如何擴充 XRI 互動的詳細資訊,請參閱 可互動架構檔
控制器 控制器 ActionBasedController 是 Unity 輸入動作的集合,代表與特定裝置相關聯的系結。 輸入動作的集合可以衍生自多個裝置,因為與基礎輸入裝置之間 ActionBasedControllers 沒有 1:1 關聯性。 (A DeviceBasedController 是輸入裝置的 1:1 對應,但我們不使用它們。

許多動作專案 (ControllerBasedInteractors, 特別是) 會接聽控制器以執行輸入動作,換句話說,XRController 底下的所有動作 ControllerBasedInteractor都會共用相同的選取動作。
Teleport 系統 Locomotion 系統 Locomotion 系統可讓使用者在 XR 體驗期間移動場景。 MRTK v2 的系統允許基本的遠端傳送和遠端傳送熱點,具有高度的可自定義性,適用於遠端數據指標和指標行為。 XRI 為機車提供下列新增功能:
  • 以固定角度旋轉鑽機的貼齊回合提供者
  • 連續回合提供者,可隨著時間順暢地旋轉鑽機
  • 連續移動提供者,可隨著時間順暢地移動鑽機
焦點提供者 XR 互動管理員 XRInteractionManager 是 Unity 機制,可作為場景中 InteractorsInteractables 之間的媒介。 Unity XRInteractionManager 會同步處理並仲裁 Interactors 與 Interactionables 之間的所有互動,而且相較於舊版焦點提供者,可大幅提升彈性。
指標調解器 互動模式管理員 根據場景內的內容,新的 互動模式管理員 可用來啟用/停用動作專案集。 如需詳細資訊, 請參閱模式管理員檔
SceneQuerymask 互動層 XRI 互動層 可讓開發人員篩選哪些 Interactors 可以處理哪些互動專案。 這些層與 Unity 物理層不同。
焦點 暫留 當 Interactable 是互動器的有效目標時,Interactors 問題 將滑鼠停留 在 Interactables 上。 一般而言,Hover 會指出互動者的意圖,例如以光線為目標、抓取手部鄰近性,或使用者是否正在查看物件。
選取/Poke/抓取/語音等。 選取 互動者問題 當 Interactable 同時是有效的目標,而互動者選擇這樣做時,[ 互動者] 會選取 [互動]。 ControllerBasedInteractors 通常會在其對應的控制器選取輸入動作引發時發出 Selects。 其他動作專案可以有更複雜的邏輯,以判斷何時應發出選取專案給目標互動。

MRTK v2 處理了與個別事件和程式代碼路徑的不同類型互動,換句話說,抓取與由個別系統產生的光線點擊或點球,基本上是不同的互動。 在 MRTK3 中,所有「選取」物件的方式都會在相同的 Select 互動下統一。

我們強烈建議開發人員建置依賴特定互動類型的互動邏輯;請改為撰寫可一般回應所有 Selects 的可一般化程序代碼。 如此一來,您的互動就能跨所有輸入形式運作,甚至是尚未開發的互動類型。 請參閱互動架構,以進一步閱讀為什麼我們不建議本課程。
N/A 啟動 Activate 是可以在已選取的對象上引發的額外動作。 例如,如果使用者使用控制器的抓地力選取 Squirt 槍,觸發程式就會以 Activate 動作引發它。
資料提供者 XRSubsystem + 提供者 MRTK3 不再需要大部分的數據提供者,因為 Unity 輸入系統和 OpenXR 會處理大部分跨平台輸入工作。 不過,對於 Unity 尚未涵蓋的一些極端值,我們提供 XRSubsystem的 可以跨不同平臺提供數據,例如 HandsAggregatorSubsystemSpeechSubsystem如需有關子系統方法的概念性閱讀,請參閱子系統架構檔

事件

MRTK v2 詞彙 XRI 字詞 備註
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
First請注意 和 Last 前置詞。 這些前置詞會包含在事件名稱中,因為任意數目的 Interactors 可以同時暫留互動。 您也可以使用 HoverEnterHoverExit接聽每個個別暫留進入/結束,雖然它比監視整體暫留狀態更有用。
OnPointerDown/Up FirstSelectEnter
LastSelectExit
First請注意 和 Last 前置詞。 這些前置詞會包含在事件名稱中,因為任意數目的 Interactors 可以同時選取互動式(視選取模式而定)。 您也可以使用 和 SelectExit來接聽每個個別的選取專案進入/結束SelectEnter,雖然它比監視整體選取狀態還不實用。
OnPointerDragged N/A 只要在 interactorsSelecting 選取期間使用 GetAttachTransform 輪詢附加轉換即可。 請記住,根據互動的選取模式,不系結的 Interactors 數目可以選取 [並操作] 互動。
OnSourcePoseChanged, OnSourceDetected, OnSourceLost N/A XRI 不會引發這些事件。 它們會透過 XRController 監視其相關聯的 輸入設備來處理。

UX 元件

如需 MRTK3 UX 元件的完整檔,請參閱 UX 套件的概觀: UX CoreUX ComponentsUX Components (Non-Canvas)。 MRTK3 的主要變更是強調使用 Unity UI 的 Canvas UX 元件。 也有非畫布 UX 元件的套件。 您可以在這裡找到 Canvas 與非 Canvas UX 之間的比較。

備註

Hand CoachTooltipsObject CollectionAppBarProgress Indicator 元件還不存在於 MRTK3 中。 此外, Toolbox 也不會實作 Text Prefabs 優化。 隨著新增額外的 MRTK3 UX 元件,本檔將會更新


MRTK2 MRTK3 備註
Buttons Canvas Button
Non-Canvas Button
在 MRTK3 中,Unity UI 型按鈕和以碰撞器為基礎的按鈕會重新裝修為 Canvas 和非畫布按鈕。

內建工具可將 MRTK3 中的按鈕分組,包括 Button GroupToggleCollection

您可以在和 NonCanvasUITearsheet 場景中找到CanvasUITearsheet範例。
Slider Canvas Slider
Non-Canvas Slider
您可以在場景中找到 HandInteractionExamples 範例。
Dialog Dialog
Dialog API
您可以在場景中找到 DialogExample 範例。
Scrolling Collection VirtualizedScrollRectList 您可以在場景中找到 VirtualizedScrollRectList 範例。 MRTK3 檔目前正在進行中。
Slate Slate (Non-Canvas) 您可以在場景中找到 SlateDrawingExample 範例。
See-it, Say-it Label See-it, Say-it Label 您可以在場景中找到 SeeItSayItExample 範例。
Hand Menu Hand Menu 您可以在場景中找到 HandMenuExamples 範例。
Near Menu Near Menu 您可以在場景中找到 NearMenuExamples 範例。
System Keyboard System Keyboard 您可以在場景中找到 HandInteractionExamples 範例。
Fingertip Visualization Fingertip Visualization FingerCursor腳本和預製專案會在 MRTK3 中取代,而且索引指尖會透過MRTKPokeReticleVisualRingReticleReticleMagnetism 腳本可視化。 MRTK LeftHand Controller prefab 包含如何使用這些元件的範例。
Constraint Manager Constraint Manager 您可以在場景中找到 BoundsControlExamples 範例。
Bounds Control Bounding Box Bounds Control BoundingBox 取代腳本。 BoundsControl 提供自動大小的周框方塊,其視覺效果可加以自定義。 有數 BoundingBox 個預製專案可用於視覺效果。

您可以在場景中找到 BoundsControlExamples 範例。
Object Manipulator Manipulation Handler Object Manipulator Manipulation Handler 已被取代。 使用 Object Manipulator 任何與有效附加轉換互動者的物件操作(移動、旋轉、縮放)。

您可以在場景中找到 HandInteractionExamples 範例。
Interactable StatefulInteractable 您可以在場景中找到 InteractableButtonExamples 範例。
Dwell InteractorDwellManager 在 MRTK2 中,會 DwellHandler 附加 至 物件,並提供事件來處理停留的開始和結尾。 在 MRTK3 中,和 InteractorDwellManager GazeInteractor Far Rays 中有 MRTK XR Rig,用來 StatefulInteractable 判斷物件是否啟用停留,如果它確實選取物件,則會在停留期間選取物件。

MRTK3 檔目前正在進行中。
Solvers Solvers MRTK3 範例場景目前正在進行中。
Visual Theming Data Binding and Theming MRTK3 數據系結和主題設計架構的設計,可讓您輕鬆地建立可在運行時間動態填入和更新的視覺元素。 尚未與 Canvas UX 整合。

輸入組態

輸入動作

MRTK 3 會使用新的 Unity 輸入系統套件 來執行輸入動作。 大部分的設定都可以透過資產進行 Input Action 設定。


指標

指標會附加至 MRTK3 中的互動專案。 在預設值MRTK XR Rig中,交集項目位於 和 MRTK LeftHand Controller下方MRTK RightHand Controller

Task MRTK 2 MRTK 3
設定指標的視覺預製專案 Pointer Prefab MRTK 2 指標組態設定檔中的 屬性。 MRTK RightHand Controller MRTK LeftHand Controller 中的 MRTK XR RigMonoBehaviours。 例如、 MRTKPokeReticleVisualMRTKLineVisualMRTKRayReticleVisual
限制哪些圖層可以與其互動 Pointing Raycast Layer Masks 中的 MRTK Pointer Profile屬性。 這適用於所有指標。 raycastMask 腳本上的 Interactor 屬性。
設定指標光線廣播的範圍 Pointing Extent 中的 MRTK Pointer Profile屬性。 這適用於所有指標。 maxRaycastDistance 腳本上的 Interactor 屬性。
設定指標的優先順序 DefaultPointerMediator 或覆寫控制。 透過 InteractionModeManager 設定 (MRTK3 MonoBehaviour) 。

手勢

Input Actions 可以指派給各種手勢輸入法(目前只支援 HoloLens 2 上的 Windows 辨識)。

Task MRTK 2 MRTK 3
將動作指派給筆勢 在 中MixedRealityGesturesProfile將手勢指派給 Input Action HoloLens 2 上的手勢現在可透過OpenXR外掛程式辨識。

語音命令

KeywordRecognitionSubsystem可以啟用 以允許 MRTK 3 中的語音命令。 如需詳細資訊,請參閱語音輸入

Task MRTK 2 MRTK 3
將語音命令對應至 Input Actions Speech Commands Profile 中的 Input System Profile KeywordRecongitionSubsystem使用您的關鍵字與動作呼叫 CreateOrGetEventForKeyword

控制器組態

Task MRTK 2 MRTK 3
設定控制器按鈕行為 ControllerMappingProfile 資產內的 Input Action 動作對應。
設定控制器視覺效果的預製專案 ControllerMappingProfile 在設定中 XRController 設定。 例如, Model Prefab 中的屬性 ArticulatedHandController.