이것은 이전에 여러 번, 여러 번 요청되었으며 인터넷에서 많은 게시물과 포럼을 읽었지만 하나만 가져올 수 없습니다. 자신의 축을 중심으로 회전하는 객체입니다. 나는 여러 같은 개체를 끌어 있습니다OpenGL에서 자신의 축을 중심으로 푸시/팝 매트릭스 및 개별 객체 회전
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();
을 그리고 glRotatef 먼저 그 이유는 그래서이,
나는 OpenGL을 역방향으로 명령을 실행합니다 알고 ... 모든 텍스처 및 적용 법선, 제대로 그려집니다. 또한 나는 모든 회전이 원점 주위에 있다는 것을 알고 있습니다. 그래서 나는 모든 객체를 그리기 전에 행렬을 저장하기 때문에 "펜"이 이미 원점에 있기 때문에 그 원점으로 객체를 변환해야합니다. 나중에 그것을 팝하십시오). glDrawElements에서 뭔가가 있습니까? 뭔가 옳지 않은 것처럼 보입니다.도움이 될 것입니다. :)
편집 : 개체가 주 x 축을 중심으로 회전하는 방식을 볼 수 있지만 로컬 x 축을 중심으로 회전 시키길 원합니다.
그것은 그 OpenGL은 아니다는 "역 명령을 실행한다"는 변환 행렬을 구성하는 방법이다. – andrewmu
당신이하고 싶은 것은 조작이 전 세계가 아니라 지역적으로 적용된 것으로 생각하는 것입니다. 따라서 예를 들어 로컬 Y 축을 중심으로 회전 한 다음 새 좌표계로 변환합니다. 회전을보다 로컬하게하려면 나중에 수행해야합니다. 그러나 귀하의 예에서는 번역이 0이므로 효과가 없으며 순서는 중요하지 않습니다. 어쩌면 당신은 단지 객체의 축이 무엇인지 오해하고 있습니다. –