opengl相机围绕物体旋转

时间:2013-04-12 11:02:47

标签: java android opengl-es-2.0

我正在与代码作斗争,使其围绕对象旋转相机。我正在使用的代码是:

eyeX = (float) (obj.x + 500*Math.cos(Math.toRadians(angle))*Math.sin(Math.toRadians(angle))); eyeY = (float) (obj.y + 500*Math.sin(Math.toRadians(angle))*Math.sin(Math.toRadians(angle))); eyeZ = (float) (obj.z + 500*Math.cos(Math.toRadians(angle))); Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, obj.x, obj.y, obj.z, 0, 1, 0);

其中obj是我希望旋转相机的模型,每次绘制时角度都会增加1。有人可以解决这个问题吗,我做错了什么?

1 个答案:

答案 0 :(得分:0)

您想要实现什么样的相机运动? 如果你想在XZ平面上转动obj同时保持恒定高度,你应该这样做:

eyeX =(float)(obj.x + 500 * Math.cos(Math.toRadians(angle));

eyeY =(浮动)(y0); //恒定高度

eyeZ =(float)(obj.z + 500 * Math.sin(Math.toRadians(angle));

此外,如果y0!= 0,则(0,1,0)不是正确的“向上”向量,并且会使您失真。