從 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 之上提供實用的混合實境互動。 您可以透過繼承或實作可互動的介面, (IXRHoverInteractableIXRSelectInteractable 等等來建置可互動) 。 如需 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 機制,可作為場景中InteractorsInteractables之間的媒介。 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 可在不同平臺提供資料,例如 和 HandsAggregatorSubsystemSpeechSubsystem 。 如需子系統方法的概念性閱讀,請參閱 子系統架構檔

事件

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