unity中欧拉角用的是heading - pitch -bank系统(zxy惯性空间旋转系统):
当认为旋转顺序是zxy时,是相对于惯性坐标系旋转。
当认为旋转顺序是yxz时,是相对于物体坐标系旋转。 另外一种常用的欧拉角系统是roll - pitch - yaw系统(zxy物体空间旋转系统),对于此系统:
当认为旋转顺序是zxy时,是相对于物体坐标系旋转。
当认为旋转顺序是yxz时,是相对于惯性坐标系旋转。 ----
万向锁: http://player.youku.com/player.php/sid/XNzkyOTIyMTI=/v.swf

----
如下图,将x轴作为y轴的子节点,将z轴作为x轴的子节点。那么此装置属于哪种欧拉角系统?

判断方法1:

假设对此系统按yxz的顺序进行旋转,则:
1,首先绕y轴旋转,子节点x,z轴会发生变化。
2,再绕x轴旋转,由于上一步中x已发生变化,所以是绕变化后的x轴旋转。由于z轴是x轴子节点,所以z轴发生变化。
3,再绕z轴旋转,由于前两步中z轴已发生变化,所以是绕变化后的z轴旋转。
由此可见,按yxz顺序旋转的话,每一步都是在上一步变化后的基础上进行旋转,即每一步都是相对于当前物体坐标系进行旋转,所以此系统是“yxz物体空间旋转系统”,即正是unity所采用的欧拉角系统。
判断方法2:

假设对此系统按zxy的顺序进行旋转,则:

1,首先绕z轴进行旋转,由于z轴是终端节点,所以x轴和y轴都不会发生变化。

2,再绕x轴进行旋转,由于x轴在上一步旋转中没有发生变化,所以就等价于绕惯性空间的x轴旋转。由于y轴是x轴父节点,所以y轴不会发生变化。

3,再绕y轴进行旋转,由于y轴在上一步旋转中没有发生变化,所以就等价于绕惯性空间的y轴旋转。

由此可见,按zxy顺序旋转的话,每一步都等价于相对于惯性坐标系进行旋转,所以此系统是“zxy惯性空间旋转系统”,即正是unity所采用的欧拉角系统。
----

下图列举出各种旋转顺序的“物体空间旋转系统”的万向锁情况:

可见,万向锁就是:在指定旋转顺序下,绕第二轴旋转正或负90至使一三两轴平行或反向平行,一三两轴成了等效轴,于是物体由原来的可绕三个轴旋转变为只能绕两个轴旋转,丢失了一个旋转自由度。

另外还还可以看到,当发生万向锁时,rotation所对应的欧拉角不唯一,如果一三两轴平行,则绕第一轴的旋转角A1和绕第三轴的旋转角A3之和不变即可保证rotation不变;如果一三两轴反向平行,则只要A1和A3之差不变,即可保证rotation不变。

unity中的欧拉角的更多相关文章

  1. Unity3D中的欧拉角的理解

    先贴一个图: 游戏物体的属性视图中调整的角度就是欧拉角啦.. 如果细心,就会发现,单独去调整xyz的时候它并不是按照世界坐标系中的xyz轴来实施旋转的,它表示的是旋转的欧拉角. 什么是欧拉角呢?请看这 ...

  2. maya和Unity中的坐标系旋转

    maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转. 比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上 ...

  3. 【Unity编程】Unity中的欧拉旋转

    欧拉角的定义 在写这篇博客之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自维基百科的定义,我这里也引述一下: 维基百科定义 莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向.对于任何参 ...

  4. 【Unity编程】欧拉角与万向节死锁(图文版)

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 万向节死锁(Gimbal Lock)问题 上文中曾经说过,欧拉旋转的顺规和轴向定义 ...

  5. 【Unity编程】Unity中关于四元数的API详解

    本文为博主原创文章,欢迎转载,请保留出处:http://blog.csdn.net/andrewfan Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计 ...

  6. unity中camera摄像头控制详解

    目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...

  7. Unity中使用Attribute

    Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...

  8. 在Unity中使用UGUI修改Mesh绘制几何图形

    在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...

  9. Unity中使用WebView

    Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...

随机推荐

  1. 深入分析:Fragment与Activity交互的几种方式(一,使用Handler)

    这里我不再详细介绍那写比较常规的方式,例如静态变量,静态方法,持久化,application全局变量,收发广播等等. 首先我们来介绍使用Handler来实现Fragment与Activity 的交互. ...

  2. IndexOf() LastIndexOf() Contains() StartsWith() EndsWith()方法比较

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  3. Smart210学习记录-----中断

    1. OVERVIEW OF VECTORED INTERRUPT CONTROLLER(概述向量中断控制器) 主要有4个VIC,4个TZIC还有一个很特殊的ARM PrimeCell PL192.主 ...

  4. MyBatis日期有坑

    使用MyBatis时,可能会遇到日期格式的时间段问题,当数据库的时间为DATE类型时,MyBatis的jdbcType应该使用DATE,否则,有时间会出现莫名的数据找不到的问题,具体原因,可以查看源码 ...

  5. day10_面向对象第五天

    1.包(掌握) 1.概念(掌握)       包就是文件夹,用于区分相同的类名 2.声明格式      package 包名1.包名2-.;      package:是个关键字3.带包的类的编译和运 ...

  6. 【转】eclipse 安装插件

    eclipse安装插件或许没有什么多的可讲,但对于刚刚接触eclipse这款IDE的新手来说,可能还是会有点棘手! eclipse安装插件大致三种方法: 方法一:自身安装器 使用eclipse的Sof ...

  7. C# 入门篇之listview用法

    在用listview,经常对各种属性都不了解,用完了,下次又忘:写个随笔记记. 看到别人已经有总结很详细的,就直接转过来了,可能中间会有一些自己加的. ------------------------ ...

  8. 支持 Firefox、Chrome 等主流浏览器的全站变灰 CSS 代码

    <style> html{ -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grays ...

  9. MapReduce 计算模型

    前言 本文讲解Hadoop中的编程及计算模型MapReduce,并将给出在MapReduce模型下编程的基本套路. 模型架构 在Hadoop中,用于执行计算任务(MapReduce任务)的机器有两个角 ...

  10. bedtools 每天都会用到的工具

    详细的使用说明:http://bedtools.readthedocs.org/en/latest/ Collectively, the bedtools utilities are a swiss- ...