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} \]

posted @ 2021-04-15 23:36  null4785  阅读(120)  评论(0)    收藏  举报