|
-------ワールド座標系・変換------- 3Dの世界の絶対座標を司る。 物体を平行移動やグルグルさせるときに使うピョン。 -------ローカル座標系------- 物体独自に持つ座標系。 モデリング時に使用。 物体の頂点座標はこの座標系。 例として(10,10,10)のローカル座標系の頂点を含む物体を ワールド座標系の(0,5,0)に置いたとすると、 頂点のワールド座標は(10,15,10)となる。 -------カメラ座標系------- カメラから見た座標系。 カメラが左に動けば、世界は右に移動する。 「世界の中心はオレ様だ!」という座標 -------スクリ−ン座標系------- 最終的にディスプレイに表示するときの座標系。 透視変換が必要。 2次元。 -------同次座標------- 三次元の座標に一次元増やした座標。 (x, y, z, w)のように表記される。 何で一次元増やすのかと言うと、この方が行列の計算に都合が良いため。 同次座標を元の三次元座標に戻すには、x,y,zをwで割ってやる必要がある。 例としては、(1,2,3)と(2,4,6,2)のような対応。 -------透視変換------- 近くの物体は大きく、遠くの物体は小さくする変換。 気になるあの子の服が透けて見えるわけじゃないです。 要するに遠近法をコンピュータにやらせるためにはどうしたらいいか? ってことです。 具体的には、 ![]() x'=d×x÷z y'=d×y÷z (dは視点からスクリーンまでの距離) 簡単ですね。 これで遠い物体ほど、Z値に反比例して高さと幅が半分になります。 これをコンピュータが扱い易いように、行列に直します。 |d 0 0 0| |0 d 0 0| |0 0 0 1| |0 0 0 0| うぉう、シンプル! (スクリーンは2次元なので、とりあえずZ'は0としておく) 何故こうなるのかは、実際に|x,y,z,w|に、この行列をかけてみると、 (d×x, d×y, 0, z) となり、これを同次座標から三次元に戻してやると (d×x÷z, d×y÷z, 0) これはさっきの式と全く同じですね。 ちなみに、この補正をしないことを平行投影って言うみたいです。 |