【问题标题】:opengl camera rotation around objectopengl相机围绕物体旋转
【发布时间】:2013-04-12 11:02:47
【问题描述】:

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

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。有人能解释一下这个问题吗,我做错了什么?

【问题讨论】:

    标签: java android opengl-es-2.0


    【解决方案1】:

    您想要实现哪种精确的摄像机运动? 如果您想在 XZ 平面上绕 obj 并保持恒定高度,您应该这样做:

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

    eyeY = (float)(y0); //恒定高度

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

    此外,如果 y0 != 0,则 (0, 1, 0) 不是正确的“向上”向量,会扭曲您的视图。

    【讨论】:

    • 不,它仍然没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多