守正笃实,久久为功。

欧拉角的详解

关于旋转永远是做游戏的难点和混乱点。我们知道表示一个旋转有多种方式,简单的欧拉角,复杂点的四元数,再复杂点的矩阵。之前接触unity可以用四元数和欧拉角两种方式表示旋转,最近一直研究虚幻引擎,目前只看到了欧拉角这一种旋转方式。

欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度。这样的话,很容易想到,同样的一个三维向量,代表了绕x,y,z的旋转值,先进行那个旋转是否对结果有影响呢?显然是有影响的,可以拿着你的手机试一下,不同的旋转顺序会代表不同的旋转结果。所以,一般引擎都会规定自己的旋转顺序。 
下面三张动图形象的表示了欧拉角的旋转方式。第一张是绕x轴旋转pitch,第二张绕y轴旋转yaw,第三张是绕z轴旋转roll。

这里写图片描述这里写图片描述这里写图片描述

绕三个轴的旋转值pitch,yaw,roll来自航空界的叫法,翻译为俯仰角,偏航角,翻滚角,非常形象。它们不一定如上所述,一定分别代表绕x,y,z的旋转值。 
从英文意思出发,roll:是卷;滚动,转动;辗的意思; 
yaw是(火箭、飞机、宇宙飞船等)偏航的意思; 
pitch是倾斜;投掷;搭帐篷;坠落的意思; 
所以,

  roll:是翻滚的意思是,就是绕着机身所在的那个轴 a (z);

  yaw:是偏航的意思,偏航就是绕着重力方向为轴 y ;

  pitch:是偏航俯仰的意思,即倾斜、坠落的意思,坠落就是以翅膀所在的直线为轴(x)发生旋转。

另外值得注意的是,pitch值是不能超过90度,这里牵扯到了万向锁的知识,不再多说,网上很多讨论。

下面这张图是以摄像机的角度来阐述欧拉角的,可以加深理解。可以看到,pitch,yaw,roll在这里并不是常见的代表绕x,y,z的旋转值。 

这里写图片描述

posted @ 2020-04-18 22:06  cainiao_3521  阅读(1216)  评论(0编辑  收藏  举报