スポンサーサイト

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

スキンメッシュアニメーションの解説

【リンク】 ◆解説系TOP◆

約1週間ほど、
スキンメッシュアニメーションの参考になりそうなページや本を探してみたのですが、
細かく解説してあるような所は、ほぼ見つかりませんでした。
(なんでなの?)

しかし、個人的にはなんとか理解できたので、解説を書こうと思います。
(間違っている場所があったら指摘してください。)

では早速、解説START!

簡単だ!

※やっつけ仕事。すいません


×××××××××××××××××××
STEP1 概要を把握しよう
×××××××××××××××××××

まず、スキンメッシュアニメーションは、
3Dモデルの内部にボーンと呼ばれるものを配置しておき、
それを動かす事によって、周囲の頂点を動かします。
ボーンにつられて、周辺の頂点も動く感じ)


【参考画像】
ボーン

で、「ボーンって一体何なの?」というと コレは簡単。
ただの頂点2つです。
中心となる点 と、いくら回転したかを示す点の2つで1セット。)

これを便宜上"ボーン"と呼んでいるだけです。
数学的に言うと、頂点A、頂点Bから構成される線分AB。

【参考画像】
ボーン回転


×××××××××××××××××××
STEP2 "ボーン"基準の回転
×××××××××××××××××××

では実際にボーンを基準とした回転をさせて見ましょう。

まず図を描いてみる。
ボーンの根元が(2, 1)先端が(4, 1)
ボーンと一緒に動く頂点が(5, 1)にある時、Z軸中心に90度回転させると
下記のようになる筈です。
(Z軸は書いてませんが、パソコンの奥へ向かって行くような方向の軸です)

ボーン回転7


しかし、単純に90度回転させても、ボーンごと動いてしまってお話になりません。
↓原点中心に90度回転させた図。
ボーン回転6

「じゃあどうすればよいのか?」と言うと、いくつかの手順を踏みます。
端的に書きますと、下記の様になります。
--------------------------------------------------------------
【1】ボーンの根元を原点に合わせるように平行移動させる。
【2】回転などの変換をする。
【3】最初に平行移動した分だけ、また元に戻す。

--------------------------------------------------------------
(【1】、【3】の処理の時、ボーンに影響を受ける頂点も当然一緒に動かします)

今回の場合は、このようになります。
------------------------------------
【1】初期状態。
【2】x軸に-2、Y軸に-1平行移動。
【3】90度回転。
【4】X軸に2、Y軸に1平行移動。

------------------------------------
ボーン回転5

こうすると、なんとボーンを基準に回転した状態になります。
お見事。

で、ボーンの根元を合わせる操作は行列を使います。
そして、この行列の事を
ボーンオフセット行列と呼びます。
(長いので、以下 ボーンオフセット行列 = BOf行列とします。)

で、やり方は説明したので実際に計算してみましょう。
-------【計算の順番】------------------------------------------
頂点 × BOf行列 × 座標変換行列 × 元に戻す行列
--------------------------------------------------------------
「元に戻す行列」だと名前的にアレなので、以下
便宜上逆BOf行列と呼ぶことにします。

↓【計算の図】
変換中

ここで、x = 5、y = 1、z = 0は分かるけど、 Wって何?
と感じる人が居るかもしれませんね。

これは、 数合わせの要素だと思ってください。
行列は縦に4つあるので、頂点側も4つ要素が無いと計算が出来ないのです。
なので、特に気にする必要はありません。変換結果の方も、Wは無視して結構です。

(Wの値によって、平行移動の変換を可能にしています。
         Wを1以外の値にすると、 平行移動の変換が出来なくなります。

で、W以外の値を見ると、(2 4 0)となり、上の図とも一致しますね。
(【1】、【2】、【3】、【4】それぞれの状態の時の 頂点の座標を見比べてみてください)


今回のまとめ
----------------------------------------------------------------------
・スキンメッシュアニメーションは、ボーンを用いる。
・ボーンは、頂点2つで構成。
・原点に移動、回転などの処理、元に戻す、という手順でボーン基準の変換が出来る。
・計算する時は、行列を使っている。

----------------------------------------------------------------------

今回は基本的なことを説明しました。
まだまだ続く予定なので、お楽しみに!(`・ω・´)ノシ
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

No title

すごいわかりやすいです^q^

No title

有り難うございますv-290
お役に立てれば幸いです。

時間が出来れば、
更に順序立てて説明の追加・修正などを行っていきたい と思ってますので、
今後も頑張りたいと思いますv-293
(Xファイルの具体的な読み込み方など)
コメントの投稿
管理者にだけ表示を許可する



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