课程地址
课程录像:GAMES101-现代计算机图形学入门-闫令琪
课程主页:GAMES101: 现代计算机图形学入门
本节PPT:GAMES101_Lecture_03、 GAMES101_Lecture_04
作业地址:往期作业汇总帖
1. 摘要
- 二维变换(旋转、缩放、错切)
- 齐次坐标
- 组合变换
2. 二维变换
- 缩放:将一张图片缩放倍,即所有组成该图片的像素点所表示的向量缩放倍。
- 数学形式:任意一点缩放之后为,即 = 。
- 矩阵形式:,其中为缩放矩阵,表示在 轴和 轴方向上都缩放倍。缩放矩阵也可以不均匀缩放,如表示在 轴方向上缩放倍,在 轴方向上缩放倍。
注:缩放矩阵的大小由向量的维度决定,维向量的缩放矩阵的大小为,其他变换矩阵亦同。
- 错切:简单的讲,错切变换就是将一个矩形变成一个平行四边形。假设现在有一个正方形,将正方形的一条边向水平方向向右移动,同时对边不动,左右两条边倾斜,这个变换就是错切变换。
- 数学形式:以上述为例,正方形在水平错切时,可以发现一个规律,所有点坐标的不变,只有在变,即错切只会影响同方向上的坐标。那么如下图所示,上边移动了,那么可以看到,随着的减小,坐标的水平平移量也越少,斜率为,平移量为,故 = 。
- 矩阵形式:
- 旋转:将一个图片以原点为中心,旋转 角度。此处跳过了旋转矩阵的推导,可自行度娘,或点击下方的油管链接学习推导过程。
- 数学形式:。
- 矩阵形式:
- 旋转矩阵推导: 油管链接(需梯子) 注:可以发现,以上几种变换用矩阵形式表示时,坐标的转换都可以只通过乘以一个矩阵来完成变换过程,那么这种变换统称为,线性变换。
3. 齐次坐标
介绍齐次坐标前,先了解一下平移变换。
- 平移变换:顾名思义,就是移动一张图片,坐标和坐标各加上一个常量。
- 数学形式:
- 矩阵形式: 可以看出,平移变换不能通过乘以一个矩阵的形式来实现,因此平移变换并不是线性变换。为了让平移矩阵可以像线性变换一样用一个矩阵来表示,而不是作为特例,接下来引入齐次坐标的概念。
- 定义:将一个维度加入到坐标的表示中。那么原本一个二维坐标,就变成了。
- 作用:将平移变换可以用一个矩阵表示。引入齐次坐标后,平移变换就可以表示为。并且加入齐次坐标以后,还可以加入齐次坐标后,还可以区分此坐标表示的是点还是向量。
- 二维中的点:
- 二维中的向量: 注:结合上方的平移矩阵来看,为1时,结果为;为0时,结果为。这里符合向量的性质:平移一个向量,向量不变,因为向量=方向+长度,平移向量不会影响其方向和长度,因此表示点,表示向量。此外,也符合点和向量通过加减操作转变成另一个点或向量。
- 作用:将平移变换可以用一个矩阵表示。引入齐次坐标后,平移变换就可以表示为。并且加入齐次坐标以后,还可以加入齐次坐标后,还可以区分此坐标表示的是点还是向量。
- 仿射变换:一个线性变换加上一个平移变换
-
矩阵形式:。
-
加入坐标:。 可以发现,加入齐次坐标后的变换矩阵的特性:矩阵的最后一行永远是,代表平移的部分是除最后一行的最后一列,其他部分则是原来的线性变换矩阵。
-
-
组合变换
前面提到的变换都是简单的单一变换,假设我们现在需要将一个图片同时进行平移和旋转两个操作,那么这个复杂一点的变换该如何进行表示呢?-
一个复杂的变换可以由多个简单的变换组成。
-
变换的顺序是很重要的,和矩阵乘法一样,顺序不同,得到的结果也不尽相同。 两中变换的矩阵形式分别是:
-
平移再旋转:
-
旋转再平移:
根据这两个矩阵,我们可以发现变换的顺序和对应变换矩阵相乘的顺序是相反的,同时也可以发现变换矩阵一直是的矩阵。根据结合律,将前面所有的变换矩阵先进行相乘可以得到一个的矩阵。这也表示我们只使用一个的矩阵就可以表示出一个很复杂的变换。同理,我们也可以将一个复杂的变换拆解成多个简单的变换去实现。
-
4. 三维变换
-
三维空间中的齐次坐标
-
点:
-
向量:
-
仿射变换:。
根据上方的几个式子,我们可以发现三维空间中的齐次坐标和仿射变换的矩阵形式与二维空间中的表示形式基本一致,特性是相同的。
-
-
旋转变换
三维空间的最简单的旋转就是按照三条轴进行旋转由上图可知,绕哪一条轴旋转时,那条轴的坐标不变,另外两条轴形成一个二维坐标系再采用旋转矩阵,但是我们会发现只有绕 轴旋转时,旋转的角度其实不是 ,而是。这是因为,而 才等于 。将一个变量绕轴顺时针旋转 ,这个是相对于坐标系而言的,在坐标系中就是逆时针旋转,而我们想要的就是坐标系,因此这里要旋转。
- 欧拉角
- 定义:将任意一个3D旋转变换分解成三个分别绕轴的简单旋转,这三个轴旋转变换的角度便是欧拉角。
- 罗德里格斯旋转公式: 是任意一条轴(需过原心),是要旋转的角度,是被旋转的向量
- 欧拉角
-
MVP变换
- 定义:MVP变换可以抽象成拍照的过程:1、摆好人和物;2、调整摄像头的角度、3、按下快门。这三步分别表示:模型变换(M)、视图变换(V)和投影变换(P)。
注: 模型变换就包括在三维空间中对物体进行线性变换和仿射变换。
-
视图变换 View/Camera transiformation
- 相机的定义:由位置、朝向和向上方向组成,同时假设相机和所有物体一起进行相同的运动,那么拍出来的画面一定是一样,因此为了简化操作,约定将相机固定在原心位置,同时朝向轴方向,轴方向向上。
-
视图矩阵
- 作用:将任意一个相机转换为我们约定的标准相机(在原心位置,朝向轴方向,轴方向向上)。
- 推导思想:
假设一个相机在点上,朝向 方向, 方向向上,将这样一个相机变换为标准相机可以分为这几步:1.移动至原点、2.将朝向旋转至方向、 3、将向上方向旋转至 方向、4、方向自然是 方向。 - 矩阵形式:
由上所述,视图变换可以分成先平移再旋转的变换,记为:。平移矩阵很简单,写为,然而旋转矩阵并不好写,这里我们可以通过逆向思维先求出从标准坐标系旋转至目标相机的旋转矩阵,即从旋转至。由矩阵的逆的性质 可知,变换和变换是两个相反的变换。由此可知,。
注:此处的矩阵并不是之前提及的旋转矩阵,而是基变换矩阵,相机的旋转可以理解为坐标系的转换。原本坐标系的转换会改变空间内所有物体的位置表示,那么就像之前提到的,为了物体和相机的相对位置不变(位置表示),物体也需要进行一次跟相机相同的变换。另一种理解是,物体位置保持不变,我们先变换相机空间的位置,然后再将所有物体进行一次相同的变换以保持同步。 推导过程: 基变换
-
投影变换 Projection transiformation
-
正交投影
- 性质:没有近大远小的现象。
- 数学理解:假设有一个空间和一个相机(点),那么从这个相机看相这个空间,相机看到的视野范围就会是一个四棱锥,我们再取一个四棱锥上的一个面作为屏幕,将相机放在无限远同时屏幕又离四棱锥的底面足够近,那么屏幕和四棱锥底面构成的立体图形就近似与长方体,此时再将空间内的物体投影至屏幕。
- 投影过程:1、在空间中定义一个立方体(视野范围),这个立方体有六个参数上下、左右和远近,分别是这个立方体在三条轴上的最大最小值;2、将立方体的中心平移至原心;3、将立方体缩放成一个的正方体(为了方便后续操作的标准规定)。
注:由于我们使用的是右手坐标系,这里的远近是相对与轴方向的,所以在数值表示上,越远数值越小。
-
正交矩阵:先平移再缩放。
注: 是因为之前提到的, 在数值上;缩放至 2,是因为正方体边长为 2。
-
透视投影
- 性质:近大远小,平行线不再平行。
- 数学理解:和正交投影相似,不同的是相机不再是无限远了,同时屏幕和四棱锥底面构成的立体图形是一个四棱台,远处的物体投影时,会被压缩,进而导致近大远小。
- 投影过程:1、在空间中定义一个四棱台(视野范围),这里只需要两个参数远近来标识棱台上下面的位置;2、将四棱台向中心轴方向压缩成一个立方体;3、对立方体做一次正交投影。
- 投影矩阵:根据投影过程,可知投影矩阵是先压缩再正交投影,正交投影我们已经知道了,那么现在就需要求出压缩的矩阵。
- 推导过程:首先我们需要先确定空间中哪些点不变哪些点会变,由于是沿中心轴方向压缩,所以中心轴上的点不变,且近平面和远平面上的点的不变,空间中其他的点都不知道。确定之后,我们任取空间中的一点,将此点连接至原点与近平面相交于,在平面上可以发现,(相似三角形),同理。那么我们就知道了压缩后 变为。
- 演算过程:经过上一步的推导,我们已经知道了是如何变化的,假设为压缩矩阵,那么 ,根据矩阵相乘的规律可知 ,接下来只需要演算出第三列的就可以得到完整的压缩矩阵。首先找出两个始终不变的向量,分别是近平面和远平面上的向量和。将带入,得,由此可知当时,,且与无关,故可设矩阵第三行为,代入可得。同理将代入,可得。联立方程得。故,。
- 投影矩阵:先进行压缩再执行一次正交投影 ,因此。 投影矩阵补充说明:由于投影矩阵应用的相机视角是一个四棱锥,因此在正交投影中的六个参数是定义长方体的,并不能直接拿到投影矩阵中使用。我们同样也可以用四参数来表示投影矩阵中的四棱台,分别是垂直可视角度、宽高比(近平面)、近平面的距离、远平面的距离。接下来,只要将分别用这四个参数进行表示,就可以
-