虎书Fundamentals of Computer Graphics 5th Edition个人学习思维导图分享-第八章 Viewing

这章的知识点书上是按照从易到难的顺序安排的,但本文为了使变换的顺序符合逻辑,就按照渲染的顺序来阐明概念了。本文有许多概念都是根据个人对于概念的理解,以大白话的形式表达,如有不对,请及时纠正,谢谢各位大佬。

Viewing Transformation视图变换

  • 描述的是一个将canonical坐标系中的三维坐标映射到以像素为单位的图片中的过程
  • 其中包含

  •  Camera Transformation

    • 根据之前书中第二章提到的,以相机(模拟眼睛看物体)的有关信息构建一个坐标系的方法中
      • 所需的信息
        • 眼睛位置e
        • 眼睛所看向的方向g
        • view-up vector将视角区分左右的任意向量t(书中表达为将头切分成左右两半的平面上的向量)
      • 其中的具体逻辑就不赘述了下面是结果

    • 再根据章节7.5中的根据某坐标系的原点和三个basis vector即可将原坐标系中的点转换为该坐标系中坐标的变换矩阵canonical-to-basis matrix

  • Projection Transformation

    • 该变换由两部分组成M_{per}=M_{orth}P即Perspective Projection和Orthographic Projection

      • Perspective Projection

        • 说该变换之前需要知道

          • 由书中关于眼睛看向view plane的侧面截图根据三角相似原理可以得出y_s=\frac{d}{z}y

          • 而此公式中带有除法,而仿射变换中却没有包含实现该功能的矩阵
          • 得益于齐次坐标多出的那一维\begin{bmatrix}x&y&z&w\end{bmatrix}^{T}=\begin{bmatrix}x/w&y/w&z/w&1\end{bmatrix}^T利用此性质可以实现除法
          • 实现这一功能的变换叫做Projective Transformation\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ \tilde{z}\\ \tilde{w} \end{bmatrix} = \begin{bmatrix} a_1& b_1 & c_1 & d_1\\ a_2& b_2 & c_2 & d_2\\ a_3& b_3 & c_3 & d_3\\ e& f & g & h \end{bmatrix} = \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}
        • 得益于Projective Transformation实现除以z这个操作变得可以轻松实现
        • Perspective Matrix P

        • 其中,由于之前的三角形相似原理,y_s=(n/z)y 而对于x也是同理
        • 值得注意的是这里的n和z都是小于0(眼睛位于原点是看向-z方向的)的所以这个变换矩阵并不会错误的导致坐标符号反向
        • P矩阵的第三行实现了z坐标在near plane和far plane的点z值不变,而介于其中的点z值的大小顺序不变,即某点原来的z值小于另一点的z值而经过变换之后仍小于该点的z值
        • 利用上述性质便于之后进行Hidden Surface Removal
    • Orthographic Projection

      • 经过之前的Perspective Projection Transformation已经将view volume转换为一个[l,r]\times[b,t]\times[f,n]的长方体,称作Orthographic View Volume
      • 由于目标是将该长方体先将从原点看去[l,r]\times[b,t]这面的中心位移至原点,再压缩成一个长宽为2的正方体,
      • 经过以下矩阵可以实现上述功能(可以自行推导),一个相对简单的仿射变换

    • 先进行Perspective Projection Transformation再进行Orthographic Projection就是Projection Transformation的整个变换了M_{per}=M_{orth}P 

  • Viewport Transformation

    • 又称作Windowing Transformation

    • 将经过Projection Transformation得到的[-1,1]^3正方体,将由x轴和y轴构成的[-1,1]^2面映射到屏幕像素为n_x\times n_y[-0.5,n_x-0.5] \times [-0.5,n_y-0.5]的长方体上

    • 不难看出,只需要进行简单的缩放和位移操作即可

  • 结合上述三个大步骤即为整个Viewing Transformation的过程

  • Field-of-View
    • 垂直可视角度根据三角形相似原理可以得出tan\frac{\theta}{n}=\frac{t}{|n|}

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值