当前课程知识点:游戏程序设计 > 第三章 《《三维几何学基础》 》 > 3.4 四元数 > 3.4 四元数
四元数呢
它是一个超复数
它是用通过一个十部和三个元素组成
它可以通过ijk这个方式来表示
然后unity
也提供了一个四元数的类
用来我们处理旋转
那么四元数我们在unity里面
或者是在我们游戏里面用的
主要我们可以理解为
它是一个可以表示出
沿任意轴旋转旋转的一个一个
沿任意轴旋转的一个方式
它不像刚才我们提到了欧拉角的旋转方式
因为欧拉角呢
在旋转的旋转的过程中会有很多弊端
比如著名的像那个万象解锁这种问题
就是因为我们欧拉角旋转
它可以有各种任意方向变换的一个顺序
也就是说
假设我们是一个SY自己的一个旋转
那么它可以是先X轴在Y轴
在Z轴的旋转也可以先Y轴
在X轴在Z轴
不同的旋转方式会得到不同的结果
并不能得到统一
但是四元数呢
它很好的去描述出了这个我们旋转需求
也就是说它可以避免了
像万象解锁的那种需求
那种问题万象解锁呢
也就是说
当我们一个物体
沿着各个轴进行旋转的时候
当三
三个轴的旋转角度全为九十度的时候
它不一定能达到我们预期的效果
但是我们四元数呢
它是一个沿着轴向的一个旋转
我们可以直接通过四元数定义我们的轴向
以及它的旋转角度
就可以达到我们要旋转的要求
这也是四元数可以解决
欧拉角不能解决了一些问题
四元数的乘法
和我们的矩阵乘法其实是是类似的
它也不满足交换律
也是可满足结合律
这个是一个四元数的一个推导过程
然后四元数的摸和四元数的归一化
都和那个我们刚才提到的向量是一样的
它也是对unity也会提供它相应的方法
去得到一个归一化的四元数
然后这是四元数的的旋转
四元数主要是描述了一个就像刚才我说的
四元数主要是描述了一个
旋转轴一起旋转角度
在游戏里面
59
unity这个它里面也是这么描述的
也提供了相应的方法去描述四元数的旋转
也就是说
四元数它是通过定义
它可以定义为一个一个任意一个轴
然后以以任意一个旋转角度
沿着任意一个旋转角度去旋转
而不是像欧拉角那样
它是先沿着某一个轴旋转多少角度
再沿着某一个轴继续旋转
而是直接沿着任意一个轴去旋转多少角度
四元数的差值我们分为两种
一个是线性插值
一个是球面差值
四元数的差值呢
它本身两种插值方式
得到的结果是不相同的
因为四元数的差值呢
它如果线性插值的话
我们是不保证它的长度变换的
但是球面差值是可以保证它的长度变换的
这也是两个最大的区别
四元数的差值主要我们用到四元数
大量用到四元数
在游戏中用到了骨骼动画的运算
给骨骼动画中
它的旋转是占大多数运算过程的
那么如果是简单的旋转的
如果两个骨骼动画的之间的数据差值呢
如果我们用线性插值的话就很容易引起
因为它的长度是不保证
会引起整个我们骨骼动画
在游戏中运算的一个形变
那么
四元数可以很好的通过这个球面差值
来解决这个问题
也就是说
这两个骨骼动画中两个矩阵在旋转的时候
那么他们通过它的这个
球面差值就可以保证长度的变换
也就是说
不会造成我们骨骼动画一个模型的形变
四元数这边的也给大家留一个
小一点的作业也就是说
我们在游戏中
四元数以欧拉角是可以互换的
可以说用大家可以去推导一下
四元数与欧拉角的一个转换过程
以及欧拉角到四元数的一个转换过程
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题