Physx的max编辑插件导出的场景,比如NxuStream保存的XML文件,是保留max坐标系(Z轴向上右手系)的。对于采用左手系的引擎来说,就需要有一个转换过程,将导出的物体转换到适应游戏坐标系的坐标系中。下面,我们就以导出的PhysX 2.8.4的Ragdoll为例,简单介绍一下如何来进行转换。
我们知道,对于一个Ragdoll,有这么几个必要的组成部分:刚体的Actor数据、Body数据、Shape数据,以及将刚体链接起来的Joint的数据。转换也需要针对这些数据来进行。
1、 设从max坐标系到游戏引擎的转换矩阵T,逆矩阵是Tinv。
2、 对NxActorDesc进行坐标转换
2.1 转换GlobalPose
NewGlobalPose= T * OldGlobalPose * Tinv
3、 对NxBodyDesc进行坐标转换
3.1 转换 massLocalPose
NewmassLocalPose = T *OldmassLocalPose * T