2013年2月23日土曜日

3Dレンダリングパイプライン 2

ジオメトリ演算部で行う処理はアフィン変換という行列演算で以下のような演算式になる。
注. 以降では、さも、知った風に書いているが、書籍等を学習して自分なり解釈したことを書いているのであって、間違っていたり、適当でなかったりする可能性があります。


[x,y,z,1]^t が元の頂点座標、 [x',y',z',1]^t が変換後の頂点座標、左端の4x4の行列が変換行列である。 座標変換には、平行移動(モデルのグローバル座標への配置という表現の方が自分としてはしっくりくる。)や、スケーリングや回転等がある。

また、任意軸のまわりの回転は以下のようになる。

複数の変換を同時に行う場合は、各々の変換行列を掛け合わせて一つの行列にする。この時、変換順序に合わせて掛け算を行う必要がある。(例えば、平行移動してからの回転と、回転してからの平行移動は等価では無い) ただし、これは変換行列の値を決定するための処理であって、座標変換演算、つまり、ジオメトリパイプラインで行う演算は冒頭の演算で良い筈だ。
しかしながら、この変換行列の値決定のための乗算をソフトウェアで行うと時間が掛かる可能性もあるので、ハードウェアによる外積演算機能も実装したほうがいいかも知れない。

0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...