我尝试使用glRotatef围绕自己的轴旋转 .obj 3d 模型。但它没有按我的意愿工作。
代码
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_LIGHTING);
gl.glLoadIdentity();
gl.glTranslatef(0f, -1.2f, -z);
gl.glRotatef(xrot, 1f, 0f, 0f);
gl.glRotatef(yrot, 0f, 1f, 0f);
model.draw(gl);
}
问题
第一次旋转yrot效果很好:无论模型的位置如何,它总是围绕自己的z旋转(好吧,我要求围绕y旋转,所以它并不完美。但至少它使用自己的轴!)
现在,当我询问“xrot”时,它会围绕x 屏幕轴旋转。不是它自己的x。有人知道为什么吗?
评论
- 我注意到onDrawFrame一直在运行。但是,该模型不会在y上不断平移1.2f。只有当z != 0 时。(我不知道为什么)..
- 我读到我们可以使用三角函数来获得正确的x向量。但这对我来说没有意义。如果应用程序能够在内存中保存模型的位置以使yrot正确,为什么它不能为xrot做同样的事情?