遂に野望の王国、乳神様の国に到達しました。プルン、プルン。
Genesis の Animation Data の覚え書き
今回 Animation Data の構造を調べてみたのですが、データの格納場所が Genesis 9 の下に 3 系統ありました。
一つは普通に Root Node (Genesis 9 本体) - Hip - Pelvis - 腰、胴体、手足等のボーンのノードツリーで、それぞれのボーンのノードに DzFloatProperty という数値データで回転や移動が格納されてます。
二つ目は Root Node (Genesis 9 本体) がノードのツリーとは別に DzProperty のリスト(集合体)を持ってまして、これらは Pose Control の下に出てきます Arms Front-Back や目、首といった、ボーンをまとめて動かしたりする数値プロパティが格納されています。
そして三つめは Root Node が保持しております DzObject というオブジェクトで、この中にボーンではなくモーフ (DzMorph) で実現されているポーズデータが格納されており、これらは Pose Control の下の Breasts Flatten Left/Right や Breasts Hang Forwad Left/Right 等です。DzMorph の getValueChannel() という関数で数値プロパティにアクセスできます。
1) root DzNode -> child DzNode (Hip) -> child DzNode (Pelvis) -> ・・・
2) root DzNode -[DzPropery (Arms Font-Back), DzProperty (Breasts Side-Side) ・・・]
3) root DzNode - DzObject -[DzMorph (Breasts Flatten Left), DzMorph (Breasts Hang Forward Left) ・・・]
古い Genesis からポーズデータをコンバートする場合、この三つのデータストアにアクセスして、それぞれの数値データを新しい Genesis のプロパティにコピーしていきます。
各数値データの構造は、"Keys" :[[time, value],[time, value]・・・]の形で、各キーフレームの 0 フレームからの時間とその値が格納されており、静止ポーズデータはフレームが一つだけの Animation Data として扱われています。