计算机图形学-Viewing变换

view/camera 变换

相机移动到(0,0,0),向前是-z轴,向上是y轴,对应变换矩阵M_{view}=R_{view}T_{view}

  • 平移到(0,0,0)
    T_{view} = \left( \begin{array}{} 1 & 0 & 0 & -x_e \\ 0 & 1 & 0 & -y_e\\ 0 & 0 & 1 & -z_e\\ 0 & 0 & 0 & 1 \\ \end{array} \right)
  • 原相机轴分别为(g \times t,t, g)旋转,先考虑逆变换,再转换成正变换(\hat g\hat t表示单位向量):
    R_{view}^{-1} = \left( \begin{array}{} 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{array} \right) \rightarrow R_{view} = (R_{view}^{-1})^T = \left( \begin{array}{} 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{array} \right)


Projection(投影)变换

Orthographic protection(正交投影)

将物体全部转换到一个[-1, 1]^3的空间上(z轴反向):
M_{ortho} = \left[ \begin{array}{} \frac{2}{r-l} & 0 & 0 & 0 \\ 0 & \frac{2}{t-b} & 0 & 0 \\ 0 & 0 & \frac{2}{n-f} & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right] \left[ \begin{array}{} 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{array} \right]

正交投影变换

Perspective protection(透视投影)

从透视投影到标准化[-1,1]^3空间上。分两步:

  • 透视投影\rightarrow正交投影,n是近平面距离,f是远平面距离:
    M_{presp \rightarrow ortho} = \left( \begin{array}{} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+f & -nf \\ 0 & 0 & 0 & 1 \\ \end{array} \right)
  • 正交投影\rightarrow [-1,1]^3,上面已经计算过

M_{presp}=M_{ortho}M_{presp \rightarrow ortho}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容