0

これは以前にも何度も聞かれ、インターネット上のたくさんの投稿やフォーラムを読んだことがありますが、1つのオブジェクトをそれ自体の軸を中心に回転させることはできません。私はこのように描かれたいくつかのオブジェクトを持っています:

 gl.glMatrixMode(GL2.GL_MODELVIEW);
       gl.glLoadIdentity();   
 .....
 gl.glPushMatrix();
       gl.glRotatef(angle, 0.0f, 1.0f, 0.0f);
       gl.glTranslatef(0.0f, 0.0f, 0.0f);
       texture.bind(gl);
       gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, textureRLt);
       gl.glNormalPointer(GL2.GL_FLOAT, 0, normalRLt);
       gl.glVertexPointer(3, GL2.GL_FLOAT, 0, vertexRLt);
       gl.glDrawElements(GL2.GL_TRIANGLES, countI, GL2.GL_UNSIGNED_SHORT, indexRLt);
       gl.glPopMatrix();

そして、これは正しく描画され、すべてのテクスチャと法線が適用されます。

OpenGLがコマンドを逆に実行することを知っているので、glRotatefが最初になります。また、すべての回転が原点の周りにあることを知っているので、オブジェクトをその原点に変換する必要があります(すべてのオブジェクトを描画する前にマトリックスを保存するため、「ペン」はすでに原点にあるため、変換する必要があるとは思いません。後でポップします)。それはglDrawElementsで何かですか?何かが正しくないようです。

どんな助けでも大歓迎です。:)

編集:オブジェクトがメインのx軸を中心にどのように回転するかを確認できますが、ローカルのx軸を中心に回転させたいと思います。

4

2 に答える 2