Lecture 3 Transformation
二维变换
- 旋转
- 缩放
- 镜像
- 错切
- 线性变换 = 旋转 + 缩放 + 切变
- 仿射变换 = 线性变换 + 平移
- 齐次坐标系
- n维 的点/向量,用 [n + 1 × 1] 的列向量表示
- 向量具有平移不变性
- 注意平移和旋转的先后顺序
- 变换用 [(n + 1) × (n + 1)] 的矩阵左乘来表示,从右到左
- 多个变换可以组合起来变成一个矩阵→加速计算
- 变换:合成 or 分解
- 注意:上述变换均认为(0, 0)为中心, 分解则通过平移使中心到(0, 0),旋转后再平移回去
三维变换
Lecture 4 Transformation Cont.
MVP
- Model transformation 模型变换 (placing objects)
想象一下:世界坐标系下有很多Object,用一个变化矩阵把它们的顶点坐标从Local坐标系(相对)转换到世界Global坐标系(绝对)。这就是placing objects。 - View transformation 视图变换 (placing camera)
想象一下:我们看到的画面由摄像机捕捉,摄像机参数决定了我们在屏幕上看到的东西,这一步可以将世界坐标系转换到摄像机坐标系。 - Projection transformation 投影变换
摄像机坐标系,视锥体,再归一化一下
视图变换
相机置于原点,Y轴向上,面向-Z方向
投影变换
-
相似三角形
-
正交投影
-
透视投影
- 在Z轴上是不变的
- 原平面中心点:挤压后还在中心点
-
A
⋅
n
+
B
=
n
2
A\cdot n + B = n^2
A⋅n+B=n2
A ⋅ f + B = f 2 A\cdot f + B = f^2 A⋅f+B=f2
可得: A = n + f A = n + f A=n+f, B = - n ⋅ f B = -n \cdot f B=-n⋅f
-
课后思考
- 以 ( n + f ) / 2 (n + f) / 2 (n+f)/2为例: 变深度为 ( n 2 + f 2 ) / ( n + f ) (n ^ 2 + f ^ 2) / (n + f) (n2+f2)/(n+f)
- 推导:
( n 0 0 0 0 n 0 0 0 0 n + f − f n 0 0 1 0 ) \begin{pmatrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+f & -fn \\ 0 & 0 & 1 & 0 \\ \end{pmatrix} n0000n0000n+f100−fn0 应用 z = ( n + f ) / 2 z =(n + f) / 2 z=(n+f)/2得:
P ′ = M ⋅ P = ( 0 0 ( n + f ) 2 / 2 − f n ( n + f ) / 2 ) P' = M \cdot P = \begin{pmatrix} 0 \\ 0 \\ (n+f)^2/2 - fn \\ (n+f)/2 \\ \end{pmatrix} P′=M⋅P= 00(n+f)2/2−fn(n+f)/2 ,即 ( 0 0 ( n 2 + f 2 ) / 2 ( n + f ) / 2 ) \begin{pmatrix} 0 \\ 0 \\ (n^2+f^2)/2 \\ (n+f)/2 \\ \end{pmatrix} 00(n2+f2)/2(n+f)/2
进行归一化: P ′ ′ = ( 0 / ( ( n + f ) / 2 ) 0 / ( ( n + f ) / 2 ) ( n 2 + f 2 ) / 2 / ( ( n + f ) / 2 ) 1 ) = ( 0 0 ( n 2 + f 2 ) / ( n + f ) 1 ) P'' = \begin{pmatrix} 0 / ((n+f)/2) \\ 0 / ((n+f)/2) \\ (n^2+f^2)/2 / ((n+f)/2) \\ 1 \\ \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ (n ^ 2 + f ^2)/ (n+f) \\ 1 \\ \end{pmatrix} P′′= 0/((n+f)/2)0/((n+f)/2)(n2+f2)/2/((n+f)/2)1 = 00(n2+f2)/(n+f)1