我正在与代码作斗争,使其围绕对象旋转相机。我正在使用的代码是:
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。有人可以解决这个问题吗,我做错了什么?
答案 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)不是正确的“向上”向量,并且会使您失真。