上节回顾
上节主要提到了观测变换 (Viewing transformation), 其中包括了视图变换和投影变换。所谓的视图变换就是利用摄像机和物体的相对位置关系,始终把摄像机从任意一个位置移动到经典的原点位置,看向-z,并且向上方向是+y。并且保持其他物体和摄像机一样的移动。此时,我们就可以得到所有的物体都是由一个标准位置的相机看过去的,此时我们要做的就是把它从三维投影到二维。投影分为正交投影和透视投影。
区别:
- 正交投影:把深度信息忽略,假设相机放的无限远
- 透视投影:我们可以获得一个近大远小的效果
在各种观测变换完了之后,场景里的所有物体都会被变换到-1到1的三次方这样一个经典的立方体里面,那下一步是什么?那这就引出了这节的光栅化的内容(其实就是把立方体里的内容画在屏幕上)。那该如何光栅化,怎么画呢?
视锥的定义
首先对于上节课,还有一个剩余内容。在正交投影里,我们需要六个值(上下左右远近),也就是x,y,z的覆盖来定义立方体。那对于透视投影,除了假设中已有的n和f,我们还需要哪些信息来定义一个视锥(frustum)呢?
aspect ratio = width / height 宽高比
vertical field-of-view (forY)垂直可视角度
有了这两个概念,我们就利用这些值来求出近面的高度和宽度,那当然也就可以进一步计算出正交投影中的六个值(上下左右远近)