入力アニメーションの記録 — MRTK2
MRTK は、頭の動きや手の動きをアニメーション ファイルに記録するシステムを備えています。 記録されたデータは、入力シミュレーション システムを使って再生できます。
入力の記録は、さまざまな状況で役立つツールです。
- 相互作用、操作、ソルバーなどの自動テストを作成する。このようなテストのためにコントローラーと手の動きを作成するのは時間がかかる場合があります。 入力を直接記録すると、プロセスをスピードアップし、実際のデータを得ることができます。
- UX 要素の使い方をアニメーションで教える。 ボタンなどのオブジェクトの操作方法をユーザーに示すことで、学習曲線を滑らかにすることができます。
- 通常の使用中に発生する可能性がある予期しない動作をデバッグする。 記録システムは、最近の入力をバックグラウンドで記録することができる "ローリング バッファー" の概念をサポートしています。 「入力記録サービス」を参照してください。
サービスの記録と再生
入力の記録と再生をそれぞれ行うために、2 つの入力システム サービスが用意されています。
入力記録サービス
InputRecordingService
を使って、メイン カメラ変換とアクティブなハンド コントローラーからデータを受け取り、内部バッファーに格納します。 要求に応じて、保存して後で再生できるように、このデータはバイナリ ファイルにシリアル化されます。
![記録入力アニメーション 記録図](../images/input-simulation/mrtk_inputanimation_recordingdiagram.png?view=mrtkunity-2021-05)
入力の記録を開始するには、StartRecording
関数を呼び出します。
StopRecording
を使って、記録を一時停止します (ただし、それまでに記録されたデータは破棄されないので、これを実行するには必要に応じて DiscardRecordedInput
を使ってください)。
既定では、記録バッファーのサイズは 30 秒に制限されています。 そのため、記録サービスによって大量のデータを蓄積することなくバックグラウンドで録画を継続し、必要に応じて最後の 30 秒を保存できます。 時間間隔は RecordingBufferTimeLimit
プロパティを使って変更できます。また、UseBufferTimeLimit
オプションを使って記録を無制限にすることもできます。
記録バッファーのデータは、SaveInputAnimation 関数を使ってバイナリ ファイルに保存できます。
バイナリ ファイル形式の詳細については、入力アニメーション ファイル形式の仕様に関するページを参照してください。
入力再生サービス
InputPlaybackService
を使って、入力アニメーション データが保存されたバイナリ ファイルを読み込み、InputSimulationService を介してこのデータを適用し、記録された動きを再現することができます。
![再生中の入力アニメーション 再生の図](../images/input-simulation/mrtk_inputanimation_playbackdiagram.png?view=mrtkunity-2021-05)
入力アニメーションの再生を開始するには、LoadInputAnimation 関数を使ってファイルから読み込む必要があります。
アニメーションの再生を制御するには、Play、Pause、Stop のいずれかを呼び出します。
現在のアニメーション時間は LocalTime プロパティを使って直接制御することもできます。
警告
入力アニメーションをループまたはリセットしたり、タイムラインをスクラブして LocalTime
を直接設定したりすると、シーンを操作するときに予期しない結果になることがあります。 入力された動きのみが記録され、オブジェクトの移動、スイッチの切り替えなどのその他の変更はリセットされません。 元に戻せない変更を加えた場合は、必ずシーンを再読み込みしてください。
入力アニメーションを記録および再生するためのエディター ツール
Unity エディターには、入力アニメーションを記録および確認するためのツールが多数用意されています。 これらのツールは、入力シミュレーション ツール ウィンドウでアクセスできます。このウィンドウは、[Mixed Reality Toolkit Utilities Input Simulation]\(ツールキット > ユーティリティ>の入力シミュレーション\) メニューから開くことができます。
Note
入力の記録と再生は、再生モード中にのみ機能します。
入力記録ウィンドウには、次の 2 つのモードがあります。
"記録中": 再生モード中の入力を記録し、アニメーション ファイルに保存します。
記録ボタンをオンにすると、
InputRecordingService
が有効になり、入力が記録されます。 記録ボタンをオフにすると、ファイル保存の選択が表示され、記録された入力アニメーションが選んだ保存先に保存されます。また、このモードでは、バッファー時間の制限を変更することもできます。
"再生": アニメーション ファイルを読み込み、入力シミュレーション システムを介して入力を再現します。
このモードでは、まずアニメーションを読み込む必要があります。 記録モードで入力を記録すると、結果のアニメーションが自動的に読み込まれます。 また、[読み込み] ボタンをクリックして、既存のアニメーション ファイルを選ぶこともできます。
左から右の順に、次の時間コントロール ボタンがあります。
- 再生時間をアニメーションの先頭に "リセット" します。
- アニメーションを時間経過と共に連続して "再生" します。
- 1 時間ステップ分、"先に進めます"。
スライダーを使ってアニメーションのタイムラインをスクラブすることもできます。
警告
入力アニメーションをループまたはリセットしたり、タイムラインをスクラブしたりすると、シーンを操作するときに予期しない結果になることがあります。 入力された動きのみが記録され、オブジェクトの移動、スイッチの切り替えなどのその他の変更はリセットされません。 元に戻せない変更を加えた場合は、必ずシーンを再読み込みしてください。