GAMES101-现代计算机图形学入门 Lecture04 Transformation Cont. 笔记
3D 模型变换
类似于2D模型变换,3D模型变换使用四维向量表示空间中的点和向量:
-
点 = \((x,y,z,1)\)
-
向量 = \((x,y,z,0)\)
Rotate
\[R_x(\alpha)=
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & cos\ \alpha & -sin\ \alpha & 0 \\
0 & sin\ \alpha & cos\ \alpha & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\\
R_y(\alpha)=
\begin{pmatrix}
cos\ \alpha & 0 & sin\ \alpha & 0 \\
0 & 1 & 0 & 0 \\
-sin\ \alpha & 0 & cos\ \alpha & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\\
R_z(\alpha)=
\begin{pmatrix}
cos\ \alpha & -sin\ \alpha & 0 & 0 \\
sin\ \alpha & cos\ \alpha & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\\
\]
绕轴n旋转角度α :
\[R(n,\alpha)=cos(\alpha)I+(1-cos(\alpha))nn^T+sin(\alpha)
\begin{pmatrix}
0 & -n_z & n_y \\
n_z & 0 &-n_x \\
-n_y & n_x & 0
\end{pmatrix}
\]
其他操作类似2D模型变换
视图变换
照相机的定义
- 位置 \(\vec{e}\)
- 视线方向 \(\hat{g}\)
- 向上方向 \(\hat{t}\)
移动照相机至原点
注意到当照相机和模型做相同变换时,照相机视野中的模型不发生变化,为方便后续处理,应先将照相机移动至原点,视线方向朝向 \(-Z\) ,向上方向朝向 \(Y\) 。
- 将 \(e\) 移动至原点
\[T_{view}=
\begin{pmatrix}
1 & 0 & 0 & -x_e \\
0 & 1 & 0 & -y_e \\
0 & 0 & 1 & -z_e \\
0 & 0 & 0 & 1
\end{pmatrix}
\]
将照相机 \(\hat{g}\) 和 \(\hat{t}\) 分别旋转至 \(-Z\) 和 \(Y\) 方向,直接旋转较为困难,考虑将该操作的逆操作,即将一个 \(\hat{g}=-Z\) 且 \(\hat{t}=Y\) 的相机旋转至前者,矩阵为:
\[R_{view}^{-1}=
\begin{pmatrix}
x_{\hat{g}\times\hat{t}} & x_t & x_{-g} & 0 \\
y_{\hat{g}\times\hat{t}} & y_t & y_{-g} & 0 \\
z_{\hat{g}\times\hat{t}} & z_t & z_{-g} & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\]
求逆矩阵:
\[R_{view}=
\begin{pmatrix}
x_{\hat{g}\times\hat{t}} & y_{\hat{g}\times\hat{t}} & z_{\hat{g}\times\hat{t}} & 0 \\
x_t & y_t & z_t & 0 \\
x_{-g} & y_{-g} & z_{-g} & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\]
所以,\(M_{view}=R_{view}T_{view}\)
投影变换
照相机位于原点,\(\hat{g}=-Z\) 且 \(\hat{t}=Y\) ,将照相机视野中的模型移动并缩放至 \([-1,1]^2\)
正交投影
-
将一个\([l,r]\times[b,t]\times[f,n]\) 的立方体映射至 \([-1,1]^3\)
-
正交投影不符合近大远小
\[M_{ortho}=
\begin{pmatrix}
\frac{2}{r-l} & 0 & 0 & 0 \\
0 & \frac{2}{t-b} & 0 & 0 \\
0 & 0 & \frac{n-f}{2} & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
1 & 0 & 0 & -\frac{r+l}{2} \\
0 & 1 & 0 & -\frac{t+b}{2} \\
0 & 0 & 1 & -\frac{n+f}{2} \\
0 & 0 & 0 & 1
\end{pmatrix}
\]
透视投影
先将截锥体“挤压”成立方体,再按照正交投影处理。
- 照相机到截锥体面 \(n\) 的距离为 \(n\) ,到截锥体面 \(f\) 的距离为 \(z\)
将截锥体“挤压”的矩阵:
\[M_{persp\rightarrow ortho}=
\begin{pmatrix}
n & 0 & 0 & 0 \\
0 & n & 0 & 0 \\
0 & 0 & n+f & -nf\\
0 & 0 & 1 & 0
\end{pmatrix}
\]

浙公网安备 33010602011771号