夜風のMixedReality

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

MRTKのHandMeshに関して調べる

本日はMRTK調査枠です。

HoloLens 2やOculus Quest 2、LeapMotion、Varjo等のxRデバイスではMRTKを使用することでほぼ共通のコードでアプリを作成することができます。

今回は[HandTracking]で使用されるオブジェクトに関して調べていきます。

〇MRTKのHandTracking

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

MRTKではカメラやカーソル等のMRTKによって提供される機能は[MixedRealityPlayspace]オブジェクトの子オブジェクトとして生成されます。

[HandTracking]のオブジェクトも同様に[MixedRealityPlayspace]オブジェクトの子オブジェクトとして生成されます。

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

[HandTracking]の設定自体は[MixedRealityToolkit]オブジェクト、[Input]タブ→[Articulated Hand Tracking]から行えます。

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

〇HandTrackingオブジェクトの構造

MRTKで生成されるHandTrackingのオブジェクトの構造は主に2種類あります。

〇Hand_MRTK_Rig

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

画像赤枠の[R_Hand_MRTK_Rig]オブジェクトでは[HandMesh]とメッシュを動かすためのリグで構成されています。 

これはPackage/MixedReality Toolkit Faundation/SDK/Features/UX/Prefabs/RiggedHandVisualizerにある[R_Hand_MRTK_Rig.fbx]からInstantiateされています。

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

[R_Hand_MRTK_Rig.fbx]は2664ポリゴン、手首(R_Wrist)を親として人体構造同様各指のリグが入っています。

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

また、小指に関しては第一関節の前に[R_WristPadding]というボーンがあり、これがあることで手の複雑な動きを再現することができます。

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

MRTKではHandTrackingで取得した情報を基にこのRigを動かしてメッシュを合わせています。

〇HandJoint

[HandJoint]はHandMeshとは異なり各HandTrackingの計測点に置かれるオブジェクトを指します。

シーン内では[ThumbMetacarpalJoint Proxy Transform]という名前で扱われます。

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

唯一[Palm Proxy Transform]のみx,y,zの子オブジェクトを持ち、手自体の方向を取得することができます。

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

コードでHandJointを取得するには次のように記述します。

redhologerbera.hatenablog.com

今回興味本位でHandMeshに関して調べてみました。

MRTK2.7と以前で一部の名称が変更されていたりなど新しい発見がありました。