MRTK3 の使用を開始すると、MRTK v2 のいくつかの概念が変更、置換、または削除されていることがわかります。 このドキュメントは、MRTK v2 の概念と MRTK3 に対応する概念のギャップを埋めるのに役立ちます。
相互作用
MRTK3 では、Unityの XR Interaction Toolkit (XRI) フレームワークを使用して対話を処理し、入力にはUnity入力システムと OpenXR を使用します。
重要
XRI を初めて使用する開発者の場合は、最初にUnityの XRI アーキテクチャのドキュメントを確認することをお勧めします。 ほとんどの対話機能と入力機能は単に XRI から継承されるため、すべての XRI ドキュメントは MRTK3 にも適用されます。
用語
MRTK v2 term | MRTK3 用語 | 説明 |
---|---|---|
ポインタ | Interactor |
対話機能は 、 Interactables に対して操作を実行します。 一部の (ただし、すべてではない) 対話機能はコントローラーによって駆動され、そこから入力アクションとポーズを受け取ります。 その他の対話機能は、コントローラーとは独立して動作します。 MRTK には、既に提供されている基本的な対話機能の上に便利な Mixed Reality 操作を提供するいくつかのカスタム インターアクトルUnityが付属しています。 カスタム 対話機能は、継承または Interactor インターフェイス ( IXRHoverInteractor 、 IXRSelectInteractor など) を実装することによって構築できます。 詳細については、 Interactor アーキテクチャのドキュメントを参照してください。 |
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler |
対話可能 |
対話可能は 、対話の受信者です。 MRTK には、既に提供されている基本的な Interactables Unityの上に便利な Mixed Reality 操作を提供するいくつかのカスタム Interactable が付属しています。 対話可能なインターフェイスは、継承または対話可能なインターフェイス (IXRHoverInteractable 、 IXRSelectInteractable など) を実装することによって構築できます。 MRTK が XRI 対話可能を拡張する方法の詳細については、 Interactable アーキテクチャのドキュメントを参照してください。 |
コントローラー | コントローラー |
ActionBasedController は、特定のデバイスUnity関連付けられているバインドを表す入力アクションのコレクションです。 入力アクションのコレクションは、 ActionBasedControllers と基になる入力デバイスの間に 1 対 1 の関係がないため、複数のデバイスから派生できます。 ( DeviceBasedController は入力デバイスの 1 対 1 のマッピングですが、使用しません)。多くの対話機能 (特に ControllerBasedInteractor ) は、入力アクションのコントローラーをリッスンします。つまり、XRController の下にあるすべての ControllerBasedInteractor は同じ選択アクションを共有します。 |
テレポート システム | Locomotion システム |
Locomotion システムを使用すると、ユーザーは XR エクスペリエンス中にシーンを移動できます。 MRTK v2のシステムは、テレポートカーソルとポインタ動作の高度なカスタマイズ性を備えた基本的なテレポートとテレポートホットスポットを可能にします。 XRI には、移動のための次の追加機能が用意されています。
|
フォーカス プロバイダー | XR Interaction Manager |
XRInteractionManager は、シーン内の Interactors と Interactables の中間として機能するUnityメカニズムです。 Unity XRInteractionManager は、Interactors と Interactables の間のすべての相互作用を同期および調整し、従来のフォーカス プロバイダーと比較して大幅に柔軟性を高めます。 |
ポインター メディエーター | 操作モード マネージャー | 新しい 対話モード マネージャー は、シーン内のコンテキストに応じて、対話機能のセットを有効または無効にするために使用されます。 詳細については、 モード マネージャーのドキュメント を参照してください。 |
SceneQuerymask | 相互作用レイヤー | XRI 相互作用レイヤーを 使用すると、開発者は、どの Interactables に対してどの Interactor が動作できるかをフィルター処理できます。 これらのレイヤーは、Unity物理レイヤーとは異なります。 |
フォーカス | Hover | Interactor は、Interactable が Interactor の有効なターゲットである場合に、Interactables で ホバー を発行します。 一般に、ホバーは、レイでのターゲット設定、グラブの手の近さ、ユーザーがオブジェクトを見ている場合など、対話機能からの意図を示します。 |
選択/ポケ/グラブ/音声など。 | 選択 | Interactors の問題は、Interactable が有効なターゲットであり、Interactor が選択した場合に、対話可能に対して 選択 します。 ControllerBasedInteractors は一般に、対応するコントローラーの選択入力アクションが発生したときに Select を出力します。 他の対話機能では、対象となる Interactable に対して選択を発行するタイミングを決定するためのより複雑なロジックを使用できます。 MRTK v2 は、別々のイベントとコードパスを使用してさまざまな種類の相互作用を処理しました。つまり、グラブは、個別のシステムによって生成されるレイ クリックやポケとは根本的に異なる相互作用でした。 MRTK3 では、オブジェクトを "選択" するこれらすべての方法が、同じ Select 操作の下で統一されます。 特定の種類の操作に依存する対話ロジックを開発者が構築することを強くお勧めします。代わりに、すべての Select に一般的に応答する一般化可能なコードを記述します。 これにより、対話はすべての入力モダリティで機能し、まだ開発されていない種類の相互作用でも機能します。 このコースを推奨しない理由については、 Interactable アーキテクチャ に関するページを参照してください。 |
該当なし | アクティブ化 | アクティブ化 は、既に選択されているオブジェクトに対して発生できる追加のアクションです。 たとえば、ユーザーがコントローラーのグリップを持つ噴出銃を選択した場合、トリガーはアクティブ化アクションでトリガーを起動します。 |
Data Provider | XRSubsystem + Provider | Unity入力システムと OpenXR がほとんどのクロスプラットフォーム入力タスクを処理するため、ほとんどのデータ プロバイダーは MRTK3 では不要になります。 ただし、Unityではまだカバーされていない一部の外れ値については、HandsAggregatorSubsystem やSpeechSubsystem など、さまざまなプラットフォーム間でデータを提供できるXRSubsystem を提供します。 サブシステム のアプローチに 関する 概念的な読み方については、サブシステム アーキテクチャのドキュメントを参照してください。 |
イベント
MRTK v2 term | XRI 用語 | メモ |
---|---|---|
OnFocusEnter/Exit |
FirstHoverEnter LastHoverExit |
First プレフィックスと Last プレフィックスをメモします。 これらのプレフィックスは、任意の数の Interactor が Interactable に同時にホバーできるため、イベント名に含まれます。 また、 HoverEnter と HoverExit で個々のホバーの入退出を聞くこともできますが、全体的なホバー状態を監視するよりも役に立ちません。 |
OnPointerDown/Up |
FirstSelectEnter LastSelectExit |
First プレフィックスと Last プレフィックスをメモします。 これらのプレフィックスは、任意の数の Interactor で同時に Interactable を選択できるため、イベント名に含まれます (選択モードに応じて)。 また、 SelectEnter と SelectExit を使用して個々の選択の入退出を聞くこともできますが、全体的な選択状態を監視するよりも役に立ちません。 |
OnPointerDragged |
該当なし | 選択中にGetAttachTransform を使用して変換をアタッチinteractorsSelecting ポーリングするだけです。 Interactable の選択モードによっては、無制限の数の Interactor が Interactable を選択 (および操作) できることに注意してください。 |
OnSourcePoseChanged, OnSourceDetected, OnSourceLost |
該当なし | XRI では、これらのイベントは発生しません。 これらは、 XRController によって、関連付けられている 入力デバイスを監視して処理されます。 |
UX コンポーネント
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 が含まれます。 サンプルは、 CanvasUITearsheet と NonCanvasUITearsheet シーンにあります。 |
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 プレハブには、これらのコンポーネントの使用方法の例が含まれています。 |
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 では、GazeInteractor にInteractorDwellManager があり、MRTK XR Rig にFar Rays があり、StatefulInteractable を使用してオブジェクトがドウェルを有効にするかどうかを判断し、ドウェルの間はオブジェクトを選択します。 MRTK3 ドキュメントは現在進行中です。 |
Solvers |
Solvers |
MRTK3 サンプル シーンは現在進行中です。 |
Visual Theming |
Data Binding and Theming |
MRTK3 データ バインディングとテーマ フレームワークは、実行時に動的に設定および更新できるビジュアル要素を簡単に作成できるように設計されています。 まだ Canvas UX と統合されていません。 |
入力構成
入力アクション
MRTK 3 では、入力アクションに新しいUnity入力システム パッケージが使用されます。 ほとんどの設定は、 Input Action
アセットを使用して構成できます。
タスク | MRTK 2 | MRTK 3 |
---|---|---|
を作成する Input Action |
入力アクション プロファイル |
Input Action アセット内でアクション マップを使用します。 |
Input Action を にバインドするController |
コントローラー入力マッピング プロファイル |
Input Action アセットを使用してアクションのバインドを設定します。 |
ポインター
ポインターは MRTK3 の対話機能にアタッチされます。 既定の MRTK XR Rig
では、対話機能は MRTK RightHand Controller
と MRTK LeftHand Controller
の下に配置されます。
タスク | MRTK 2 | MRTK 3 |
---|---|---|
ポインターのビジュアル プレハブを設定する |
Pointer Prefab MRTK 2 ポインター構成プロファイルのプロパティ。 |
monoBehaviours on the MRTK RightHand Controller and MRTK LeftHand Controller in the MRTK XR Rig . たとえば、 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 認識でのみサポートされています)。
タスク | MRTK 2 | MRTK 3 |
---|---|---|
ジェスチャにアクションを割り当てる |
MixedRealityGesturesProfile でジェスチャをInput Action に割り当てます。 |
HoloLens 2のジェスチャが OpenXR プラグインを介して認識されるようになりました。 |
音声コマンド
KeywordRecognitionSubsystem
を有効にすると、MRTK 3 で音声コマンドを許可できます。 詳細については、 Speech Input のドキュメントを参照してください。
タスク | MRTK 2 | MRTK 3 |
---|---|---|
音声コマンドを にマップする Input Actions |
Speech Commands Profile を Input System Profile します。 |
キーワード (keyword)とアクションを使用して、KeywordRecongitionSubsystem でCreateOrGetEventForKeyword を呼び出します。 |
コントローラーの構成
タスク | MRTK 2 | MRTK 3 |
---|---|---|
コントローラー ボタンの動作を構成する | ControllerMappingProfile |
Input Action アセット内のアクション マップ。 |
コントローラーの視覚化用のプレハブを設定する | ControllerMappingProfile |
XRController 設定で構成されています。 たとえば、 の Model Prefab プロパティ ArticulatedHandController. |