计算机图形学GAMES101(三)变换(模型、视图、投影)

补充内容

Rθ是逆时针方向旋转的矩阵
R是顺时针方向旋转的矩阵
可以发现RθT=Rθ-1 ,像这样的矩阵叫做正交矩阵。以后如果要求往相反的方向旋转相同角度的变换(R),只需要求正向旋转的矩阵然后转置就可以了
计算机图形学GAMES101(三)变换(模型、视图、投影)_第1张图片
本节涉及内容:
计算机图形学GAMES101(三)变换(模型、视图、投影)_第2张图片
仿射变换:线性变换+平移

三维空间中的变换矩阵格式:
计算机图形学GAMES101(三)变换(模型、视图、投影)_第3张图片
计算机图形学GAMES101(三)变换(模型、视图、投影)_第4张图片
计算机图形学GAMES101(三)变换(模型、视图、投影)_第5张图片

3D旋转

任意一个旋转都可以被分解为绕着X,Y,Z轴的旋转 即:
在这里插入图片描述
α β γ这三个角叫做欧拉角(Euler angles)

罗德里格斯公式

该公式将解决了绕着任意方向的旋转
表示绕着向量n旋转α°可以使用下面这个公式。
计算机图形学GAMES101(三)变换(模型、视图、投影)_第6张图片
变换的最终目的是让三维空间的物体变为二维空间的一张照片。这样才能在电脑上面展示出来。

怎么理解模型、视图、投影变换

我们拍一张照片需要摆动作(模型变换)
动作摆好后,需要找一个好的拍摄角度(视图变换)
拍照 (投影变换,将三维物体投影到二维的平面上面)

怎么去定义视图变换

计算机图形学GAMES101(三)变换(模型、视图、投影)_第7张图片
想要唯一的确定一个视角,首先需要定义相机在什么位置e(x,y,z),定义了相机的位置之后需要定义相机的朝向 g ⃗ \vec g g ,确定朝向后相机仍可以绕着 g ⃗ \vec g g 旋转,所以还需要一个 t ⃗ \vec t t 来确定相机的向上方向,用来确定图片哪个方向是上方。

如果摄像机和场景中所有的东西一起移动的话,那么整个场景在摄像机中的画面还是相对保持不变。
一般情况下相机的位置位于原点,相机永远朝向-Z方向,相机的向上方向为Y方向。
这样图形变换的时候视角不需要改变只改变物体的位置即可。
计算机图形学GAMES101(三)变换(模型、视图、投影)_第8张图片

现在需要将一个不在标准位置的视角变为标准位置

计算机图形学GAMES101(三)变换(模型、视图、投影)_第9张图片
变为
计算机图形学GAMES101(三)变换(模型、视图、投影)_第10张图片
那么我们需要做以下操作
计算机图形学GAMES101(三)变换(模型、视图、投影)_第11张图片
首先需要将视图位置e移到原点
计算机图形学GAMES101(三)变换(模型、视图、投影)_第12张图片
考虑到要将g旋转到-Z,t旋转到Y,(g x t)旋转到X比较难,所以先求其逆变换,然后通过正交矩阵的性质求原矩阵(RT=R-1)。
其逆变换就是
在这里插入图片描述
计算机图形学GAMES101(三)变换(模型、视图、投影)_第13张图片

利用RT=R-1求得
计算机图形学GAMES101(三)变换(模型、视图、投影)_第14张图片
至此就求出来视图变换得矩阵
计算机图形学GAMES101(三)变换(模型、视图、投影)_第15张图片

投影

正交投影:无论观看者在哪里,物体大小维持不变。没有近大远小,正交投影的视图是一个平面,所以物体大小不变,只是映射到一个平面上。
透视投影:近大远小,透视投影的视图是一个点,所以会改变物体大小,与我们日常习惯相符。
计算机图形学GAMES101(三)变换(模型、视图、投影)_第16张图片

正交投影

计算机中正交投影对于一个物体的处理过程
我们要投影的立方体左(l) 右(r)是在x轴的值
我们要投影的立方体下(b)上(t)是在y轴的值
我们要投影的立方体远(f)近(n)是在z轴的值

1、将物体中心点平移到原点
2、将其缩放成一个标准 111 的立方体
计算机图形学GAMES101(三)变换(模型、视图、投影)_第17张图片
计算过程:
只需要乘以矩阵Mortho即可
计算机图形学GAMES101(三)变换(模型、视图、投影)_第18张图片

透视投影

步骤

1、first “squish” the frustum into a cuboid (n->n,f->f)(Mpersp->ottho
首先把“截锥”挤压成一个长方体(n->n,f->f) 得到矩阵Mpersp->ottho
2、Do orthographic projection
做正交投影,即Mortho*Mpersp->ottho
计算机图形学GAMES101(三)变换(模型、视图、投影)_第19张图片

怎么去挤压

挤压得实质就是求一个挤压矩阵Mpersp->ottho
红色的两个三角形形成一对相似三角形
计算机图形学GAMES101(三)变换(模型、视图、投影)_第20张图片
挤压x和y变为:
计算机图形学GAMES101(三)变换(模型、视图、投影)_第21张图片
使用齐次坐标表示并且写成矩阵乘法的形式
计算机图形学GAMES101(三)变换(模型、视图、投影)_第22张图片
下面可以通过矩阵乘法反推出Mpersp->ottho
计算机图形学GAMES101(三)变换(模型、视图、投影)_第23张图片
Mpersp->ottho的最终结果:
计算机图形学GAMES101(三)变换(模型、视图、投影)_第24张图片
得到Mpersp->ottho后只要再做一次正交投影就可以完成透视投影了
Mpersp为透视投影的变换矩阵
在这里插入图片描述

你可能感兴趣的:(计算机图形学,矩阵,线性代数,几何学,图形学,游戏开发)