码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-10-19 20:36:00      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

因为如果点在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坐标是错的。

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

技术分享

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

标签:

原文地址:http://www.cnblogs.com/wantnon/p/4892750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!