3D学習帳 1
ワールド座標変換
ある3Dのモデルを3Dのフィールドにフィールドに設置したいとき、モデルの頂点座標をフィールドの座標に変換してやらないといけない。
ここで、モデルの座標をローカル座標といい、フィールドの座標をワールド座標という。
このローカル座標からワールド座標への変換をワールド座標変換と呼ぶ。
ワールド座標変換は、ローカル座標にある頂点を拡大縮小、回転、移動することで実現する。
それぞれの変換には行列を使います。移動行列は3x3では表現できないので4x4の同次座標系を使います。
拡大縮小
3Dのモデルが遠近法以外で大きくなったり小さくなったりすることはあまりないような気がする。
しかし、モデルの縮尺とフィールドの縮尺を合わせるときとかに使うんだろう。
拡大縮小行列は、縮尺をとすると、
となります。
ゼロが多くてキモイですね。
回転
キャラクターがローカル座標で-z方向を向いているとき、ワールド座標変換してやらないとフィールド上でもずっと-z方向を向いてしまいます。
回転行列はx軸回転、y軸回転、z軸回転の3つありそれぞれ, , 、回転角をとすると、
となります。
ワールド変換!
ここまででワールド座標変換の準備ができたのでこれらを組み合わせてワールド変換行列をつくります。
まず回転行列をまとめてとしておきましょう。
回転の順番は重要ですがここではめんどくさいので省略します。
そうするとワールド変換行列は、
となります。
ここで、平行移動を最後に行うことに注意しましょう。回転と拡大縮小は入れ替え可能です、多分。
ワールド変換座標が出来たので実際に頂点座標を変換してみます。
変換前の座標を, , 、変換後の座標を, , とすると、
これでいけます。
は今のところ使わないので無視していいです。
同次座標を使ったことによって生み出された澱、ここでは常にになります。
長いのでいったん終了。初ブログだから気合入っちゃってるのよ、ゆるして。