共同点:
在世界空间和模型空间内,UE4、Unity均为左手系
不同点:
轴向
模型空间内,UE4、Unity轴向的对应关系如下:
轴向 | UE4 | Unity |
向前 | +x | +z |
向右 | +y | +x |
向上 | +z | +y |
旋转
欧拉角(Euler Angles)使用三个角度值来描述物体在三维空间的任意朝向
它的基本思想是让物体开始于“标准”方位(物体坐标轴和惯性坐标轴对齐),每次让其绕着物体坐标系某个轴进行旋转,通过三次旋转就可以达到最终朝向
如果从惯性坐标系到物体坐标系,欧拉角顺序为:m-n-p;那么,从物体坐标系到惯性坐标系,旋转的顺序就是相反的,为p-n-m
合法的欧拉角组中,唯一的限制是,任何两个连续的旋转,必须绕着不同的转动轴旋转,因此,一共有12种顺规。
欧拉角分为两大类:
别种欧拉角组(Proper Euler angles,仅绕两个不同的轴进行旋转): z-x-z、x-y-x,、y-z-y、z-y-z、x-z-x、y-x-y
泰特-布萊恩角(Tait–Bryan angles,三次都绕不同的轴进行旋转) :x-y-z、y-z-x、z-x-y、x-z-y、z-y-x、y-x-z
游戏中使用的是泰特-布萊恩角(Tait–Bryan angles)
泰特-布萊恩角(Tait–Bryan angles)又称Cardan angles; nautical angles; heading, elevation, and bank; or yaw, pitch, and roll
Yaw(shaking your head to say "no") ,又称heading,方位角
Pitch (think nodding to say "yes"),又称elevation, 俯仰角
Roll (tilting your head sideways while looking in a specific direction) ,又称bank,横滚角
UE4欧拉角顺序为:Yaw-Pitch-Roll
欧拉角 | 旋转轴方向 | 存储分量 |
横滚角(Roll) | -x(向后) | x |
俯仰角(Pitch) | -y(向左) | y |
方位角(Yaw) | +z(向上) | z |
Unity欧拉角顺序为:Yaw-Pitch-Roll
欧拉角 | 旋转轴方向 | 存储分量 |
横滚角(Roll) | +z(向前) | z |
俯仰角(Pitch) | +x(向右) | x |
方位角(Yaw) | +y(向上) | y |
值得注意地是,虽然UE4和Unity的欧拉角顺序相同,但两者在Pitch和Roll分量的旋转方向是相反的
若要将Unity的场景转换到UE4中,需要进行如下操作:
(1) 计算场景中GameObject在世界坐标系中Location、Rotation和Scale,然后按照如下对应关系写入到UE4中
string.format("RelativeLocation=(X={0:F6},Y={1:F6},Z={2:F6})", UnityWorldPosition.Z * 100, UnityWorldPosition.X * 100, UnityWorldPosition.Y * 100); string.format("RelativeRotation=(Roll={2:F6},Pitch={0:F6},Yaw={1:F6})", -UnityWorldRotation.Z, -UnityWorldRotation.X, UnityWorldRotation.Y); string.format("RelativeScale3D=(X={0:F6},Y={1:F6},Z={2:F6})", UnityWorldScale.Z, UnityWorldScale.X, UnityWorldScale.Y);
注:Location要乘以100,原因是untiy的单位是m,而UE4的单位是cm
(2)mesh模型导入到UE4中时,需要将Pitch俯仰角设置成 -90,另外Location也要乘以100
原文地址:https://www.cnblogs.com/kekec/p/12209526.html