Skip to main content

Games101

Overview

目标

光栅化 几何

基础知识 & 概念

数学:线性代数,微积分,统计 物理学:光学,力学

向量: 表示方向 & 长度

特点:具有平移不变性。 单位向量 (a hat): 长度为 1 的向量。 向量操作: 向量求和,向量点乘,向量叉乘 等、 向量默认是列向量。

求和

平行四边形法则 || 三角形法则

点乘(dot)

点乘: 算夹角 || 投影 满足交换律,结合律

a · b = a 长度*b 长度* cos (得到一个数字)

cos = a hat * b hat

点乘结果: 1: 方向完全相同 -1:方向完全相反 0: 方向垂直

对应的元素相乘,再加起来。

算夹角: 光照方向,视角方向等。 算投影: 根据平行四边形法则,算平行,垂直等相关向量。

b 向量投影在 a 向量

一般是列向量,可以把它转为横向量。

叉乘(cross)

得到另外一个向量:垂直于输入的两个向量。 C: C 要垂直于 A, C 也要垂直于 B, C 要垂直于 A 和 B 所在的平面。

c = a x b x sinα

叉乘不满足交换律,得加-号。

sin0 = 0

自己叉乘自己 = 0

a hat* b hat* sin

交互转弧度值: radiance = angle / 180 * Math.PI

右手定则: 螺旋定则 || 拇指食指中指定则 螺旋定则: 四指方向代表旋转方向,从 A 旋转到 B, 拇指代表 C 的方向。

判断左右,内外。

三角形光栅化: 是在三角形的里面还是外面? P: ABC AB * AP BC * BP CA * CP

三个方向都是一致的,就能保证是在一起的

矩阵

表示基础变换:移动,旋转,错切等

矩阵的乘积 (M * N)(N * P) = M * P

第二个矩阵的列数必须等于一个矩阵的行数,这样的乘 才有意义。

矩阵 乘 矩阵 矩阵的交换率基本不成立,但是分配率成立。

矩阵 乘 向量 (特殊场景 M * 1)

镜像

向量的乘积也可以写成矩阵的形式。

2D-Transformation

Scale, Reflection, Shear

旋转: 一般来说是以原点为中心,逆时针旋转。

找坐标的变换关系

以上变换都属于线性变换: x' = M x [矩阵*向量]。但是平移不属于,没办法用这个通用的公式。所以探究出了 齐次坐标。 所有的仿射变换都可以用齐次坐标来处理。

齐次坐标,2 维情况下,增加一个维度 点:x1,y1,1 向量:x1,y1,0

复杂的变换可以拆分成简单的变化。 变换的顺序很重要。因为矩阵不满足交换律。

矩阵相乘: 从右到左应用。 先旋转,后平移: T()R()M An(...A2(A1(X))

如果一个矩阵的逆 === 它的转置,则这个矩阵为正交矩阵。一般来说,求逆矩阵通常会比较耗费性能,但求转置矩阵非常简单。

View / Camera Transformation

  • model
  • view(angle)
    • position
    • look-at
    • up
  • projection
    • perspective
    • orthographic

图形学基础概念

图形管线

纹理映射

着色器

顶点着色器

片元着色器