数学知识储备
向量
来自:02_Review Of Linear Algebra (yuque.com)
点乘
点乘在图形学中的应用
找到两个方向之间的夹角

找到一个向量投影到另一个向量上是哪样的
计算两个向量的方向(是接近还是远离)——向量相向还是远离
判定高光范围,从1(重合)-0(垂直)–1(完全远离)
关于前与后
叉乘
找到两个方向之间的夹角

判断向量a在向量b的左右
判断点在三角形的内侧还是外侧
应用案例
Unity精华☀️点乘、叉乘终极教程:用《小小梦魇》讲解这个面试题~-腾讯云开发者社区-腾讯云 (tencent.com)
矩阵
第二节总结
这节课主要是对线性代数中向量和矩阵的复习,总体来说难度不大。
1.向量主要是其点乘和叉乘的两种乘法。
- 点乘能够用于计算向量之间的投影和向量之间的夹角,能够判断两向量是否相近(菲涅尔效果)
- 而向量投影主要能测量两个方向的距离、分解向量以及确定向前/向后等,这些特性能够运用到确定直角坐标系上(即确定基坐标,就是确定一个基准的感觉)
- 叉乘能够用于确定向量之间的位置关系,左右、内外等。
- 确定内外在后续光栅化用的会很多,而确定左右的方向好像没有提及运用??后续有涉及到的话在回来补坑。
2.矩阵则是其乘法计算的一些计算方法。
- 计算机的图形信息基本都是用矩阵存储的,信息与信息的计算后续也会涉及。这里闫老师主要是稍微复习了一下。
变换
2D(二维)变换

缩放变换中,没有平移,因此最后一列头两个数是00。
旋转变换中,平移和缩放同理。
平移变换中,没有经过线性变换,左上角是单位矩阵1001,有平移因此最后一列头两个数是tx ty。
3D变换
三维空间的变换,可以类比二维的。
注意区别,三维的点和向量增加一个数(升维)后,并不是四元数,四元数是专门用来表示旋转的。

- 再次使用齐次坐标
欧拉角
任意的一个旋转,都可以写成绕x、y、z旋转的组合。
三个轴旋转的旋转角,称为欧拉角。
四元数
四元数是为了给旋转做差值才引入的。
- 假设一个旋转矩阵是旋转15°,另一个是旋转25°。如果将两个矩阵加起来求平均,结果并不是20°。
- 这是因为旋转矩阵不适合做差值。
万向锁、欧拉角、四元数
Unity精华☀️一、从旋转到万向锁之:Unity的旋转-腾讯云开发者社区-腾讯云 (tencent.com)
Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!-腾讯云开发者社区-腾讯云 (tencent.com)
Unity精华☀️三、四元数(Quaternion)解决万向锁-腾讯云开发者社区-腾讯云 (tencent.com)
第三节总结
今天讲的是各种变换,前面所有的变换都是以2D为例的,3D其实也是同理。
缩放、对称、旋转等这些变换,能够直接用矩阵乘以向量的形式表示,称为线性变换。
平移不能以矩阵乘以向量表示,并不是平移变换。其形式是矩阵乘以向量加上一个矩阵,可以称之为仿射变换。
如果将平移看作特殊的变化,那又太过麻烦。为了让所有的变换具有统一性,引入了齐次坐标的知识。
齐次坐标能够通过加一个数(升维)的方式,通过齐次坐标来表示仿射变换。其次坐标也可以表示线性变换。
因此,能够用齐次坐标的方式,将所有的变换转变成矩阵与向量的形式。
将单一的变换累加,就是组合变换。组合变换中,变换的顺序很重要。
在组合变换中发现,先将所有的变换矩阵相乘,还是能得到一个矩阵,这说明任何复杂的变换都能用一个矩阵来表示。
第四节总结
二维三维补充
今天先是对之前缩放、平移和旋转等这些变换在二维、三维上的一些补充。
二维
二维上是对旋转矩阵的补充。
- 求物体旋转-θ时的旋转矩阵,发现R-θ = Rθ-T
- 这里引出性质(理论上二维三维都通用):在旋转里,旋转θ的旋转矩阵的转置 等于 旋转θ的旋转矩阵的逆。(数学上的正交矩阵)
三维
三维上时对缩放、平移和旋转变换的补充。
- 三维的缩放和平移变换很简单,原理和二维的一致。
- 三维的旋转变换,其会有绕x、y、z轴三个方向旋转的情况,对应的旋转矩阵都会不一样。
- x和z的旋转矩阵分析方法一致。
- 绕y轴的旋转矩阵比较特殊,其值是x 、y的旋转矩阵的负值。这是因为在右手系下,x叉乘y是-z。
- 此外,还提及了四元数。由于矩阵不适合做差值,因此会用四元数。
观测变换
课上的重点是观测变换。观测变换有模型、视图、投影三种(简称MVP变换)
个人理解模型变换像是“建模”这种,这里就不需要讨论。
视图变换
视图变换的主要原因是摄像机的摆放问题,抽象上来看,就是坐标系的建立和转换的问题。
- 通过定义,我们规定了一套标准的坐标系。但是摄像机自身的坐标系并不一定与标准坐标系重合,这个时候我们需要进行坐标系的转换(视图变换)。
- 视图变换时,要将视图(定义的摄像机的前后上下,原点,在Y上,看-Z)坐标轴通过平移、旋转等变换回到标准坐标系上。
- 视图坐标的X轴是通过y和z叉乘得到,要将一个叉乘旋转比较麻烦。因此可以反过来,让标准坐标系旋转到视图坐标系上。接着通过前面的正交矩阵性质(在旋转里,旋转θ的旋转矩阵的转置 等于 旋转θ的旋转矩阵的逆),能够求出旋转矩阵。
- 平移矩阵很简单,直接是原点的移动就可以得到
- 视图变换是先旋转,再平移。通过旋转矩阵和平移矩阵,就可以算出视图矩阵。
投影变换
投影变换是将三维的画面投影到一张二维图像上,有正交和透视两种方式。
正交变换
正交投影比较简单,平移变换加上缩放变换即可得到。同理正交矩阵也是通过平移矩阵和缩放矩阵就可以算出。
透视变换
透视投影比较复杂。
- 透视变换中为了不涉及坐标系之间的变换,引入了“挤压”的想法。透视投影做“挤压”投影,再做正交投影,就可以得到一张二维二维画像。
- “挤压”投影的“挤压”矩阵推导起来比较复杂,后半节课都在干这个事情。
- 总的来说,就是先利用相似三角形、变换点和原始点之间的关系和齐次方程的特性,得到出第三行以外的“挤压”矩阵值。
- 第三行通过观察到的两个信息(挤压时近平面和远平面点的关系),带入特殊值解方程推出来的。
- 算出“挤压”矩阵后,根据前面的正交矩阵,就能得到透视矩阵。
第五节总结
今天主要讲的是光栅化的知识。
在上节课中,通过观测变换(视图变换和投影变换),可以将三维的物体转化成二维的图像数据信息。
这节课就是需要将这个信息“画”出来,这就叫做光栅化。
理论上无论是怎样的图形,通过光栅化都能“画”在屏幕中。任何图形都可以分解成由三角形组成,因此课上主要以三角形为例,讲了三角形的光栅化。
三角形光栅化中,最简单的方式就是采样。采样简单来说就是通过一个函数,将图形的位置信息传入,即可得到函数值,这个函数值个人理解就是在计算机中用于“画”的像素信息。
但在实际应用中,光栅化会出现锯齿、走样的问题,下节课的主要目的,就是抗锯齿、防走样。
第六节总结
前提:图形学中将一幅图像看成一个二维函数。
频率、频谱
频率用来表示波变化的快慢。
一个函数(图像)经过傅里叶变换后,能够得到其频谱。
- 函数f通过变换能够变成另一个函数F,f通过逆变换也能够变回F。变换过程就叫做傅里叶变换或逆傅里叶变换。
- 频谱是图像(信号)在不同频率的样子,是频率的分布曲线。
- 在频谱中,每间隔一段就取一个数据点,这个取点的过程叫做采样。
- 同样的一个采样方法,采用两种不同的频率的函数得到的结果,我们无法区分它们,这叫做走样
滤波
将某一范围内的特定频率去掉的过程称为滤波。
个人理解滤波其实就是一个函数,将图像(信号、函数)与这个滤波函数叠加,就能实现实现滤波的效果。
高通滤波就是能够去掉低频频段的函数(信号)。图像增加高频滤波后,图像边界将变得明显。
同理,低通滤波就是去掉高频频段的函数(信号)。
除此之外还有一些特定频段的滤波。图像增加低频滤波后,图像将变得模糊。
卷积
卷积在图形学中就是加权求平均。
卷积操作就是一个低通滤波器。
- 将某一种滤波作用在一个信号上,进行卷积操作(点乘加权平均),得到一个新的信号。
- 这是图形学简化后的定义,不是数学上的定义
卷积定理主要是证明了时域的卷积 = 频域的乘积,反之亦然。
- 从例子上看,就是一个图像进行卷积操作后得到新的图像,在频域中就是一个频谱乘以卷积操作的频域得到一个新的频谱。
卷积盒可以看作是一个滤波器。
- 卷积盒box越大,边界越少,图像信息越来越少,图像越来越模糊。
频域中的定义
采样在频域中就是将频谱复制粘贴。
- 时域上函数相乘变成一系列的点。
- 对应到频域上,就是把原始的函数的频谱复制粘贴。
复制粘贴的频谱之间的间隔越小,频谱重叠在了一起(信号混在了一起)就是走样。
采样的越稀疏,采样的频率越小,对应频谱上就越密集(时域上的信号就会叠在一起)。
反走样
在采样之前做一个模糊(滤波)可以达到反走样的效果。
- 需要模糊的话需要做低通滤波。去掉高频,在频域的体现就是频谱覆盖的面会小,防止频谱重叠。
MSAA、FXAA和TAA都是做模糊一些技术。
- MSAA是增加像素的采样点,近似合理的覆盖率,从而达到模糊的效果。
- FXAA则是先采样,形成图像后,再利用图像匹配找到锯齿的部分,模糊处理后替换锯齿部分(但是会违背采样之前做一个模糊的理论,这样达不到很好的效果,优点是很快)
- TAA则是会复用上一帧的感知结果,相当于将MSAA的样本分布在时间上。
第七节总结
本节课讲的东西比起前面来说,难度直线下降!
今天主要讲着色,讲着色前补充了前面光栅化深度缓存的知识。
光栅化内容中,首先讲解了画家算法的思想。由于画家算法无法很好的满足计算机图形学的需求,因此引入深度缓存的概念。
- 每个导出的图像都有一张对应的深度图,这个深度图记录着所有像素的深度信息。
- 此外还讲了深度缓存算法的实现方法,其本质就是一个双重循环。
着色部分通过Blinn-Phong反色模型引入漫反射、高光等显示中光照的效果情况。
- 主要讲了物体漫反射中,光的能量问题。
- 着色点平面与光发现的角度可以得到着色点对光能量接收的情况。
- 光源与物体的距离可以得到着色点处光能量的发射状况。
- 通过光能量的接收和发射状况,我们就可以量化漫反射的能量。