- 547 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 00:55:44 ]
- 行列による座標変換についての質問なのですが、
matを[行, 列]の4x4行列、vをXYZWの4次元の座標とするとき、 vをローカル座標からスクリーン座標へ変換する場合、 X = mat[0, 0] * v.X + mat[1, 0] * v.Y + mat[2, 0] * v.Z + mat[3, 0] * v.W Y = mat[0, 1] * v.X + mat[1, 1] * v.Y + mat[2, 1] * v.Z + mat[3, 1] * v.W Z = mat[0, 2] * v.X + mat[1, 2] * v.Y + mat[2, 2] * v.Z + mat[3, 2] * v.W W = mat[0, 3] * v.X + mat[1, 3] * v.Y + mat[2, 3] * v.Z + mat[3, 3] * v.W と一次変換した後、 ・XYZをWで割る (この時点でZは0〜1になる) ・XYにスクリーンの高さと幅を掛ける で合ってますでしょうか? matはモデルビュー行列とプロジェクション行列を掛けた物なのですが、 行列を転置してOpenGLに突っ込んだときはちゃんと描画されるのに、上記の方法で vを変換したときに、なぜかカメラの後ろにあるはずのポリゴンのZ座標が0未満にならず、 描画結果がおかしくなってしまいます orz
|

|