【GAMES101】学习记录1-Transformation

前言

早先接触了一些计算机图形学的知识,记了一些重要的知识点,但由于课业繁忙,好多课内实验报告要写,搁置了一段时间,现在重新整理出来,方便自己复习。如有错误,欢迎斧正。

这里先整理出GAMES101-Lecture-01到05的内容。
GAMES101教程视频传送门

记录

前面几节课讲的内容大概是将模型投影到平面上的需要哪些操作,具体需要经过MVP变换和视口变换。

在计算机中,变换的操作被抽象为对矩阵的运算,如下。

MVP变换

MVP变换,即Model(模型)-View(视图)-Projection(投影)三个变换。
经历MVP变换后,三维空间中的物体会被投影到二维平面上。
具体解释请看下文。

Model变换

Model变换用于调整物体模型的大小、旋转、位置
经历Model变换后,物体模型会被调整到对应位置。

一般来说,Model变换所需矩阵model_matrix(下文均为类似命名)包含了三类操作,分别用于调整模型的位置、大小和旋转。
model_scale_matrix
model_rotation_matrix:注意,2D模型若未声明旋转方向,默认向逆时针方向旋转
model_translation_matrix

image

model_matrix即为这三类矩阵叉乘所得矩阵。

值得一提的是,叉乘无交换律,模型会按照叉乘的运算顺序(从右到左)依次执行相应变换。

View变换

View变换用于调整摄像机的位置与旋转,使其与我们预想的摄像机的三条坐标轴相重合
经历View变换后,摄像机会被调整到对应位置。
下图说得很清楚,不再解释。

image
image

Projection变换

正如其名,Projection变换用于把空间中的模型顺着某个方向投影,得到投影平面

要注意:Projection变换有两种,一种是Orthographic Projection(正交投影),一种是Perspective Projection(透视投影)。

Orthographic Projection

先来讲较简单的Orthographic Projection:把空间中的模型顺着同一个方向投影,得到投影平面。
看看下面这张图就明白了。
image

参考上图,整个空间是一个长方体,我们要把整个空间变换成“中心在原点,边长为2”的立方体(方便后面进行视口变换,这个之后再说)。
image

变换成立方体的对应矩阵为Morthographic
image

Perspective Projection

Perspective Projection即透视投影:从一个点放射状地看向模型中的各个部分,得到投影平面。
如下图所示。
image

参考上图,透视投影所形成的空间不是长方体,我们就要把它变换成一个长方体,这样就可以进行Orthographic Projection了。

怎么变?挤压离摄像机更远的那一个平面。通过一些特殊点坐标的代入,可以解得对应矩阵(具体推导过程见原教程0:50:43左右)。

image

变换成长方体的对应矩阵为Mperspective->orthographic
\begin{bmatrix}
n & 0 & 0 & 0\\
0 & n & 0 & 0\\
0 & 0 & n+f & -nf\\
0 & 0 & 1 & 0
\end{bmatrix}

所以Mperspective = Morthographic * Mperspective->orthographic;

值得一提的是,在某次作业中,使用过下图所示的参数 fovY(Y方向视锥的角度)和 aspect(横纵比)。
image
而作业一中的提高题,利用罗德里格旋转公式能够解决,也可以参考这篇博客,这是后话了。

Viewport变换

Viewport(视口)变换用于把之前得到的立方体空间(暂时不管z轴纵深)映射到屏幕上。

先把立方体中要显示的平面缩放为屏幕大小,再平移使平面左下角与原点重合(屏幕的原点在左下角)。

视口变换对应矩阵为Mviewport
image

参考资料

以上笔记(含图片)总结自GAMES101课程及其PPT讲义。
GAMES101教程视频传送门
GAMES-101 Assignment1 提高项解答

posted @ 2022-04-25 12:31  AshScops  阅读(142)  评论(0编辑  收藏  举报