MRが楽しい

MRやVRについて学習したことを書き残す

MRTK v2のドキュメントを少しずつ読み解く 入力アクション

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。

MRTKv2のGuidesドキュメント

以下のドキュメントを読み進めていきます。
microsoft.github.io

以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io

本記事では以下のページを読み進めます。
microsoft.github.io
f:id:bluebirdofoz:20200214060454j:plain

入力アクション

入力アクションは特定の入力ソースからの入力を抽象化したものです。
入力を生成するデバイスからアプリケーションロジックを分離するのに役立ちます。

例えば、選択アクションを定義して以下の入力にマッピングすると便利です。
・マウスの左ボタン
ゲームパッドのボタン
・6DOFコントローラーのトリガー

その後、アプリケーションロジックは入力アクションイベントをリッスンすることができます。
入力アクションイベントを生成する様々な入力をすべて意識する必要はありません。

入力アクションを作成する

入力アクションは Mixed Reality Toolkit コンポーネントの Input System プロファイル内の Input Action プロファイルで構成されます。
f:id:bluebirdofoz:20200214060521j:plain

アクションの名前と入力タイプ(Axis Constraint)を指定して、マッピングできます。
f:id:bluebirdofoz:20200214060534j:plain

以下は入力タイプ(Axis Constraint)で最も一般的に使用される値です。

Axis Constraint説明
Digital ゲームパッドまたはマウスのバイナリボタンのようなオン/オフの入力。
Single Axis ゲームパッドのアナログトリガーのような単軸のアナログ入力。
Dual Axis サムスティックのような2軸のアナログ入力。
Six Dof 6DOFコントローラーで生成されるような平行移動と回転を伴う3Dの姿勢入力。

値の完全なリストは以下にあります。
microsoft.github.io

入力をアクションにマッピングする

入力とアクションのマッピング方法は、入力ソースのタイプによって異なります。

コントローラー入力

Input System プロファイル内の Controller Input Mapping プロファイルを開きます。
ここにはサポートしている全てのコントローラーのリストがあります。
f:id:bluebirdofoz:20200214060548j:plain

構成したいコントローラーを選択すると、全てのコントローラー入力を含むダイアログウィンドウが表示されます。
ここでそれぞれのアクションを設定できます。
f:id:bluebirdofoz:20200214060601j:plain

音声入力

Input System プロファイル内の Speech Command プロファイルを開きます。
ここには現在定義されている音声コマンドのリストがあります。
それら音声コマンドの1つをアクションにマッピングするには、[Action]のドロップダウンを開いて選択します。
f:id:bluebirdofoz:20200214060615j:plain

ジェスチャー入力

Input Sytem プロファイルの下のジェスチャプロファイルを開きます。
ここには定義された全てのジェスチャが含まれています。
[Action]のドロップダウンを開いて選択することにより、それぞれのジェスチャーをアクションにマッピングできます。
f:id:bluebirdofoz:20200214060636j:plain

入力アクションの処理

入力アクションを処理する最も簡単な方法は InputActionHandler スクリプトを使用することです。
これにより、UnityEvent を使用して、アクションの開始および終了イベントを受け取り、実行するアクションを定義できます。
f:id:bluebirdofoz:20200214060649j:plain

詳細に制御したい場合 IMixedRealityInputActionHandler で、スクリプトインターフェイスを直接実装できます。
ハンドラーインターフェイスを介したイベント処理の詳細については、「入力イベント」セクションを参照してください。
microsoft.github.io

警告

現在、このセクションで説明する方法を使用して処理できるのは Digital タイプの入力タイプのみです。
他の入力タイプの場合、代わりに対応する入力のイベントを直接処理する必要があります。

例えば、コントローラー入力にマッピングされた6DOFアクションを処理するには IMixedRealityGestureHandler を使用する必要があります。

Example パッケージをインポートして MixedRealityToolkit.Examples/Demos/Input/Scenes/InputActi を参照してください。
f:id:bluebirdofoz:20200214060716j:plain

作成したアクションをコントローラー/音声/ジェスチャー入力にマッピングし、コマンドを使用してオブジェクトを回転させる方法を示します。
f:id:bluebirdofoz:20200214060727j:plain