微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在OpenGL ES 2.0 / 3.0中,摄像机围绕倾斜轨道中的对象旋转

如何解决在OpenGL ES 2.0 / 3.0中,摄像机围绕倾斜轨道中的对象旋转

要沿横轴(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);
    ...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。