3DS Max坐标系与D3D左手系的简单转换方法

3DS Max坐标系与D3D左手系的简单转换方法

   前几天遇到一个将3DSMax的摄像机路径导出供游戏过场动画使用的需求。由于游戏中使用的是D3D左手系,所以需要考虑怎么从3DSMax使用的Z轴朝上的右手系转换到D3D使用的Y轴朝上的左手系,如下图所示:

 
   摄像机路径关键帧中包含了Position和Rotation,对Position我采用简单将y-z对调的方法。Rotation用四元数表示,需要先沿X轴将Y轴旋转至Z轴位置,变成标准的右手坐标系,再从标准右手系变成左手系(将z取负)。Max插件变换代码如下:
 
1 c -> GetValue(t ,  & pmat , ivalid , CTRL_RELATIVE);
2 rot.Set(pmat);
3 rot  =  rot  *  QFromAngAxis(PI  *   0.5f  , Point3( 1.0f  ,  0.0f  ,  0.0f ));
4 rot.z  =   - rot.z;

你可能感兴趣的:(3DS Max坐标系与D3D左手系的简单转换方法)