Unity3D:Unity 中的旋转和定向

在线工具推荐:Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D数字孪生场景编辑器

Unity 中的旋转和定向

在 Unity 中,您可以使用欧拉角和四元数来表示旋转和方向。这些表示是等效的,但具有不同的用途和限制。

通常,使用变换组件旋转场景中的对象,该组件将方向显示为欧拉角。但是,Unity 在内部将旋转和方向存储为四元数,这对于可能导致云台锁定的更复杂的运动非常有用。

欧拉角

在变换坐标中,Unity 使用矢量属性变换显示旋转.eulerAngles X、Y 和 Z。与法线矢量不同,这些值实际上表示围绕 X、Y 和 Z 轴旋转的角度(以度为单位)。

欧拉角旋转围绕三个轴执行三个单独的旋转。Unity 依次围绕 z 轴、x 轴和 y 轴执行欧拉旋转。这种旋转方法是外在旋转;旋转发生时,原始坐标系不会更改。

要旋转游戏对象,您可以输入希望每个轴在变换组件中旋转多远的角度值。要使用脚本旋转游戏对象,请使用 。如果转换为欧拉角进行计算和旋转,则可能会遇到万向节锁定问题。Transform.eulerAngles

云台锁

当 3D 空间中的物体失去自由度并且只能在二维内旋转时,它被称为云台锁定。如果两个轴平行,则欧拉角可以发生万向节锁定。 如果未在脚本中将旋转值转换为欧拉角,则使用四元数应防止云台锁定。

如果云台锁定确实有问题,则可以在用于旋转时避免欧拉角。您也可以在每个轴上使用并将它们相乘(四元数乘法依次应用每个旋转)。Transform.RotateAroundQuaternion.AngleAxis

四元数

四元数为 3D 空间中空间方向和旋转的独特表示提供数学符号。四元数使用四个数字对 3D 中围绕单位轴的旋转方向和角度进行编码。这四个值是复数,而不是角度或度数。您可以查看四元数的数学以获取更多信息。

Unity 将旋转值转换为四元数以存储它们,因为四元数旋转的计算效率高且稳定。编辑器不会将旋转显示为四元数,因为单个四元数不能表示围绕任何轴大于360 度的旋转。

如果使用四元数类,则可以直接使用四元数。如果使用脚本进行旋转,则可以使用 Quadreuion 类和函数来创建和更改旋转值。您可以将值作为欧拉角应用于旋转,但需要将它们存储为四元数以避免出现问题。

在欧拉角和四元数之间转换

要在四元数和欧拉角之间进行转换,以您喜欢的方式查看和编辑旋转,可以使用脚本:

  • 要从欧拉角转换为四元数,可以使用四元数.欧拉函数。
  • 要将四元数转换为欧拉角,可以使用四元数.eulerAngles 函数。

此文由3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:缩放约束 (mvrlink.com)

下一篇:Unity3D:光源 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号