3dmax和opengl都是右手坐标系,但是3dmax是z轴向上,而opengl中是Y轴向上。如图:

3dmax坐标系与导出fbx的坐标系-LMLPHP3dmax坐标系与导出fbx的坐标系-LMLPHP

所以在3dmax的fbx导出对话框中有“轴转化”一项,可以设置“Y向上”或者“Z向上”。

默认是“Y向上”,这样导出以后再加载到opengl程序里,模型就不至于是“躺着”的了。

3dmax坐标系与导出fbx的坐标系-LMLPHP

不过这个“轴转化”的原理只是给fbx根节点乘了一个绕X轴旋转90的矩阵,并不改变各mesh子节点的局部空间矩阵,

所以如果我们在opengl程序中要给导入的fbx模型中的某个mesh节点node添加child的话,我们心里要清楚:node的局部空间坐标系是跟3dmax中相同的--即Z轴向上的。

例如,假设在3dmax中建了一个正立的圆锥体,按"Y向上"导出为fbx并加载到opengl程序中后,我们为其mesh节点添加一个子节点childMesh,childMesh是一个XZ平面上的Quad,那么显示结果Quad将是竖直的,而不是水平的。

05-11 20:14