作业帮 > 综合 > 作业

求救:OpenGL中,如何顶点旋转摄像机?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 18:31:25
求救:OpenGL中,如何顶点旋转摄像机?
在OpenGL中,填加了一个人物模型,我将人物模型的位置与摄像机目标点的位置绑定,现在想让摄像机以人物视角为主,即以人物为中心进行旋转,旋转后的摄像机位置该怎么计算啊?最好能给出这段的代码,旋转的角度已经知道是弧度的angle,关键是后面的运算,
人物模型和像机位置确定,要定义一个半径radius浮点数变量,表示两点在平面xz即底面的投影长度是不变的.这个变量不妨记作r.
在程序的更新函数,比如update()
--------------------
1.在里面首先要读取键盘或是鼠标的操作,
cameraH+=(人物所站地形高低增量);//这里保证像机随人物高低变化,y轴方向
cameraR+=(输入设备引起视角增量)
再作下判断,如果cameraR大于等于2*PI时,重置为0
这里,也会更新模型的位置
2.接着,要改变视图模型矩阵了.
float x=r*cos(angle )//
float z=r*sin(angle);//
cameraH //
像机位置即为(x,cameraH,z)
~~~~~~~~~
理解
根据模型位置和像机位置,lookat向量就确认下来了.
像机up(0,1,0)这个是固定的(初学者不理解这点,认为lookat向量不一定和up向量垂直啊?还记得线代学习时,接触的斯密斯正交法不,api函数会作内部实现的)
~~~~~~~~~~
然后,
glMatrixMode(GL_MODEVIEW)
glLoadIdentity();
gluLookAt(像机位置,视线上任意一点,up向量)
视线上任意一点,写模型位置中心位置即可