问题描述
要沿横轴(X)围绕对象旋转相机,请使用以下代码:
private float k = 0f;
...
@Override
public void onDrawFrame(GL10 gl) {
// Math.PI * 2 - full rotation
k = (k >= Math.PI * 2) ? 0.0f : k + 0.01f; // gradually rotate the camera
float radius = 2.6f;
float x = (float) (radius * Math.cos(k));
float z = (float) (radius * Math.sin(k));
Matrix.setLookAtM(viewMatrix,x,z,0f,1.0f,0.0f);
...
}
要沿纵轴(Y)围绕对象旋转相机,
...
float y = (float) (radius * Math.cos(k));
float z = (float) (radius * Math.sin(k));
Matrix.setLookAtM(viewMatrix,y,0.0f);
...
但是我不明白如何沿着倾斜轴围绕物体旋转相机。在这种情况下,x,y,z的比例是多少?
注意:对象的中心与相机所看的点(0,0)一致。
解决方法
找到了这个解决方案:
@Override
public void onSurfaceCreated(GL10 gl,EGLConfig config) {
...
Matrix.setLookAtM(viewMatrix,0f,5f,1.0f,0.0f);
}
@Override
public void onDrawFrame(GL10 gl) {
Matrix.rotateM(viewMatrix,angle1,x:1,y:0,z:0);
Matrix.rotateM(viewMatrix,angle2,x:0,y:1,z:0);
...
}