夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLens 2でRecordServiceを使用する その①

本日はMRTK調査枠です。

MRTKでは[Input Recording Service ]と呼ばれる機能が実装されています。

[Input Recording Service ]はユーザーの動きを記録・保存する機能で[Input Simulation Service ]を用いてUnityエディタ内で再生することができます。

今回はこれを勉強しながらアプリ内でユーザーの動きを録画してみます。

〇Input Simulation Service

 [Input Simulation Service]はMRTKで提供されている『Unityエディタ上で再現できない可能性がある実機上の動作などをUnity上でエミュレートするサービス』です。

具体的には次のような例を想定しています。

・デバイスのヘッドトラッキング(=ユーザーの頭の動き)

・HoloLensハンドジェスチャー

・HoloLens 2の多関節ハンドトラッキング

・HoloLens 2のアイトラッキング

VRバイスのコントローラー

 上記の例はUnityエディタ上と実機での動作が異なります。

 HoloLens 2のHandTrackingを例にしていくとUnityエディタ上では以前の記事のように手のモデルが用意されており、Rigが入っています。

redhologerbera.hatenablog.com

 しかしHoloLens 2実機では手のモデルは動的にMeshが張られるためRigが存在しません。

 このような場合に実機での動きなどをUnityエディタ上で再現する際に[Input Simulation Service]が使用されます。

〇Input Recording Service

[Input Recording Service]は冒頭で紹介した通りデバイス実機(エディタ上での動きも可能)でのユーザのインプットをアニメーションファイルとして保存する機能です。

f:id:Holomoto-Sumire:20220101210201p:plain

 UXを教えるためのアニメーションの作成やプロトタイプの作成などにおいて役立つツールです。

〇InputRecordingService

[InputRecordingService]はユーザーの位置(=デバイスの位置)やコントローラー、HandTrackingデータを受け取り、内部バッファに格納します。 このデータはバイナリファイルにシリアライズされて保存され、後で再生されます。

[StartRecording()]を呼び出すことでこれは開始されます。

[MRTKExample]として提供されている[HandInteractionExamples]では[RevordService]を使用した例が実装されています。

f:id:Holomoto-Sumire:20220101211104j:plain

このシーンでは[ToggleInputRecording]オブジェクトとして記録を行えるボタンがありあます。

このボタンを押すことで[InputRecordingControls]の記録を行う関数が実行されます。

f:id:Holomoto-Sumire:20220101211318j:plain

[InputRecordingControls]に関しては後日読み解いていきます。

〇Input playback service

[InputPlaybackService]は、入力されたアニメーションデータのバイナリファイルを読み込み、[InputSimulationService]を通じてそのデータを適用し、記録された動きを再現します。

f:id:Holomoto-Sumire:20220101211519p:plain

実機での動作は明日以降見ていきます。

〇ドキュメント

docs.microsoft.com