求救:OpenGL中,如何顶点旋转摄像机?在OpenGL中,填加了一个人物模型,我将人物模型的位置与摄像机目标点的位置绑定,现在想让摄像机以人物视角为主,即以人物为中心进行旋转,旋转后的摄像机

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 08:40:56
求救:OpenGL中,如何顶点旋转摄像机?在OpenGL中,填加了一个人物模型,我将人物模型的位置与摄像机目标点的位置绑定,现在想让摄像机以人物视角为主,即以人物为中心进行旋转,旋转后的摄像机求救:O

求救:OpenGL中,如何顶点旋转摄像机?在OpenGL中,填加了一个人物模型,我将人物模型的位置与摄像机目标点的位置绑定,现在想让摄像机以人物视角为主,即以人物为中心进行旋转,旋转后的摄像机
求救:OpenGL中,如何顶点旋转摄像机?
在OpenGL中,填加了一个人物模型,我将人物模型的位置与摄像机目标点的位置绑定,现在想让摄像机以人物视角为主,即以人物为中心进行旋转,旋转后的摄像机位置该怎么计算啊?最好能给出这段的代码,旋转的角度已经知道是弧度的angle,关键是后面的运算,

求救:OpenGL中,如何顶点旋转摄像机?在OpenGL中,填加了一个人物模型,我将人物模型的位置与摄像机目标点的位置绑定,现在想让摄像机以人物视角为主,即以人物为中心进行旋转,旋转后的摄像机
人物模型和像机位置确定,要定义一个半径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向量)
视线上任意一点,写模型位置中心位置即可

第三人称摄像机是么 摄像机一直在人物脑后 不管怎么转都看不见人物的脸是的 ,怎么解决啊用四元数算摄像机位置关键就是不会算。。网上有现成的算法资料啊 自己查一查啊 你可以参考一下 http://www.pudn.com/downloads63/sourcecode/windows/opengl/detail219689.html 这里用到了四元数...

全部展开

第三人称摄像机是么 摄像机一直在人物脑后 不管怎么转都看不见人物的脸

收起