GL_MODELVIEW マトリックスと同様に、カメラの位置と方向を含むマトリックスを定義しました。
(m3 = 0; m7 = 0; m11 = 0; m15 = 1)
このデータを ModelViewMatrix にロードしようとしています。私はこの2つの可能性を考えています:
- 関数 glLoadTransposeMatrixf() の使用:
このソリューションを使用すると、正しい位置と向きが得られます。問題は、ビューを変更するためにコードの Left/Up/Forward/Translation ベクトルを変更しているため、2 番目のソリューションを使用する必要があることです。
関数 gluLookAt() の使用:
gluLookAt(Translation->X, Translation->Y, Translation->Z, Translation->X-Forward->X, Translation->Y-Forward->Y, Translation->Z-Forward->Z, Up->X, Up->Y, Up->Z);
私の問題は、それで取得しているGL_MODELVIEWマトリックスが他のケースとは異なることです。具体的には、Translation ベクトルは間違っていますが、Left/Up/Forward ベクトルは正しいです。
私はそれと本当に混乱しています。この2つのオプションと私が間違っていることの間に違いがあるかどうか、誰かが説明できますか?
得られた結果:
次のような行列 M を使用しています。
M = (Lx Upx Fwx tx)
(Ly Upy Fwy ty)
(LZ Upz Fwz tz)
(0 0 0 1 )
最初の方法では、正しい GL_MODELVIEW マトリックスを取得しています。
N = (Lx Upx Fwx tx)
(Ly Upy Fwy ty)
(Lz Upz Fwz tz)
(0 0 0 1 )
しかし、2番目の方法では、次のGL_MODELVIEWマトリックスを取得しています:
N = (Lx Upx Fwx tx')
(Ly Upy Fwy ty')
(Lz Upz Fwz tz')
(0 0 0 1 )
tx'!=tx、ty'!=ty、tz'!=tz であることに注意してください。これは非常に紛らわしいです...