首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

怎么让物体(mesh)绕指定轴旋转

2012-02-12 
如何让物体(mesh)绕指定轴旋转本人想让某个物体根据前进的方向以一定的仰角水平移动,于是计算出这一轴向,

如何让物体(mesh)绕指定轴旋转
本人想让某个物体根据前进的方向以一定的仰角水平移动,于是计算出这一轴向,然后计算选择矩阵,然后乘入坐标中,如下:
D3DXVECTOR3 依据水平方向获得的旋转轴= 。。。。。;//计算出的向量
D3DXMATRIX matRotationA; //旋转矩阵
float 上下旋转角=3.14/4 ;//指定角度
D3DXMatrixRotationAxis(&matRotationA,&依据水平方向获得的旋转轴,上下旋转角); //计算矩阵
D3DXMatrixMultiply (&m_mWorld,&matRotationA,&m_mWorld);//乘入坐标中

结果发现“依据水平方向获得的旋转轴”只与mesh 的原始坐标有关,例如(1,0,0),也就是说,如果想达到前述目标,只需把“依据水平方向获得的旋转轴”设定为(1,0,0),而不必计算。无论mesh 实际方向如何,这一“依据水平方向获得的旋转轴”总需要设为(1,0,0)。这似乎和乘的顺序有关,但如果改变顺序,如下:
D3DXMatrixMultiply (&m_mWorld,&m_mWorld,&matRotationA);//乘入坐标中
则mesh 不再是按水平运动,而是按这个角度移动。
怎么办?请高手指教!

[解决办法]
楼主的计算顺序应该这样

1.将物体移回到原点

2.旋转物体

3.将物体移动到原来的地方

热点排行