Away3D 4.0.7 でボーンの座標を取得してみる

出力したスキンアニメーションモデルのボーン座標が正しいか確認するために、
ボーン座標を求めてみました。


“Away3D 4.0.7″ にて読み込んだモデルのボーンは、”SkeletonJoint” となって
“Skeleton” 内に格納されています。
 
ただ “SkeletonJoint” には、”inverseBindPose” として初期行列の逆行列しか
格納されていません。では、アニメーションした行列はどこにあるか?
 
それは、 “SkeletonAnimator” 内にありました。
“SkeletonAnimator” はアニメーションを管理するクラスで、ここでアニメーションの
再生つまりボーン行列の更新が行われています。
 
“SkeletonAnimator” を覗いてみると、”globalMatrices” が見つかります。
ここに全てのボーンのアニメーション変換後の行列が直列化して格納されるようです。
更に中の数値を見てみると、ボーンの初期行列に対しての相対行列の値が、
4×3の転置した形で格納されていました。
 
なので、”globalMatrices” から必要な分のデータを取り出し、”inverseBindPose” の
逆行列を掛けてあげれば、アニメーション変換後の行列が取得できます。
 
では実際にコードにおこしてみると、

これでとりあえず、行列は取得できるので後は確認用のプリミティブ当に行列を流し込めば
視覚的にも確認できます。
 
ここまでやっておいて、実は一発で変換後の行列が取得できたりして。。。
見つけたら誰か教えて><

ActionScript Flash Program Posted by Tomoya Kanehira @ 18:49

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です