2

ヨー、ピッチ、ロールを使用してビューマトリックスを作成する方法が見つかりません。LWJGLを使用していて、回転機能を使用できます。

    viewMatrix.setZero();
    viewMatrix.rotate(pitch, new Vector3f(1.0f, 0.0f, 0.0f));
    viewMatrix.rotate(yaw, new Vector3f(0.0f, 1.0f, 0.0f));
    viewMatrix.rotate(roll, new Vector3f(0.0f, 0.0f, 1.0f));
    viewMatrix.m33 = 1.0f;
    viewMatrix.translate(position);

私は根本的に間違ったことをしているのですが、ドキュメントの不足(またはグーグルのスキルの欠如)を修正できないという事実が嫌いです。

行列を転置しません。

注意として、位置はゼロベクトルであり、画面には何も表示されません(ビューマトリックスがゼロの場合は表示されます)。

追加:私は次の同等のものに到達しようとしています:

    GL11.glRotatef(pitch, 1.0f, 0.0f, 0.0f);
    GL11.glRotatef(yaw, 0.0f, 1.0f, 0.0f);
    GL11.glRotatef(roll, 0.0f, 0.0f, 1.0f);
    GL11.glTranslatef(position.x, position.y, position.z);
4

2 に答える 2

3

viewMatrix.setIdentity()行列をゼロにする代わりに、を使用viewMatrix.setZero()して最初に行列を単位行列に設定する必要があります。

于 2013-02-19T14:12:12.010 に答える
0

そのような複利回転はそれを回避するための間違った方法です、これを試してください:http: //tutorialrandom.blogspot.com/2012/08/how-to-rotate-in-3d-using-opengl-proper.html

于 2013-02-19T13:18:26.447 に答える