【发布时间】:2014-06-01 13:15:32
【问题描述】:
我正在根据鼠标移动和按下的按钮更改相机位置和方向。
为了根据方向将相机向前移动 5 个单位(例如),我使用以下代码:
float mview[16];
glGetFloatv(GL_MODELVIEW_MATRIX, mview);
translate_forward_camera += 5; //I have translate_right_camera and
//translate_up_camera variables too
glLoadIdentity();
glTranslatef(0, 0, 5);
glMultMatrixf(mview);
与向两侧移动相同。
但是,我不知道如何在不改变其位置的情况下改变相机的方向。我在(0,0,0)处围绕自身旋转相机。 之前的 y 、x 旋转角度为:
old_x_ang, old_y_ang
新的 y , x 旋转角度(我需要使用这个角度在 (0,0,0) 处旋转相机) 是:
x_ang, y_ang
如果我使用下面的代码,摄像头位置会改变:
glLoadIdentity();
glTranslatef(translate_right_camera,translate_up_camera,translate_forward_camera);
glRotatef(x_ang,1,0,0);
glRotatef(y_ang,0,1,0);
如何在不改变位置的情况下旋转相机?
【问题讨论】: