ヒューマノイド概要
概要
VRMのヒューマノイドは、主にモーションキャプチャーの Forward kinematics のモーションを受けられることを基準に決めました。
1フレームのモーション(ポーズ)は以下の情報で表される想定です。
- hipsボーンの移動値
- 各ボーンの回転値
ある Gltf Scene (Unity Hierarhcy) がこのデータを受けて同じポーズを再現するには以下の条件必要です。
- Gltf Node (Unity GameObject) とボーン(hips, spine, chest...)の対応が分かっている
- ボーンの親子関係が決まっている
- ポーズを受ける前の姿勢が決まっている => T-Pose
備考
細かく言えば、ボーンの長さが違うと同じポーズになりません。 これを解決する技術を、リターゲットと言いますが VRM では特に指定していません。 例えば、股-膝-足首-踵 の比率が違うと地面に対してすべります。
Unity の HumanoidAvatar を元に決めたのでだいたい同じです。
https://docs.unity3d.com/Manual/AvatarCreationandSetup.html
さらに、プログラムでの扱いを簡単にするために
- すべての Gltf Node (Unity GameObject) の回転を0にしたときに初期ポーズになる
- スケールは変化しない
を追加したものが VRM のヒューマノイドです。
備考
特にスケールは難しい問題で、スケール中心が原点以外、負のスケール、XYZ別々のスケールなどを考慮したプログラム書くのは大変な負担となります。
T-Pose
腕と手の指についても規約があります。
- 手の平は下向き
- 親指は水平でXZ平面(上から見て)45度