訓練
從 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 之上提供實用的混合實境互動。 自定義互動專案可以透過繼承或藉由實作互動器介面 ( 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 之間的所有互動,而且相較於舊版焦點提供者,可大幅提升彈性。 |
指標調解器 | 互動模式管理員 | 根據場景內的內容,新的 互動模式管理員 可用來啟用/停用動作專案集。 如需詳細資訊, 請參閱模式管理員檔 。 |
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 的 可以跨不同平臺提供數據,例如 HandsAggregatorSubsystem 和 SpeechSubsystem 。 如需有關子系統方法的概念性閱讀,請參閱子系統架構檔。 |
MRTK v2 詞彙 | XRI 字詞 | 備註 |
---|---|---|
OnFocusEnter/Exit |
FirstHoverEnter LastHoverExit |
First 請注意 和 Last 前置詞。 這些前置詞會包含在事件名稱中,因為任意數目的 Interactors 可以同時暫留互動。 您也可以使用 HoverEnter 和 HoverExit 接聽每個個別暫留進入/結束,雖然它比監視整體暫留狀態更有用。 |
OnPointerDown/Up |
FirstSelectEnter LastSelectExit |
First 請注意 和 Last 前置詞。 這些前置詞會包含在事件名稱中,因為任意數目的 Interactors 可以同時選取互動式(視選取模式而定)。 您也可以使用 和 SelectExit 來接聽每個個別的選取專案進入/結束SelectEnter ,雖然它比監視整體選取狀態還不實用。 |
OnPointerDragged |
N/A | 只要在 interactorsSelecting 選取期間使用 GetAttachTransform 輪詢附加轉換即可。 請記住,根據互動的選取模式,不系結的 Interactors 數目可以選取 [並操作] 互動。 |
OnSourcePoseChanged, OnSourceDetected, OnSourceLost |
N/A | XRI 不會引發這些事件。 它們會透過 XRController 監視其相關聯的 輸入設備來處理。 |
如需 MRTK3 UX 元件的完整檔,請參閱 UX 套件的概觀: UX Core
、 UX Components
和 UX Components (Non-Canvas)
。 MRTK3 的主要變更是強調使用 Unity UI 的 Canvas UX 元件。 也有非畫布 UX 元件的套件。 您可以在這裡找到 Canvas 與非 Canvas UX 之間的比較。
備註
Hand Coach
、 Tooltips
、 Object Collection
、 AppBar
和 Progress Indicator
元件還不存在於 MRTK3 中。 此外, Toolbox
也不會實作 Text Prefabs
優化。 隨著新增額外的 MRTK3 UX 元件,本檔將會更新
MRTK2 | MRTK3 | 備註 |
---|---|---|
Buttons |
Canvas Button Non-Canvas Button |
在 MRTK3 中,Unity UI 型按鈕和以碰撞器為基礎的按鈕會重新裝修為 Canvas 和非畫布按鈕。 內建工具可將 MRTK3 中的按鈕分組,包括 Button Group 和 ToggleCollection 。 您可以在和 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 中取代,而且索引指尖會透過MRTKPokeReticleVisual 、 RingReticle 和 ReticleMagnetism 腳本可視化。 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
設定。
Task | MRTK 2 | MRTK 3 |
---|---|---|
建立 Input Action |
輸入動作配置檔 | 使用資產內的 Input Action 動作對應。 |
Input Action 將系結至Controller |
控制器輸入對應配置檔 | 使用資產設定動作的 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 Rig MonoBehaviours。 例如、 MRTKPokeReticleVisual MRTKLineVisual 與 MRTKRayReticleVisual 。 |
限制哪些圖層可以與其互動 | 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. |
更多資源
文件
-
適用于開發人員的 Mixed Reality Toolkit 3 - 子系統。
-
適用于開發人員的Mixed Reality工具組 3 - 可互動。
-
適用於開發人員的混合實境工具組 3 - 互動器架構。