だから私は物事をよりよく理解することができます、私は代わりに私自身の行列を作成してglMultMatrixf()を使用しているgl変換関数(glTranslatef / glRotatefなど)を呼び出さないようにしています。
x / y / z回転用に作成したマトリックスは問題なく機能しているように見えますが、変換マトリックスはメッシュのすべての頂点を1つの軸に折りたたんでいるように見えます。
行列を渡すことを考えると、私はベースから外れていますか?
{ 1.0f,0.0f,0.0f,x
0.0f,1.0f,0.0f,y,
0.0f,0.0f,1.0f,z,
0.0f,0.0f,0.0f,1.0f };
glMultMatrixfは、glTranslatef(x、y、z)を実行するのと同じですか?(私はコラム専攻です。すべてが逆になっていないことを確認するために、上記のマトリックスを転置しましたが、それでも機能しませんでした。すべてを別の軸に平坦化したようです。)
どこかに正規化ステップがありませんか?ISの場合、行列を正規化することをお勧めします。
私の人々にいくつかの知識を落としてくれてありがとう!
これらは私の回転行列です:XAxis
{ 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, (float) Math.cos(x), (float) -Math.sin(x), 0.0f,
0.0f, (float) Math.sin(x), (float) Math.cos(x), 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
YAxis
{ (float) Math.cos(y),0.0f,(float) Math.sin(y),0.0f,
0.0f,1.0f,0.0f,0.0f,
(float) -Math.sin(y),0.0f,(float) Math.cos(y),0.0f,
0.0f,0.0f,0.0f,1.0f };
ZAxis
{ (float) Math.cos(z),(float) -Math.sin(z),0,0,
(float) Math.sin(z),(float) Math.cos(z),0,0,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f };