入力シミュレーション サービス (Input Simulation Service)
入力シミュレーション サービスは、Unity Editor 上で使用できない場合があるデバイスやプラットフォームをエミュレートします。例:
- HoloLens または VR デバイスのヘッド トラッキング
- HoloLens のハンド ジェスチャ
- HoloLens 2 の多関節ハンド トラッキング
- HoloLens 2 のアイ トラッキング
- VR デバイスのコントローラー
ユーザーは、従来のキーボードやマウスの組み合わせで実行時に操作をシミュレーションすることができます。このアプローチにより、デバイスにデプロイする前に Unity Editor 上でインタラクションをテストすることができます。
Warning
これは、Unity の XR Holographic Emulation > Emulation Mode = "Simulate in Editor" では動作しません。Unity Editor 内でのシミュレーションは、MRTK の入力シミュレーションの制御を奪い取ります。MRTK の入力シミュレーション サービスを使用するには、XR Holographic Emulation を、Emulation Mode = "None" にセットする必要があります。
入力シミュレーション サービスの有効化
入力シミュレーションは MRTK に同梱されているプロファイルではデフォルトで有効化されています。
入力シミュレーションは、オプションの Mixed Reality サービス であり、Input System プロファイル のデータ プロバイダーから取り除くこともできます。
Input System データ プロバイダー設定で、入力シミュレーション サービスは以下の設定が可能です。
- Type は、Microsoft.MixedReality.Toolkit.Input > InputSimulationService である必要があります。
- Supported Platform(s) は、デフォルトで全ての Editor プラットフォームを含みます。これは、サービスがキーボードとマウスの入力を使用するためです。
Note
入力シミュレーション サービスは、Supported Platform(s) プロパティを望みのターゲットを含むように変更することでスタンドアローンのような他のプラットフォームで使うこともできます。
入力シミュレーション ツール ウィンドウ
Mixed Reality Toolkit > Utilities > Input Simulation メニューから、入力シミュレーション ツール ウィンドウを有効化します。このウィンドウは、プレイモードの間、入力シミュレーションの状態へのアクセスを提供します。
ビューポート ボタン
基本的なハンドの配置をコントロールするエディタ内ボタンのプレファブは、入力シミュレーションサービスの Indicators Prefab 配下の入力シミュレーション プロファイルで指定することができます。これは、オプションのユーティリティで、同じ機能には 入力シミュレーション ツール ウィンドウ からアクセスすることができます。
Note
ビューポート インジケーターは、現在 Unity UI インタラクションと時々干渉しうるため、デフォルトで無効になっています。イシュー #6106 をご覧ください。有効にするには、InputSimulationIndicators プレハブを Indicators Prefab に追加してください。
ハンドアイコンは、シミュレーションされたハンドの状態を表します。
- ハンドは追跡されていません。クリックでハンドを有効化します。
- ハンドは追跡されています。しかし、ユーザーにコントロールされていません。クリックでハンドを非表示にします。
- ハンドは追跡されており、ユーザーにコントロールされています。クリックでハンドを非表示にします。
- クリックしてハンドをデフォルトの位置にリセットします。
Editor 内の入力シミュレーション チート シート
HandInteractionExamples シーンで 左 Ctrl + H を押すと、入力シミュレーション操作のチート シートが表示されます。
カメラ コントロール
頭の動きは入力シミュレーション サービスでエミュレートされます。
カメラの回転
- Editor ウィンドウにカーソルを合わせます。 ボタンを押しても動作しない場合は、フォーカスを得るためにウィンドウをクリックする必要があります。
- Mouse Look Button (デフォルト: 右マウスボタン)を押したままにします
- マウスをウィンドウ内で動かしてカメラを回転させます
- スクロールホイールを使ってカメラを視線方向を軸として回転させます
カメラの回転速度は、入力シミュレーション プロファイルの Mouse Look Speed 設定を変更して構成できます。
または、カメラを回転させるために Look Horizontal/Look Vertical 軸を使用します(デフォルト:ゲームコントローラの右スティック)
カメラの移動
Move Horizontal/Move Vertical 軸を使用してカメラを移動させます(規定:WASDキーまたはゲームコントローラーの左スティック)
カメラの位置と回転角度は、ツール ウィンドウで明示的にセットすることもできます。Reset ボタンでカメラをデフォルトの状態にリセットすることができます。
コントローラー シミュレーション
入力シミュレーションは、エミュレートされたコントローラー デバイス(モーション コントローラーとハンド)をサポートします。これらのバーチャル コントローラーは、ボタンやグラブ可能オブジェクトなどの、通常のコントローラーをサポートしたオブジェクトとインタラクションできます。
コントローラー シミュレーション モード
入力シミュレーション ツール ウィンドウ 内で、 Default Controller Simulation Mode 設定は、3つの異なる入力モデルの切り替えを行います。 デフォルトのモードは入力シミュレーション プロファイルでもセットできます。
Articulated Hands: 関節の位置のデータを持った多関節ハンドをシミュレートします。
HoloLens 2 のインタラクション モデルをエミュレートします。
このモードでは、ハンドの正確な位置やタッチに基づいたインタラクションをシミュレートできます。
Hand Gestures: Air Tap や基本的なジェスチャを持ったシンプルなハンドをシミュレートします。
HoloLens interaction model をエミュレートします。
フォーカスは視線ポインターを使ってコントロールします。Air Tap ジェスチャでボタンと対話します。
Motion Controller: VR ヘッドセットとともに使われるモーション コントローラーをシミュレートします。これは多関節ハンドのファー インタラクションと同様の動作をします。
VR ヘッドセットとコントローラーのインタラクション モデルをエミュレートします。
トリガー、グラブ、メニュー キーはキーボードとマウス入力でシミュレーションされます。
コントローラーの動作のシミュレーション
Left/Right Controller Manipulation Key (左右のコントローラー操作キー) (デフォルト: 左 Shift が左コントローラー、Space が右コントローラー)を押し続けてそれぞれのコントローラーの制御を得ます。操作キーを押し続けている間、コントローラーが表示されます。操作キーが押されなくなると、短い Controller Hide Timeout の後にハンドは表示されなくなります。
入力シミュレーション ツール ウィンドウ内、または Toggle Left/Right Controller Key (デフォルト: T が左、Y が右)を押すことで、コントローラーを表示してカメラに対する相対位置を固定できます。Toggle キーを再度押すと、再度コントローラーの表示を消すことができます。コントローラーを操作するには、Left/Right Controller Manipulation Key を押し続ける必要があります。Left/Right Controller Manipulation Key をダブル タップすることでもコントローラーのオン オフを切り替えられます。
マウスの動きによって、ビュー平面内でコントローラーが動きます。コントローラーは、マウス ホイール を使ってカメラから遠ざけたり近づけたりすることができます。
マウスを使用してコントローラーを回転させるには、Left / Right Controller Manipulation Key(左 Shift か Space)と Controller Rotate Button (コントローラー回転ボタン)(デフォルト: 左 Ctrl ボタン)の両方を押し、マウスを動かしてコントローラーを回転させます。入力シミュレーション プロファイルの Mouse Controller Rotation Speed 設定を変更することにより、コントローラーの回転速度を設定できます。
全てのハンドの配置(ハンドをデフォルトの状態にリセットすることも含む)は入力シミュレーション ツール ウィンドウでも変更することができます。
追加のプロファイル設定
- Controller Depth Multiplier は、マウス スクロール ホイールによるデプス方向の動きの感度を制御します。数値を大きくすると、コントローラーのズームが速くなります。
- Default Controller Distance は、カメラからのコントローラーの初期距離です。 Reset ボタンのコントローラーをクリックすると、コントローラーもこの距離に配置されます。
- Controller Jitter Amount は、ランダムな動きをコントローラーに追加します。この機能を使用して、デバイス上の不正確なコントローラーの追跡をシミュレートし、ノイズの多い入力でインタラクションが適切に機能することを確認できます。
ハンド ジェスチャ
ピンチ、グラブ、指差しなどのハンド ジェスチャをシミュレートできます。
Left/Right Controller Manipulation Key (左 Shift か Space) を使ってハンドを有効にしてください。
操作の間、マウスのボタンを押し続けることによってハンド ジェスチャを実行することができます。
Left/Middle/Right Mouse Hand Gesture 設定を使用して、それぞれのマウスのボタンを、ハンドの形が異なるジェスチャにマップすることができます。 Default Hand Gesture は、どのボタンも押されていないときのハンドの形です。
Note
Pinch ジェスチャは、この時点では "Select" アクションを発生させる唯一のジェスチャです
片手での操作
- Left/Right Controller Manipulation Key (左 Shift か Space) を押し続けてください
- オブジェクトをポイントしてください
- マウスのボタンを押し続けるとピンチ操作となります
- マウスでオブジェクトを動かしてください
- マウスのボタンを離すと操作が終了します
両手での操作
オブジェクトを両手で操作するには、ハンドを永続化するモードが推奨されます。
- Toggle キー(T/Y)を押すことで両手の表示を切り替えることができます。
- 1回に1つのハンドを操作します。
- Space を押し続けて右ハンドを操作します。
- グラブしたいオブジェクトにハンドを動かします。
- マウスの左クリックを押して Pinch ジェスチャを有効にします。
- Space を放して、右ハンドの操作を止めます。ハンドは操作されなくなるので、その場に Pinch ジェスチャで固定されます。
- 同じ手順をもう片方のハンドで繰り返します。同じオブジェクトの別のポイントをグラブします。
- これで両手で同じオブジェクトをグラブした状態になるので、どちらかのハンドを動かして両手での操作を行います。
GGV (Gaze, Gesture, and Voice) インタラクション
デフォルトで、GGV インタラクションはエディター内でシーンに多関節ハンドがない間有効になります。
- カメラを回転させて、視線カーソルをインタラクション可能なオブジェクトにポイントします(マウスの右クリックを使用)
- マウスの左クリック を押し続けてインタラクションします
- 再度カメラを回転させてオブジェクトを操作します
Input Simulation Profile の中の Is Hand Free Input Enabled オプションを切り替えることで、無効にすることもできます。
さらに、GGV インタラクションでシミュレーション ハンドを使うこともできます。
- Input Simulation Profile で、Hand Simulation Mode を Gestures にすることにより、GGV のシミュレーションを有効にします
- カメラを回転させて、視線カーソルをインタラクション可能なオブジェクトにポイントします(マウスの右クリックを使用)
- Space を押し続けて、右ハンドを操作します
- マウスの左クリック を押し続けてインタラクションします
- マウスを使ってオブジェクトを移動させます
- マウスのクリックを放し、インタラクションを停止します
モーション コントローラーの操作
シミュレーションのモーション コントローラーは、多関節ハンドと同じ方法で操作できます。操作モデルは多関節ハンドのファー インタラクションに似ていますが、トリガー、グラブ、メニュー キーはそれぞれマウスの左クリック, G, M に割り当てられています。
アイ トラッキング
Eye tracking simulation は、Input Simulation Profile の Simulate Eye Position オプションをチェックすることで有効になります。これは GGV やモーション コントローラー操作では使用すべきではありません(ですので、 Default Controller Simulation Mode が Articulated Hand に設定されていることを確認してください)。