【发布时间】:2022-04-10 01:06:57
【问题描述】:
Unity 提供了一种获取欧拉角和四元数的简单方法。但是在其他 3D 软件(例如 3dsmax)中角度不正确,因为 Unity 中的旋转顺序是 Y-X-Z 而其他则不是。有没有办法在不同的旋转顺序之间转换欧拉角? 更多细节: 实际上,我需要将 Unity 中的模型导出为 .fbx 文件。通过使用 FBX SDK,我通过调用 GlobalSetting.SetAxisSystem() 解决了 Unity 和 3dsmax 之间的坐标差异。如下图所示: rotation provided in Unity
如果我直接在fbx文件中设置旋转数据,并将fbx模型导入Unity:
我已检查坐标是否正确。我认为至关重要的是欧拉顺序,在 Unity 中是 y-x-z,但 fbx 不是。所以Unity在导入的时候会做一些额外的旋转操作。
【问题讨论】:
-
根据docs的旋转顺序是z,x,y
-
旋转矩阵的顺序是z-x-y,所以旋转顺序应该是y-x-z。两者都会导致这个问题。
-
一种粗略的方法是计算每个角度的矩阵,重新排列这些矩阵,然后重新转换为欧拉角。
-
如何使用另一个欧拉角(y-x-z 顺序,Unity 提供)来计算矩阵(x-y-z 顺序)?@meowgoesthedog 这很粗略但并不简单。请注意,获得的角度是有序的。