c#:将MAYA旋转(yUp,右手,xyz顺序)转换为UNITY旋转(yUp,左手,zxy顺序)

时间:2016-12-30 11:17:46

标签: c# matrix unity3d maya quaternions

我遗憾地没有矩阵/欧拉计算的经验,但需要在c#中解决以下问题,在Unity中进行方向匹配。

转换:

来自Maya的物体的3个浮点(方向)(yUp,右手,xyz旋转顺序)

于: Unity中的四元数旋转(yUp,左手,zxy旋转顺序)

任何输入最受欢迎! 米。

2 个答案:

答案 0 :(得分:0)

APPLY_MACRO可用于表示对象的方向或旋转。这取决于Quaternions的Pivot。看看here

答案 1 :(得分:0)

好的,我得到了解决方案,并向朋友提示以下帖子: https://forum.unity3d.com/threads/right-hand-to-left-handed-conversions.80679/ 该解决方案由用户通过' guavaman'。

发布

我现在使用的代码具有以下结构:

  • //翻译
  • var unityPosition = new Vector3(-maya_translation.x,maya_translation.y,maya_translation.z);
  • // rotation
  • var flippedRotation = new Vector3(maya_euler_rotation.x,-maya_euler_rotation.y,-maya_euler_rotation.z);
  • var qx = Quaternion.AngleAxis(flippedRotation.x,Vector3.right);
  • var qy = Quaternion.AngleAxis(flippedRotation.y,Vector3.up);
  • var qz = Quaternion.AngleAxis(flippedRotation.z,Vector3.forward);
  • var unityRotationQuaternion = qz * qy * qx; //确切的订单!
  • // scale
  • var unityScaling = new Vector3(maya_scale.x,maya_scale.y,maya_scale.z);

感谢所有的投入和#guavaman'。