Unity 欧拉角万向节锁的原理
网上文章很多,有些写的很详细,但是我个人理解起来有不是很顺畅,把几个重要的知识点整理一下
欧拉角:欧拉角用于控制物体的旋转角度,在Unity中欧拉角的表示就是一个Vector3,例如 Vector3 v3 = new Vector3(30,30,30)
Unity的欧拉角旋转顺序是 Z-X-Y,这个旋转顺序在不同的软件,行业有所不同,没有一个全球统一标准。
旋转顺序:同样的输入值,不同的旋转顺序,得到的结果不同
静态欧拉角:旋转的参考坐标系保持不变(Space.World),这种情况不产生万向节锁
动态欧拉角:旋转的参考坐标系为物体自身的局部坐标系(Space.Self),特定情况下会产生万向节死锁
万向节死锁:中间旋转顺序轴(X)旋转90°,使前顺序轴(Z)和世界坐标系的后顺序(Y)轴重叠,这样在世界坐标系的观察空间内,物体绕自己的Z轴旋转,就跟物体绕着世界坐标系的Y轴旋转一样,这样看物体坐标的Z轴自由度似乎消失了,这种情况就称为万向节死锁。
欧拉角存在多对一的关系,即物体的最终旋转情况,可以用多个欧拉角来表示,例如 Vector3(90,30,30) 等价于 Vector3(90,20,20)
且慢,我刚刚,看到一个跟规定不符合的情况,Uniyt的旋转顺序似乎是 Y-X-Z !!!!!!为什么大家都说是Z-X-Y啊??
如果是Y-X-Z,我就不会困惑那么久了啊!!!
我用文字表达一下:首先物体初始角度是Vector3(0,0,0),此时局部坐标世界坐标相同,假设要旋转的欧拉角是Vector3 v3 = new Vector3(90,30,60),我们来分析一下过程,以世界坐标系的角度来看到物体旋转。先绕v3.y旋转30°,因为此时局部坐标和世界坐标重合,所以你看到物体绕着世界坐标的Y轴旋转,接着绕v3.x旋转90°,旋转后,局部坐标的Z轴和世界坐标的Y轴重合,接着绕着v3.z旋转,从世界坐标系来看就像是绕着Y轴旋转,这样一来,局部坐标的Z轴旋转似乎不起作用,似乎Z轴的自由度消失了!万向节死锁产生了!
简单描述产生过程:Y-X-Z,一开始Y旋转就是世界坐标Y旋转,X旋转90°后,局部坐标系Z和世界坐标系Z重合,局部坐标系Z旋转看起来就是世界坐标系Y旋转
Over
Unity 欧拉角万向节锁的原理相关推荐
- Unity史上最全旋转详解(Rotate,rotation,localEulerAngles,localRotation,万向节锁)
Unity史上最全旋转详解 前言 旋转的方法Rotate以及五种重载参数的超级详细理解 Rotate(float xAngle, float yAngle, float zAngle); Unity绕 ...
- 【Unity】Unity 欧拉角、四元数、万向节死锁、四元数转轴角
文章目录 欧拉角(Euler) 万向节 欧拉角旋转特性 欧拉角优点 欧拉角缺点 方位的表达方式不唯一 万向节锁(Gimbal Lock) 四元数(Quaternion) 四元数转轴角 四元数优点 四元 ...
- GimbalLock万向节锁、 欧拉角坐标旋转、 四元数旋转
也许你都知道四元数这么个东西,也许你还知道万向锁.但是对于弄懂它们还是不那么容易的--起码对于我就是如此了.今天是丢三落四日,我就自己来捡捡吧.--ZwqXin.com 事先声明,原理神马的,其实我也 ...
- 欧拉角,万向节锁和四元数
一.欧拉角 对于一个3D空间中的一个物体的旋转,我们都可以理解为围绕三维空间中的绕着基向量为轴的三次旋转的结果. 绕基向量为轴的旋转我们可以用旋转矩阵来表示,其中Rx,Ry,Rz是沿着x,y,z轴旋转 ...
- 万向节锁--简单解释
以前一直以为自己已经清楚了这是怎么回事,也没去细想,然而最近又遇到角度的问题,发现还是迷糊,于是又静下心来看了网上的相关文档,并以直白简单的方式分享一下. 还是以unity为例吧 首先,万向节锁只发生 ...
- GimbalLock万向节锁与四元数旋转
GimbalLock万向节锁与四元数旋转 2011-3-4 22:54:50 | 发布:zwqxin 也许你都知道四元数这么个东西,也许你还知道万向锁.但是对于弄懂它们还是不那么容易的--起码对于我就 ...
- 如何快速解决Unity中万向节死锁(gimbal lock)的问题
如何快速解决Unity中万向节死锁(gimbal lock)的问题 转载连接:https://www.jianshu.com/p/59acdd1c9db8 万向节死锁的根本问题是欧拉角(EulerAn ...
- 万向节锁(Gimbal Lock)的理解
转自:https://www.cnblogs.com/psklf/p/5656938.html 严正声明: 作者:psklf 出处: https://www.cnblogs.com/psklf/p/5 ...
- 3D游戏世界里的万向节锁
我们通常认为当前世界是一个三维的世界,用坐标系来表示就是XYZ,在3D游戏世界里也是用这样的三维坐标系来表示的. X代表水平坐标,Y代表垂直坐标,Z代表的是由屏幕往里的一个深度坐标,也就是垂直于屏幕的 ...
最新文章
- eclipse提示jre_给新手 Java 开发者的 7 点提示 | Linux 中国
- Python 21 Flask(二)上下文管理详解
- 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
- haiyang457 原创软件安装包代表作集合电子书
- APP抓链接工具(Fiddler版)
- 阿里展示首个IDC智能机器人 实现人机合作
- Autograd看这一篇就够了!
- New Concept English three(13)
- 《高翔视觉slam十四讲》学习笔记 第九讲 后端
- 天空盒 Skybox
- LPDDR4 layout instruction
- lambda函数(配合map函数)以及[x for x in]的超详细解释(实例+原理)
- 倍福TwinCAT3导入TwinCAT2项目的方法
- 抓饭直播开拓新体育文化,让运动无限精彩
- C#FTP对文件的操作
- 【分享】北京社保查询API
- 【2022秋招】IC设计/FPGA开发秋招经历总结
- ppt打印铺满纸张时的设置方法
- python:print函数打印空行
- CS专业本科期间最重要的能力是什么?