在OpenGL中,我试图围绕一个点旋转相机,相机距离点距离r并且在旋转时面向点.换句话说,我希望相机沿着圆心圆周从中心移动半径为r,相机在圆周的任何一点都面向中心.
让我们说在3d空间中圆的中心是(3,0,3);
我试过了:
// move to center of circle glTranslatef(-3, 0, -3) // move a distance away from the circle glTranslatef(0, 0, r); // rotate along the y "up" axis glRotatef(CameraAngle, 0, 1, 0);
其中CameraAngle是围绕圆圈移动的度数.
我的最终结果是相机仍然沿着原点旋转,而不是圆圈的中心.任何人都可以帮我解决这个问题吗?谢谢!
你需要:
围绕原点旋转相机然后翻译它(*)
要么:
用于gluLookAt
使相机指向圆圈的中心
(*)旋转功能通常围绕原点旋转.要围绕另一个点旋转,P
您必须:
翻译(-P)
回转
翻译(P)
这有点令人困惑,但我认为你应该:
// move camera a distance r away from the center glTranslatef(0, 0, -r); // rotate glRotatef(angley, 0, 1, 0); glRotatef(anglex, 1, 0, 0); // move to center of circle glTranslatef(-cx, -cy, -cz)
请注意,不得更改订单.