GAMES101-SUM

引言

最近打算重新温习一下 GAMES101 现代计算机图形学入门的课程内容,做一个总结与梳理比较重要的内容以便快速复习。

Review of Linear Algebra

Vector

Normalization

Addition

Multiplication
Dot Product


通过判断点乘的正负判断两个方向向量有多么接近:

dotProduct > 0 ? forward: backward;
Cross Product

叉乘向量的方向用右手螺旋定则判断,类似于大拇指点赞。

叉乘没有交换律,但分配律和结合律依然存在。


叉积有两个作用:

  • 判定左右(不经过逆/顺时针旋转保持方向一致)

  • 判定内外(叉乘符号保持一致)

Matrix

Matrix-Matrix Multiplication

矩阵间的乘法规则为”前行乘后列”,算第几行第几列就去找左矩阵第几行和右矩阵第几列。

矩阵间的乘法不满足交换律,但满足结合律和分配律。

Transpose

矩阵转置就是把行列互换。

Identity Matrix

只有对角线上有非零元素的矩阵被称为对角阵,单位矩阵则都为 1。矩阵与矩阵的逆相乘得到单位矩阵。

Transformation

2D Transformation

Scale Matrix

Reflection Matrix

Shear Matrix

水平方向的切变。

Rotate Matrix

旋转默认原点为中心逆时针方向,推导过程如下:

Homogenous Coordinates

齐次坐标服务于平移变换,把二维的点增加一个纬度变成齐次坐标,所有变换形式上简化为一个矩阵乘以一个向量。

2D Transformation

Inverse Transformation

Composing Transforms

变换顺序从右到左非常重要,可以视作交换律的不可用。

旋转时的中心点始终为原点,所以保证旋转时物体在原点,之后再做其他的变换操作。

3D Transform

Scale & Translation

Rotation

$Z x X = Y$

推导过程如下:

Viewing Transform

View/Camera Transform

相机身处原点,法向为 Y,朝向为 -Z 的标准位置。

Model Transform

视图矩阵需要先平移至原点,然后一次旋转到标准轴。

齐次坐标先做平移后做旋转。

虽然任意轴旋转到标准轴很难推导,但是这个逆过程标准轴旋转到任意方向还算简单,又因为旋转矩阵的逆矩阵与转置矩阵相等最后可以推导出来。

Projection Transform

透视投影(P)会有近大远小的现象,而正交投影(O)没有。

Orthographic Projection

  • 相机从原点看向 -Z 方向,头顶朝向 Y 方向
  • 扔掉 Z 轴
  • 缩放变换 X、Y 至 [-1, 1]

首先把立方体中心从负方向移到原点,然后再做一个缩放把长度变为 2。

Perspective Projection

透视投影可以拆分为两步:首先将 Frustum 挤成 Cuboid;然后直接用正交投影。

使用 (0,0,n) 和 (0,0,f) 两个特殊点代入,就可以得出最终的矩阵

Viewport Transform

  • 长宽比:aspect ratio
  • 垂直可视角度:fovY(field-of-view)

Rasterization

Screen Space

  • 像素 (x, y) 的中心为 (x + 0.5, y + 0.5)。
  • 以左下角为原点,屏幕的像素空间从 (0, 0) 到 (width - 1, height - 1)。

Shading

Geometry

Ray Tracing