現在地メニュー >> Cg >> Cg編03 >> Cg編03::座標系
関連:GLSL編04

座標変換


一般に3次元から2次元のウィンドウ座標に変換され表示されるには、
以下の図のような流れとなる。

Object Space(オブジェクト座標系)


オブジェクト座標系は、描画物基準の座標系。
例えばティーポットがあったら、その中心に原点があるような座標系。

物体基準なので、物体毎に座標系があるということになる。

※この座標系は「Model Space」ともよばれる。

World Space(ワールド座標系)


ワールド座標系は、空間全体の座標系。
どこが「上」かとか、3次元空間における物体の位置がわかる座標系。

例えば、物体をオブジェクト座標系からワールド座標系に変換すると、
 物体Aはワールド座標系の原点から(1,2,3)だけ平行移動した位置に物体が配置され,
 物体Bはワールド座標系の原点から(-2,7,0)だけ平行移動した位置に物体が配置される、
といった感じ。

Eye Space(視点座標系)


視点座標系は、視点の位置が原点となる座標系。
つまり、この座標系に変換するというは、
物体が平行移動などの処理をしているということである。

※「gluLookAt関数」などで視点の位置を決めていると、
その位置に視点があるような気がするが、実はその分だけ物体が動いている。

※ここの座標系は「View Space」とも呼ばれる



▲この図が示すように、視点座標系では視点位置が原点にある。
さらに「-Z方向を向いている」という事に注意。

◆Modelview Matrix


「Object Space」から「Eye Space」へ変換する時は、
「モデリング変換」と「ビューイング変換」の2回の変換が行われている。

この変換はそれぞれ4×4の行列を演算する事になるが、
一般にこれらはまとめてしまって、「ModelView Matrix(モデルビュー行列)
を使用している。

Clip Space(クリップ座標系)


クリップ空間は、いわゆる表示範囲のこと。

◆Projection Matrix


「Eye Space」から「Clip Space」への変換は投影変換とよばれるもので、
4×4の行列を演算することで変換できる。
この時に行列が「Projection Matrix(プロジェクション行列)」よばれる。

※なおクリップ座標系のルールはOpenGLとDirect3Dでは異なるので注意。
zの範囲が異なる。

Normalized Device Space(正規デバイス座標系)


クリップ座標系は(x,y,z,w)の同次座標系。
この要素を「w」で割った結果の座標系が「正規デバイス座標系」


ここまでの処理で、(-1, -1, -1)〜(1, 1, 1)の範囲に座標データが収まるようになる。

Window Space(ウィンドウ座標系)


ウィンドウ内のピクセルの単位での座標系。
※左「上」が原点の場合や、左「下」が原点の場合などがある。
OpenGLは左「下」を原点にしている。

ここへの変換が「ビューポート変換」とよばれるものである。
また、デプス値を使用するデプスバッファの範囲内に変換するのもここ。
(Depth Range Transformという)

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます