转载:透视投影变化

     这系列的关于渲染流水的帖子十分实用:http://blog.csdn.net/popy007/article/details/1797121 

     这个帖子中,对于投影平面选择上,其实没有必要纠结,因为在乘以透视矩阵后进行透视除法后,所有在平截头体内的坐标都要变化到[-1,1] 之内。

     这个帖子中介绍的透视变化矩阵M:向量和这个矩阵相乘后,得到

      这只是一个过度坐标。不是一个点,要都除去-z才能变成点(这是齐次和非齐次的转化),才是最终的透视坐标。但是,在这个坐标形式下进行裁剪时可以避免除零错误。因为根据推导过程,当都除以-z后,得到的点坐标时在cvv中的坐标,此时,各个坐标范围都是[-1,1]。那么在除-z之前就是[-z,z],我们其实不是在标准cvv中裁剪,而是在[-z,z]下裁剪,成功的避免了除零错误。这就是为什么在一些推导过程中并没有和[-1,1]比较,都是和-w和w比较。

      并且要注意上面根据fov和宽高比来推导left,right,top,bottom的过程,这个过程中fov其实是在摄像机zy平面上,而不是在zx平面上。

posted @ 2014-12-31 14:03  BlackWalnut  阅读(140)  评论(0)    收藏  举报