opengl坐标旋转和平移问题

np4800 2011-04-13 01:05:49
我现在在做一个用键盘控制小人跑动的程序,本来是这样设想的:用上下键盘控制前进后退,左右键分别控制左右旋转。现在问题来了:如果我先做平移后做旋转,人物转向是正常的,只不过平移坐标还要根据旋转的角度来计算比较麻烦;如果我先做旋转再做平移,在人物面向位置的向前向后平移变得很简单了(纯粹的只要在X或Y轴上增加值即可),但是问题是人物始终是围绕坐标原点的Z轴旋转,而不是围绕自己旋转。
不知道各位大大们做过想类似的问题没,无限请指教
...全文
292 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
diy2005 2011-05-01
  • 打赏
  • 举报
回复
同感啊 进步很慢 要弄明白的东西很多 三维需要空间想象力
[Quote=引用 5 楼 wjjroy 的回复:]
LZ已经解决了啊~~~~~一开始学OpenGL的时候的确会被坐标弄昏头,不过这个不弄清楚的话以后就学不了GL了,本来GL就是坐标+颜色的东西(50%)……我现在学GL也学到迷惑了,总感觉进步不了~~~~郁闷,有老师的年代真好
[/Quote]
wjjroy 2011-04-27
  • 打赏
  • 举报
回复
LZ已经解决了啊~~~~~一开始学OpenGL的时候的确会被坐标弄昏头,不过这个不弄清楚的话以后就学不了GL了,本来GL就是坐标+颜色的东西(50%)……我现在学GL也学到迷惑了,总感觉进步不了~~~~郁闷,有老师的年代真好
np4800 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 poisonchry 的回复:]
引用 2 楼 poisonchry 的回复:

不太明白你说的是什么问题,是说进行了模型变换后,发现模型实际上一直围绕Z轴旋转?
首先,你弄得清楚什么是模型观察矩阵么?
简单的说,就是模型矩阵+观察矩阵
OpenGL默认情况下,观察矩阵和模型矩阵都是位于中心,也就是说,在你不修改观察矩阵的前提下,对模型进行修改,包括另它转动,都最终只能看到它沿某轴转动。
你说,想叫世界围绕人物旋转,那……
[/Quote]
谢谢你了,用保存模型矩阵和读取模型矩阵的方法可以做出来。。
打码的老程 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 poisonchry 的回复:]

不太明白你说的是什么问题,是说进行了模型变换后,发现模型实际上一直围绕Z轴旋转?
首先,你弄得清楚什么是模型观察矩阵么?
简单的说,就是模型矩阵+观察矩阵
OpenGL默认情况下,观察矩阵和模型矩阵都是位于中心,也就是说,在你不修改观察矩阵的前提下,对模型进行修改,包括另它转动,都最终只能看到它沿某轴转动。
你说,想叫世界围绕人物旋转,那你需要考虑修改观察矩阵才能得到这样的效果。亦或者,……
[/Quote]
说错了,确切的说,是把人物置于中心(0,0,0)点,然后所有物体沿Y轴旋转
打码的老程 2011-04-13
  • 打赏
  • 举报
回复
不太明白你说的是什么问题,是说进行了模型变换后,发现模型实际上一直围绕Z轴旋转?
首先,你弄得清楚什么是模型观察矩阵么?
简单的说,就是模型矩阵+观察矩阵
OpenGL默认情况下,观察矩阵和模型矩阵都是位于中心,也就是说,在你不修改观察矩阵的前提下,对模型进行修改,包括另它转动,都最终只能看到它沿某轴转动。
你说,想叫世界围绕人物旋转,那你需要考虑修改观察矩阵才能得到这样的效果。亦或者,你将全部物体置于同一等级的矩阵中,然后以Z轴为中心,对所有物体进行旋转。这样才能得到你想要的效果
天鹅梦 2011-04-13
  • 打赏
  • 举报
回复
glPushMatrix glPopMatrix行不?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧