透视投影模式下近剪裁面剪裁要在剪裁空间进行而不能推迟到归一化设备空间

因为如果点在eye后面,则经过透视除法以后坐标会变错。所以不能推迟到归一化设备空间中再做近截面剪裁。

分析如下:

设P(x,y,z)是相机空间一点,变换到剪裁空间再经透视除法变换到归一化设备空间坐标为Pd(xd,yd,zd),有:

xd=-x/z*(cot(fovy/2)/aspect)

yd=-y/z*cot(fovy/2)

zd=(f+n)/(f-n)+2fn/(f-n)*(1/z)

如果P与eye在一条水平线上,则z=0,(xd,yd,zd)发散。

如果P在eye后面,即z>0,则zd>0,于是xd与x符号相反,yd与y符号相反。

也就是说,当P在eye后面时变换到归一化设备空间会发生左右上下颠倒。得到的Pd坐标是错的。

通过几何作图也可以看到这一点:

posted on 2015-10-19 18:50  wantnon  阅读(600)  评论(0编辑  收藏  举报

导航