我已经通过openGL ES 1.1编写了一个简单的程序,在android上绘制了能够在空间中导航的3D对象。
我想像3D游戏中的第一人称相机模式一样向左,向右,向内,向外和向左,向右,向上,向下旋转。 (这意味着我想旋转相机/眼睛本身)
这是onDrawFrame(GL10 gl)
中的绘图部分:
gl.glLoadIdentity();
gl.glRotatef(lfRt, 0.0f, 1.0f, 0.0f);
gl.glRotatef(upDn, 1.0f, 0.0f, 0.0f);
gl.glTranslatef(X, 0.0f, 0.0f);
gl.glTranslatef(0.0f, Y, 0.0f);
gl.glTranslatef(0.0f, 0.0f, Z);
lfRt和其他变量决定了我们必须存在的观点。 (为了描述更多,每次moveIn()调用都会使z加上一些常量。其他的则具有相同的逻辑)。
现在这是我的困惑。如果我首先放置翻译,移动方法可以正常工作(in,left等),但旋转是错误的。 (整个世界围绕原点旋转) 另一方面,如果我先放旋转,相机旋转正常,但移动方法不正确。例如,moveIn()始终在同一行/轴上移动。但我想继续前进,不要在z轴上移动
我该怎么办?