入力シミュレーション サービス — MRTK2
MRTK の入力シミュレーションを使用すると、デバイスにビルドしてデプロイすることなく、Unity エディターでさまざまな種類の対話式操作をテストできます。 これにより、設計および開発プロセスで複数のアイデアをすばやく繰り返すことができます。 キーボードとマウスの組み合わせを使用して、シミュレートされた入力を制御します。
入力シミュレーション サービスでは、Unity エディターで使用できない可能性があるデバイスやプラットフォームの動作をエミュレートします。 たとえば、次のようになります。
- HoloLens または VR デバイスのヘッド トラッキング
- HoloLens のハンド ジェスチャ
- HoloLens 2 の多関節ハンド トラッキング
- HoloLens 2 の視線追跡
- VR デバイス コントローラー
警告
これは、Unity の [XR Holographic Emulation](XR ホログラフィック エミュレーション) > [Emulation Mode](エミュレーション モード) = [Simulate in Editor](エディター内でシミュレート) を使用している場合は機能しません。 MRTK の入力シミュレーションから Unity のエディター内シミュレーションに制御が移ります。 MRTK の入力シミュレーション サービスを使用するには、[XR Holographic Emulation](XR ホログラフィック エミュレーション) の [Emulation Mode](エミュレーション モード) を [None](なし) に設定する必要があります。
MRTK の入力シミュレーションの使用方法
MRTK に付属するプロファイルでは、入力シミュレーションが既定で有効になっています。 [Play](再生) ボタンをクリックするだけで、入力シミュレーションがサポートされている状態でシーンを実行できます。
- カメラを動かすには、W、A、S、D、Q、E キーを押します。
- 周囲を見回すには、マウスの右ボタンを押したまま、マウスを動かします。
- シミュレートされた手を表示するには、Space キー (右手) または左 Shift キー (左手) を押します
- シミュレートされた手をビュー内に保持するには、T キーまたは Y キーを押します
- シミュレートされた手を回転するには、Ctrl キーを押しながらマウスを移動します
エディター内入力シミュレーションのチート シート
HandInteractionExamples シーンで左 Ctrl + H キーを押すと、入力シミュレーション コントロールと共にチート シートが表示されます。
入力シミュレーション サービスの有効化
入力システム データ プロバイダーの構成で、入力シミュレーション サービスを次のように構成できます。
- [Type](種類) には、Microsoft.MixedReality.Toolkit.Input > InputSimulationService を指定する必要があります。
- このサービスではキーボードとマウス入力を使用するため、[Supported Platform(s)](サポートされるプラットフォーム) には、既定ですべての "エディター" プラットフォームが含まれます。
Note
[Supported Platform(s)](サポートされるプラットフォーム) プロパティを変更して目的のターゲットを含めることで、スタンドアロンなどの他のプラットフォーム エンドポイントで入力シミュレーション サービスを使用できます。
カメラ コントロール
入力シミュレーション サービスでは、頭の動きをエミュレートできます。
カメラの回転
- ビューポート エディター ウィンドウにマウス ポインターを移動します。 "ボタンを押しても動作しない場合は、ウィンドウをクリックして入力フォーカスを移動することが必要な場合があります。"
- Mouse Look Button(マウス視点移動ボタン) (既定: マウスの右ボタン) を押したままにします。
- ビューポート ウィンドウ内でマウスを動かしてカメラを回転させます。
- スクロール ホイールを使用してカメラを回転させ、ビューの方向を変えます。
カメラの回転速度は、入力シミュレーション プロファイルの [Mouse Look Speed](マウス視点移動速度) 設定を変更することで構成できます。
または、[Look Horizontal](視点を水平方向に移動)/[Look Vertical](視点を垂直方向に移動) 軸を使用して、カメラを回転させることもできます (既定: ゲーム コントローラーの右サムスティック)。
カメラを動かす
カメラを移動するには、[Move Horizontal](水平方向に移動)/[Move Vertical](垂直方向に移動) 軸を使用します (既定: W、A、S、D キーまたはゲーム コントローラーの左サムスティック)。
カメラの位置と回転角度は、ツール ウィンドウで明示的に設定することもできます。 [Reset](リセット) ボタンを使用して、カメラを既定の状態にリセットできます。
コントローラー シミュレーション
入力シミュレーションでは、エミュレートされたコントローラー デバイス (モーション コントローラーとハンド) がサポートされています。 これらの仮想コントローラーでは、ボタンやグラブ可能なオブジェクトなど、通常のコントローラーをサポートする任意のオブジェクトを操作できます。
コントローラー シミュレーション モード
入力シミュレーション ツール ウィンドウの [Default Controller Simulation Mode](既定のコントローラー シミュレーション モード) 設定では、3 種類の入力モデルを切り替えます。 この既定のモードは、入力シミュレーション プロファイルで設定することもできます。
"Articulated Hands(多関節ハンド)": 関節の位置データを使用して、完全な多関節ハンド デバイスをシミュレートします。
HoloLens 2 の対話式操作モデルをエミュレートします。
このモードでは、手の正確な位置に基づく対話式操作またはタッチを使用する対話式操作をシミュレートできます。
"Hand Gestures(ハンド ジェスチャ)": エアタップや基本的なジェスチャを使用して、簡略化されたハンド モデルをシミュレートします。
HoloLens の対話式操作モデルをエミュレートします。
フォーカスは、視線ポインターを使用して制御します。 "エアタップ" ジェスチャを使用してボタンを操作します。
"Motion Controller(モーション コントローラー)": VR ヘッドセットで使用されるモーション コントローラーをシミュレートします。これは多関節ハンドの遠隔対話式操作と同様に動作します。
VR ヘッドセットとコントローラーの対話式操作モデルをエミュレートします。
トリガー、グラブ、メニューの各キーは、キーボードとマウス入力によってシミュレートされます。
コントローラーの動きのシミュレーション
左/右コントローラー操作キー (既定: 左コントローラーは "左 Shift" キー、右コントローラーは Space キー) を押し続けることで、それぞれのコントローラーを制御できます。 操作キーが押されている間、コントローラーがビューポートに表示されます。 操作キーを離すと、短い Controller Hide Timeout(コントローラー非表示タイムアウト) 後にコントローラーは表示されなくなります。
入力シミュレーション ツール ウィンドウ内で、または左/右コントローラー トグル キー (既定: 左が T、右が Y) を押して、コントローラーをオンにし、カメラを基準とした位置に固定できます。 トグル キーをもう一度押すと、コントローラーが再び非表示になります。 コントローラーを操作するには、左/右コントローラー操作キーを押し続ける必要があります。 左/右コントローラー操作キーをダブルタップして、コントローラーのオン/オフを切り替えることもできます。
マウスの動きによって、ビュー平面内でコントローラーを動かすことができます。 コントローラーは、マウス ホイールを使ってカメラから遠ざけたり、カメラに近づけたりすることができます。
マウスを使ってコントローラーを回転させるには、左または右コントローラー操作キー ("左 Shift" キーまたは Space キー) とコントローラー回転ボタン (既定: "左 Ctrl" ボタン) の両方を押しながら、マウスを動かしてコントローラーを回転させます。 コントローラーの回転速度は、入力シミュレーション プロファイルの [Mouse Controller Rotation Speed](マウスのコントローラー回転速度) 設定を変更することで構成できます。
手のすべての配置 (既定の状態への手のリセットを含む) は、入力シミュレーション ツール ウィンドウで変更することもできます。
その他のプロファイル設定
- [Controller Depth Multiplier](コントローラーの奥行きの乗数) では、マウス スクロール ホイールの奥行き方向の動きの感度を制御します。 数値を大きくすると、コントローラーのズームが高速になります。
- [Default Controller Distance](コントローラーの既定の距離) は、カメラからのコントローラーの初期距離です。 [Reset](リセット) ボタンをクリックした場合も、コントローラーはこの距離に配置されます。
- [Controller Jitter Amount](コントローラーのジッター量) では、コントローラーにランダムな動きを追加します。 この機能を使用して、デバイスでの不正確なコントローラーの追跡をシミュレートし、ノイズの多い入力で対話式操作が適切に機能することを確認できます。
手のジェスチャ
ピンチ、グラブ、ポーク (指先でつつく) などのハンド ジェスチャをシミュレートすることもできます。
左または右コントローラー操作キー ("左 Shift" キーまたは Space キー) を使用して、ハンド コントロールを有効にします。
操作中は、マウス ボタンを押し続けてハンド ジェスチャを実行します。
"Left/Middle/Right Mouse Hand Gesture\(左/中央/右マウス ハンド ジェスチャ)" 設定を使用して、各マウス ボタンをマップし、手の形を異なるジェスチャに変換できます。 [Default Hand Gesture](既定のハンド ジェスチャ) は、どのボタンも押されていないときの手の形です。
Note
"ピンチ" ジェスチャは、この時点で "選択" アクションを実行する唯一のジェスチャです。
片手での操作
- 左または右コントローラー操作キー ("左 Shift" キーまたは Space キー) を押し続けます。
- オブジェクトをポイントします。
- マウス ボタンを押し続けてピンチします。
- マウスを使ってオブジェクトを動かします。
- マウス ボタンを離して対話式操作を停止します。
両手での操作
両手で同時にオブジェクトを操作する場合は、永続ハンド モードをお勧めします。
- トグル キー (T/Y) を押して両手をオンに切り替えます。
- 片手ずつ操作します。
- Space キーを押しながら右手を操作します。
- オブジェクトをつかむ場所に手を移動します。
- マウスの左ボタンを押して、"ピンチ" ジェスチャをアクティブにします。
- Space キーを離して右手の操作を停止します。 この手は操作されなくなるため、その場に固定され、"ピンチ" ジェスチャにロックされます。
- もう一方の手でこのプロセスを繰り返して、別のスポットで同じオブジェクトをつかみます。
- 同じオブジェクトを両手でつかんでいる状態になったら、どちらかの手を動かして両手での操作を実行できます。
GGV (視線入力、ジェスチャ、音声) 対話式操作
既定では、GGV 対話式操作は、シーンに多関節ハンドが存在しないときにエディター内で有効になります。
- カメラを回転させて、視線カーソルで対話可能なオブジェクトをポイントします (マウスの右ボタン)。
- マウスの左ボタンをクリックし、ボタンを押し続けて対話式操作を行います。
- カメラを再度回転させてオブジェクトを操作します。
入力シミュレーション プロファイル内の [Is Hand Free Input Enabled](ハンド フリー入力を有効にする) オプションを切り替えることで、これを無効にすることができます。
さらに、GGV 対話式操作にシミュレートされた手を使用することもできます。
- 入力シミュレーション プロファイルの [Hand Simulation Mode](ハンド シミュレーション モード) を [Gestures](ジェスチャ) に切り替えて、GGV シミュレーションを有効にします。
- カメラを回転させて、視線カーソルで対話可能なオブジェクトをポイントします (マウスの右ボタン)。
- Space キーを押しながら右手を操作します。
- マウスの左ボタンをクリックし、ボタンを押し続けて対話式操作を行います。
- マウスを使ってオブジェクトを動かします。
- マウス ボタンを離して対話式操作を停止します。
テレポート イベントの発生
入力シミュレーションでテレポート イベントを発生させるには、入力シミュレーション プロファイルの [Hand Gesture Settings](ハンド ジェスチャ設定) を構成します。1 つは Teleport Start(テレポートの開始) ジェスチャを実行し、もう 1 つは Teleport End(テレポートの終了) ジェスチャを実行します。 Teleport Start(テレポートの開始) ジェスチャではテレポート ポインターが表示され、Teleport End(テレポートの終了) ジェスチャではテレポート アクションを完了してユーザーを移動させます。
テレポート完了時の y 位置は、y 軸に沿ったカメラの移動量によって異なります。 エディターでは、これは既定で 0 に設定されているので、Q キーと E キーを使用して適切な高さに調整します。
モーション コントローラーの対話式操作
シミュレートされたモーション コントローラーは、多関節ハンドと同様に操作できます。 対話式操作モデルは多関節ハンドの遠隔対話式操作に似ていますが、トリガー、グラブ、メニューの各キーはそれぞれ "マウスの左ボタン"、G キー、M キーにマップされています。
視線追跡
視線追跡シミュレーションは、入力シミュレーション プロファイルの [Simulate Eye Position](眼球位置をシミュレートする) オプションをオンにすることで有効にすることができます。 これは、GGV またはモーション コントローラー スタイルの対話式操作では使用しないでください ([Default Controller Simulation Mode](既定のコントローラー シミュレーション モード) が [Articulated Hand](多関節ハンド) に設定されていることを確認してください)。
入力シミュレーション ツール ウィンドウ
[Mixed Reality]>[Toolkit](ツールキット)>[Utilities](ユーティリティ)>[Input Simulation](入力シミュレーション) メニューから、入力シミュレーション ツール ウィンドウを有効にします。 このウィンドウでは、再生モード中の入力シミュレーションの状態にアクセスできます。
ビューポートのボタン (オプション)
基本的な手の配置を制御するエディター内ボタンのプレハブは、入力シミュレーション プロファイルの [Indicators Prefab](Indicators プレハブ) で指定できます。 これはオプションのユーティリティであり、入力シミュレーション ツール ウィンドウで同じ機能にアクセスできます。
Note
ビューポートのインジケーターは、現在、Unity UI 操作に干渉する場合があるため、既定で無効になっています。 問題 #6106 を参照してください。 有効にするには、InputSimulationIndicators プレハブを Indicators プレハブに追加します。
手のアイコンは、シミュレートされた手の状態を示しています。
- 手が追跡されていません。 クリックすると手が有効になります。
- 手は追跡されますが、ユーザーによって制御されません。 クリックすると、手が非表示になります。
- 手は追跡され、ユーザーによって制御されます。 クリックすると、手が非表示になります。
- クリックすると、手が既定の位置にリセットされます。