如何让物体(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.将物体移动到原来的地方