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