本日はMRTK調査枠です。
HoloLens 2やOculus Quest 2、LeapMotion、Varjo等のxRデバイスではMRTKを使用することでほぼ共通のコードでアプリを作成することができます。
今回は[HandTracking]で使用されるオブジェクトに関して調べていきます。
〇MRTKのHandTracking
MRTKではカメラやカーソル等のMRTKによって提供される機能は[MixedRealityPlayspace]オブジェクトの子オブジェクトとして生成されます。
[HandTracking]のオブジェクトも同様に[MixedRealityPlayspace]オブジェクトの子オブジェクトとして生成されます。
[HandTracking]の設定自体は[MixedRealityToolkit]オブジェクト、[Input]タブ→[Articulated Hand Tracking]から行えます。
〇HandTrackingオブジェクトの構造
MRTKで生成されるHandTrackingのオブジェクトの構造は主に2種類あります。
〇Hand_MRTK_Rig
画像赤枠の[R_Hand_MRTK_Rig]オブジェクトでは[HandMesh]とメッシュを動かすためのリグで構成されています。
これはPackage/MixedReality Toolkit Faundation/SDK/Features/UX/Prefabs/RiggedHandVisualizerにある[R_Hand_MRTK_Rig.fbx]からInstantiateされています。
[R_Hand_MRTK_Rig.fbx]は2664ポリゴン、手首(R_Wrist)を親として人体構造同様各指のリグが入っています。
また、小指に関しては第一関節の前に[R_WristPadding]というボーンがあり、これがあることで手の複雑な動きを再現することができます。
MRTKではHandTrackingで取得した情報を基にこのRigを動かしてメッシュを合わせています。
〇HandJoint
[HandJoint]はHandMeshとは異なり各HandTrackingの計測点に置かれるオブジェクトを指します。
シーン内では[ThumbMetacarpalJoint Proxy Transform]という名前で扱われます。
唯一[Palm Proxy Transform]のみx,y,zの子オブジェクトを持ち、手自体の方向を取得することができます。
コードでHandJointを取得するには次のように記述します。
今回興味本位でHandMeshに関して調べてみました。
MRTK2.7と以前で一部の名称が変更されていたりなど新しい発見がありました。