本日はMRTK3枠です。
HoloLens2ではHandTrackingで取得した手にメッシュを貼って可視化することができます。
MRTKv2ではシーン上のMRTKProfileからHandTrackingのメッシュを可視化することができました。
しかしMRTK3ではどのようにするか不明であったところ先日開催されたTokyoHoloLens Meetup Vol.33で関西で活躍されているHoloRangerの先輩である宮浦さんからヒントを教えていただきました。
〇MRTK3でのHandMeshのドキュメント
MicrosoftによるHandTrackingのドキュメントは以下になります。
HoloLensでは片手25点のHandTrackingJointを検出できます。
Unityでは入力系のデータはUnity Input Systemを介することが一般的です。
しかしHandJointデータはUnity Input Systemでネイティブに処理されておらずMRTKのSubSystemで処理されています。
SubSystemはMRTK3で導入された概念で、デバイス依存の入力情報を処理する概念です。
このデバイス依存の入力情報とは音声入力やHandTrackingを指します。
これらのモジュールはXRMeshSubsystemやXRInputSubsystemと並んでUnity実行時に初期化されロードされています。
MRTK3のSubsystemはUnityのPojectSettingsからMRTK3のタブ内で確認できます。
〇MRTKv2との違い
MRTKv2では冒頭で記述した通りシーン内に配置したMixedRealityToolkitコンポーネントに集約されていました。
しかし前の章で述べた通りMRTK3の場合はProjectSettingsに存在し、シーンに依存しない形に変更されています。
SubSystemはあくまでデバイスから提供される情報を処理しているのみで、今回行おうとしているHandMeshなどの表示などシーン内で何かしらの処理を加えるためにはシーンにそれらを行うコンポーネントを使用する必要があります。
〇SubSystemの作成及びカスタマイズ
MRTK3を導入している場合プロジェクトウィンドウで右クリックすることでCreate→MRTK→SubsystemからどくじのSubsystemを作成できます。
23年記事公開本日現在ではMRTK Synthesis Hands ConfigとMRTK Hands Aggregator Configが作成可能です。
MRTK Synthesis Hands Configはいくつかの設定項目があります。
・Synthesize when device present
デバイスが存在する場合でもSubsystemを使用するかというパラメータです。
有効な場合実機でもSynthetic Hands Configが有効になります。
・Pose Offset
手のローカル座標のオフセットです。
Hans Position/Rotation/Select
右手、左手、それぞれの位置、回転、選択についてそれぞれのアクションをInput Action Referenceとして設定できます。
このあたりがHandMeshに関係ありそうです。
本日はドキュメントを見ていきました。
MRTK3のドキュメントは以前少ないのでしっかり理解していきたいです。