GAMES101 lecture1-4 笔记 基础
课程介绍
101课程分四个部分:
- Rasterirzation 光栅化
- Geometry 几何
- Ray Tracing 光线追踪
- Animation/Simulation 动态模拟(动画)
其中光栅化部分介绍了许多前置知识,所以占用篇幅较大。
线代基础
向量
基础的定义不多说,主要集中在点乘和叉乘,值得注意的有:
以向量a,b为例 | 点乘 Dot | 叉乘 Cross |
---|---|---|
结果类型 | 数值 | 向量 |
数值大小 | ∣ a ⃗ ∣ ∣ b ⃗ ∣ c o s α \mid\vec{a}\mid\mid\vec{b}\mid cosα ∣a∣∣b∣cosα | ∣ a ⃗ ∣ ∣ b ⃗ ∣ s i n α \mid\vec{a}\mid\mid\vec{b}\mid sinα ∣a∣∣b∣sinα |
计算公式 | x1x2+y1y2+z1z2 | (y1z2-y2z1, x1z2-x2z1, x1y2-x2y1) |
几何意义 | 投影 | 求垂线(x,y求z) |
常用作用 | 判断两个向量是否接近 | 判断任意一点是否在三角形外 |
还有值得注意的一点是:正交矩阵的逆矩阵等于其转置矩阵
Transformation
定义相关(2D)
-
Scale 规模大小
-
Rotation 旋转
-
Shear
-
Homogenous 齐次坐标
齐次坐标有一个性质:加了一维(1)之后所有数同乘同除一个常数代表的空间中的点是不变的,比如(1,0,0,1)和(2,0,0,2)是一样的。
注意仿射方程中是先变形再位移
3D Rotation
绕y轴转有一些不同,是因为不能通过x轴叉乘z轴得到y轴,要反过来。
也经常这样表示:
如果是绕任一直线旋转:
推导没太看懂
View Transformation
MVP:
- Find a good place and arrange people (model transformation)
- Find a good “angle” to put the camera (view transformation)
- Cheese! (projection transformation)
摄像机由三个东西定义:
- 位置
- 朝向(look-at directio)
- 向上的方向(确定是正的还是歪的)
分两步:
- 把相机移到正确的位置
- 旋转使得朝向和向上的方向正确
直接计算如何将当前观察方向g和上方向t转成-z和y有点难,所以先反求从x,y,z到当前角度的旋转,再利用旋转矩阵是正交矩阵因而逆矩阵等于转置矩阵这一特点简单的获得旋转的矩阵。
Projection Transformation
分为Orthographics projection和Perspective projection
- Orthographics projection
无近大远小,处理上就是移到中心位置再去掉z轴/z值,使得物体(object)投影在plane上 - Perspective projection
近大远小。
转换时分为两步:
1、压缩成cuboid,转成orthographics的样子
2、进行orthographics projection
前者先利用相似三角形确定转换矩阵的前两行,然后利用近表面任一点不变和远平面上z轴上的点不变得到第三行,最终转换矩阵为:
{ n 0 0 0 0 n 0 0 0 0 n + f 0 0 0 0 − n f } (2) \left\{ \begin{matrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+f & 0 \\ 0 & 0 & 0 & -nf \\ \end{matrix} \right\} \tag{2} ⎩⎪⎪⎨⎪⎪⎧n0000n0000n+f0000−nf⎭⎪⎪⎬⎪⎪⎫(2)
其中相机到n是近平面的距离,f是到远平面的距离
具体处理上可能给出n,f和fovY(下表面到上表面的角度),然后利用tan可得height(t,b),然后利用aspect系数(宽/高)可得宽,从而获得l,r。