Heath's Blog

There is no end, it is just the beginning! - A Game Developer's Notes

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

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

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

posted on 2013-06-08 22:31 Heath 阅读(4584) 评论(1)  编辑 收藏 引用 所属分类: Game Development

Feedback

# re: 3DS Max坐标系与D3D左手系的简单转换方法 2014-10-14 21:31 ddet

四元数取个共轭就可以了  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理