スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アニメーション実装の仕組み。

今日はアニメーションに使われている行列まわりの知識を載せてみる。
難解なようで結構あっさりしている。

基礎知識①
ボーンは必ずボーン空間のZ軸に沿っている。

基礎知識②
一般的にフレームと呼ばれるものは以下を所持している。

・三角ポリゴンの集合体 = メッシュ
・子情報
・兄弟情報
・ボーン行列(フレーム行列、TransformationMatrix)= 親空間内に子(空間)を配置する行列(4x4Matrix)




ボーン行列は相対値であるためローカル変換座標を得るにはすべての親の情報が必要である。
具体的には
ボーン変換行列をローカル変換行列にするには
ローカル(孫→親) = 孫*子*親
と駆け上る必要がある(移動は加算だが行列は掛け算)
言い換えると
ローカル座標変換行列 = ボーン行列*それまでの親のボーン行列を掛けたもの


もう一つ必要な概念としてオフセット行列というものがある。
ボーンオフセット行列(inverseBindPoseMatrix) 
言い換えると= ローカル座標上にある頂点をボーン空間の座標に変換する行列
言い換えると= ボーン空間の視点で頂点を見せてくれる行列
言い換えると= 初期姿勢行列の逆行列で求まる



では実際の挙動を見てみよう。

ある点Pを動かす行列(P*合成行列)を求めるにはまずその点が同調するボーンの目線に変える
P = P * ボーンオフセット行列

ボーン目線(ボーンの空間)なのでそのまま変換行列を適用してやればよいので
P = P * ボーンオフセット行列 * 変換行列

もとのローカル目線になるまで戻す
P = P * ボーンオフセット行列 * 変換行列 * (親ボーン行列*親の親ボーン行列*・・・)

で求まることになる。

ボーン空間で見ていた目線をワールド座標目線まで戻す行列(親ボーン行列*親の親ボーン行列*・・・)ワールド変換行列と呼ぶ



まとめると

合成行列 = ボーンオフセット行列 * 自身のローカル姿勢 * ワールド変換行列

ボーンオフセット行列初期姿勢の逆行列
ワールド変換行列親の姿勢を再帰などをして求める



分かりやすく書きたかったのに微妙に分かりにくい。。
ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。