作者littleshan (我要加入剑道社!)
看板GameDesign
标题Re: [程式] 关於openGL球滚动的问题
时间Sat Oct 4 09:37:02 2008
※ 引述《liamgallager (绝对可能)》之铭言:
: 小弟想画一颗球在地上滚动
: 球会随着移动方向跟着转动
: 小弟是这样写的
: glRotatef(zrot,1.0f,0.0f,0.0f);
: glRotatef(xrot,0.0f,0.0f,1.0f);
: gluSphere(quadratic,0.2f,32,32);
: 就是先根据z方向的移动速度来转动球
: 然後再根据x方向的移动速度来转动球
: 在最一开始的时候如果只根据x方向移动,球的转动是正常的
: 可是当z方向的移动出现之後,球的旋转方向似乎被打乱了
: 反之,一开始从z方向移动正常,x方向移动出现後,转动也被打乱
: 请问各位大大我该如何让球滚动正常呢?
: 我用的介面是OpenGL
: 谢谢@@
你的作法之所以会有问题
是因为「旋转」并不是一项可前後交换的运算
「先以 X 轴旋转 90 度,再以 Z 轴旋转 45 度」
和「先以 Z 轴旋转 45 度,再以 X 轴旋转 90 度」
结果是完全不同的 (你可以自己拿颗球转看看)
正确的作法是把这颗球的旋转用矩阵存起来
每次转动的时候去更新这个矩阵
最後在 render 前把这个矩阵乘上 model-view matrix 即可
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.163.153.8
※ 编辑: littleshan 来自: 218.163.153.8 (10/04 13:42)