[Sugar]
《游戏引擎架构》阅读笔记 第一部分第4章
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
圈层
工具
返回腾讯云官网
[Sugar]
首页
学习
活动
专区
圈层
工具
返回腾讯云官网
社区首页
>
专栏
>
《游戏引擎架构》阅读笔记 第一部分第4章
《游戏引擎架构》阅读笔记 第一部分第4章
[Sugar]
关注
发布于 2022-10-28 15:04:09
发布于 2022-10-28 15:04:09
368
0
举报
文章被收录于专栏:
U3D技术分享
U3D技术分享
本系列博客为《游戏引擎架构》一书的阅读笔记,旨在精炼相关内容知识点,记录笔记,以及根据目前(2022年)的行业技术制作相关补充总结。
本书籍无硬性阅读门槛,但推荐拥有一定线性代数,高等数学以及编程基础,最好为制作过完整的小型游戏demo再来阅读。
本系列博客会记录知识点在书中出现的具体位置。并约定(Pa b),其中a为书籍中的页数,b为从上往下数的段落号,如有lastb字样则为从下往上数第b段。
本系列博客会约定用【】来区别本人所书写的与书中观点不一致或者未提及的观点,该部分观点受限于个人以及当前时代的视角所限,请谨慎阅读。
再次重申,请支持正版。
目录
第4章 游戏所需的三维数学
4.1 在二维中解决三维问题
4.2 点和矢量
4.3 矩阵
4.4 四元数
4.5 比较各种旋转表达方式
4.6 其他数学对象
4.7 硬件加速的SIMD运算
4.8 产生随机数
第4章 游戏所需的三维数学
4.1 在二维中解决三维问题
P125 last2
4.2 点和矢量
点和笛卡尔坐标,左右手坐标系,矢量,矢量运算,点和矢量的线性插值(P126-138)
用点积来判断方向(P134 last)
4.3 矩阵
矩阵便于表示线性变换:平移、旋转、缩放等。(P139 1)
矩阵乘法可以计算点和矢量的缩放、旋转等变换。(P139 last2)
齐次坐标进行位移等计算。(P142 4)
基础变换矩阵:平移(P144 last2)、旋转(P145 1)缩放(P146 2)
坐标空间:模型空间(P417 last2)、世界空间(P149 1)、观察空间(P150 1)
基的变换:把物体的位置、定向和缩放从某个坐标系转换至另一个坐标系。构建改变基的矩阵(P151 2)
4.4 四元数
四元数作用:简化运算
四元数视为三维旋转(P156 last)
四元数旋转矢量(P159 1)
4.5 比较各种旋转表达方式
欧拉角:由3个标量组成:偏航角、俯仰角、滚动角。优点:简单小巧直观。缺点:任意方向轴旋转不能轻易插值,优万向节死锁情况,绕轴旋转先后次序对结果有差别,对于要旋转的物体依赖从轴和方向的映射,没有额外信息就无法得知对应哪个轴的旋转(P164 last2)
3X3矩阵:优点:独一无二地表达任意旋转,旋转可通过矩阵乘法直接计算。缺点:不直观,存储空间大。(P165 4)
轴角:以一个单位矢量定义的旋转轴,再加上一个标量定义的旋转角。优点:直观,紧凑节省空间。缺点:不能简单地进行插值,轴角形式旋转不能直接施加于点或矢量,必须先转换为矩阵或四元数。(P165 last2)
四元数:和轴角相似,区别在于旋转轴矢量的长度为旋转半角的正弦,并且其第4分量不是旋转角而是旋转半角的余弦。好处:能串接旋转,并直接施加于点和矢量。可以进行旋转插值。只需要存储4个浮点数。
SQT变换:四元数结合平移矢量和缩放因子。SQT变换广泛地应用在计算机动画中,因为其体积较小(统一缩放需要8个浮点数,非统一需要10个,相对4×3矩阵则需要12个),并且SQT变换容易插值。插值时,平移矢量和缩放因子采用LERP,四元数则可使用LERP或SLERP。(P166 last2)
对偶四元数:对偶四元数四个分量为对偶数。(P167 1)
旋转和自由度(P167 4)
4.6 其他数学对象
直线,射线,线段
球体
平面:点法式
轴对齐包围盒:AABB;定向包围盒:OBB(P171)
平截头体:(P171 last)
凸多面体区域
4.7 硬件加速的SIMD运算
1994年,英特尔(Intel)首次把多媒体扩展(multimedia extension,MMX)指令集进奔腾CPU产品线中。把多个8/16/32位整数载入特设的64位MMX寄存器后,MMX指令就能对那些寄存器进行SIMD运算。英特尔陆续加入多个版本的扩展指令集,称为单指令数据流扩展(streaming SIMD extensions,SSE),其中第一个SSE版本出现于奔腾III处器。SSE指令采用128位寄存器,可储存整数或IEEE浮点数。
游戏引擎中最常用的SSE模式为32位浮点数打包模式(packed 32-bit floating-pointmode)。此模式中,4个32位float值被打包进单个128位寄存器,单个指令可对4对浮点数进行并行运算,如加法或乘法。当要计算四元素矢量和4×4矩阵相乘,这个模式正合我们所需!(P173)
SSE寄存器(P173)
_m128数据类型:此数据类型可以声明全局变量、自动变量和类或结构体的成员变量。大多数情况下,此数据类型的变量会存储于内存中,但在计算之时_m128的值会直接在CPU的SSE寄存器中运用43。(P175 last)
4.8 产生随机数
线性同余产生器:LCG并不能产生特别高质量的伪随机序列。若给定相同的初始种子值,则产生的序列会完全相同。LCG产生的序列并不符合一些广泛接受的准则,比如长周期、高低位有接近的长周期、产生的值在序列上和空间上都无关联性。(P180 2)
梅森旋转算法:有庞大周期(4.3×10^6001),高阶的均匀分布维度,生成快速。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2022年10月12日,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
单片机
编程算法
游戏
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
单片机
编程算法
游戏
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
目录
第4章 游戏所需的三维数学
4.1 在二维中解决三维问题
4.2 点和矢量
4.3 矩阵
4.4 四元数
4.5 比较各种旋转表达方式
4.6 其他数学对象
4.7 硬件加速的SIMD运算
4.8 产生随机数
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐