私は簡単なことを達成しようとしています.X軸に平行移動を設定し、オブジェクトをその中心を中心に固定角度で回転させます。
これを達成するには、私の現在の知識では、オブジェクトを中心に移動し、回転させ、元の位置に戻す必要があります。わかった。私が得る問題は、オブジェクトがローカル軸を回転させ、これらの軸に沿って最後の移動を行うように見えるため、間違った位置で終わることです。
これは私のコードです:
public void draw(GL10 gl) {
gl.glLoadIdentity();
GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0);
gl.glTranslatef(x, 0, 0);
gl.glTranslatef(-x, 0, 0);
gl.glRotatef(-80, 0, 1, 0);
gl.glTranslatef(x, 0, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glFrontFace(GL10.GL_CW);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, verticesBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
gl.glDrawElements(GLES20.GL_TRIANGLES, indices.length, GLES10.GL_UNSIGNED_SHORT, indicesBuffer);
}
回転する前に、オブジェクトは 0,0,0 にある必要があります。正しく回転します。しかし、x 軸が私 (80°) を指しているかのように画面に近づきます。
注: これは一般的な OpenGL の質問であるため、タグとして「opengl」のみを許可します。答えは Android 関連ではありません。