入力の概要 — MRTK2

MRTK の入力システムでは、次の処理を実行できます。

  • 入力イベントを介して、6 DOF コントローラー、多関節ハンド、音声などのさまざまな入力ソースからの入力を使用する。
  • 選択メニューなどの抽象アクションを定義し、それらをさまざまな入力に関連付ける。
  • コントローラーにアタッチされたポインターを設定し、フォーカス イベントやポインター イベントを介して UI コンポーネントを駆動する。
入力システムMRTK 入力システムの概要

入力は入力データ プロバイダー (デバイス マネージャー) によって生成されます。 各プロバイダーは、特定の入力ソース (Open VR、Windows Mixed Reality (WMR)、Unity ジョイスティック、Windows 音声認識 など) に対応しています。プロバイダーは、Mixed Reality ツールキット コンポーネントの登録済みサービス プロバイダー プロファイルを介してプロジェクトに追加され、対応する入力ソースが利用可能な場合 (たとえば、WMR コントローラーが検出された場合や、ゲームパッドが接続されている場合) に、入力イベントを自動的に生成します。

入力アクションは、入力を生成する特定の入力ソースからアプリケーション ロジックを分離できるようにする、未加工の入力を抽象化したものです。 たとえば、選択アクションを定義して、マウスの左ボタン、ゲームパッドのボタン、6 DOF コントローラーのトリガーにマップすると便利な場合があります。 こうすると、アプリケーション ロジックに選択入力アクション イベントをリッスンさせることができるので、これを生成する可能性のあるさまざまな入力をすべて認識する必要はありません。 入力アクションは、Mixed Reality ツールキット コンポーネントの入力システム プロファイル内にある[Input Actions Profile](入力アクション プロファイル)で定義します。

コントローラーは、入力デバイスが検出されると入力プロバイダーによってが作成され、入力デバイスが喪失または切断されると破棄されます。 たとえば、WMR 入力プロバイダーによって、6 DOF デバイスに対して WMR コントローラーが作成され、多関節ハンドに対して WMR 多関節ハンド コントローラーが作成されます。 コントローラーの入力は、入力システム プロファイル内の [Controller Mapping Profile](コントローラー マッピング プロファイル) を介して入力アクションにマップできます。 コントローラーによって発生した入力イベントには、関連付けられている入力アクション (存在する場合) が含まれます。

コントローラーにはポインターをアタッチして、フォーカスのあるゲーム オブジェクトを判別するためにシーンに対してクエリを実行し、そのオブジェクトでポインター イベントを発生させます。 たとえば、ライン ポインターはコントローラーのポーズを使用してシーンに対してレイキャストを実行し、光線の原点と方向を計算します。 各コントローラーに対して作成されるポインターは、入力システム プロファイルの下の [Pointer Profile](ポインター プロファイル) で設定します。

イベント フロー イベントフロー。

入力イベントは UI コンポーネントで直接処理することができますが、実装がデバイスに依存しなくて済むように、ポインター イベントを使用することをお勧めします。

MRTK には、デバイスに依存せずに入力状態を直接クエリできる便利な方法もいくつか用意されています。 詳細については、「MRTK での入力状態へのアクセス」を参照してください。