MRが楽しい

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

HoloLens2でMRTKv2を使って頭と手の動きを記録する

本日は MRTK の技術調査枠です。
HoloLens2でMRTKv2を使って頭と手の動きを記録する手順を記事にします。
f:id:bluebirdofoz:20200521092120j:plain

頭と手の動きを記録する

MRTKv2 では頭と手の動きを記録するための Input recording service が提供されています。
microsoft.github.io
microsoft.github.io

本サービスを利用することで、頭と手の動きをバイナリデータとして出力し、これをエディター上で再生することもできます。
デフォルトでは記録バッファーのサイズは30秒に制限されています。記録の際は注意が必要です。
microsoft.github.io

InputRecordingServiceを試す

実際に InputRecordingService をアプリケーション上で試してみます。
Examples に含まれる ToggleFeaturesPanelExamplesHub.prefab を利用すると簡単です。

アプリケーションの作成とインストール

以下の記事を元に HoloLens2 用プロジェクトを作成します。
今回は、Foundation のパッケージに加えて Examples のパッケージもインポートしておきます。
f:id:bluebirdofoz:20200521092053j:plain

Assets から以下の prefab を参照し、Hierarchy にドラッグしてカメラの前に配置します。
・Assets/MixedRealityToolkit.Examples/Experimental/ExamplesHub/Prefabs/ToggleFeaturesPanelExamplesHub.prefab

Position X:0.0, Y:-0.1, Z:0.3
Rotation Z:45, Y:0, Z:0
Scale    Z:1, Y:1, Z:1

f:id:bluebirdofoz:20200521092133j:plain

追加されたメニューの右端の[Record Input]ボタンが InputRecordingService を実行するためのトリガーです。
f:id:bluebirdofoz:20200521092141j:plain

本ボタンをタップすると、親オブジェクトにアタッチされた InputRecordingCotrols の処理が実行されます。
InputRecordingService の使い方を確認したい場合は、こちらのスクリプトを参照すると良いです。
f:id:bluebirdofoz:20200521092151j:plain

この状態で HoloLens2 向けにプロジェクトをビルドしてインストールします。
UnityプロジェクトのビルドとHoloLensへのインストール手順については以下を参照してください。
bluebirdofoz.hatenablog.com

HoloLens2上での実行確認

HoloLens2 上で動作確認を行います。
アプリが起動すると、以下のようにメニューが表示されるので[Record Input]ボタンをタップします。
f:id:bluebirdofoz:20200521092207j:plain

アイコンが赤色になり、頭と手の動きの記録が開始されます。
記録を停止する際は、再びボタンをタップします。
f:id:bluebirdofoz:20200521092220j:plain

記録データの取得

記録データは以下のディレクトリに出力されます。
・AppData/Local/Packages/(アプリのパッケージ名+ID=XXX_XXX)/LocalState
DevicePortal でディレクトリを参照してデータをダウンロードすることができます。
f:id:bluebirdofoz:20200521092248j:plain

InputRecordingService はデフォルトでは Application.persistentDataPath に記録データを出力します。
bluebirdofoz.hatenablog.com

記録データの再生

記録したデータは MRTK の InputPlaybackService の機能を使ってエディター上で再生することができます。
初めに Unity プロジェクトのシーンを再生します。
f:id:bluebirdofoz:20200521092355j:plain

メニューから MixedRealityToolkit -> Utilities -> InputSimulation を選択します。
InputSimulation ダイアログが開くので、[Playback]ボタンをクリックします。
f:id:bluebirdofoz:20200521092406j:plain

[Playback]パネルが開いたら[Load ...]ボタンをクリックします。
ファイル選択のダイアログが表示されるので、先ほどダウンロードした記録データを指定して開きます。
f:id:bluebirdofoz:20200521092416j:plain

再生ボタンをクリックすると、エディター上で頭と手の動きが再現されます。
f:id:bluebirdofoz:20200521092426j:plain