首页 > 其他 > 详细

透视投影后的纹理坐标校正

时间:2016-12-31 21:49:30      阅读:478      评论:0      收藏:0      [点我收藏+]

许多着色方法都要用到顶点间的线性插值,譬如逐像素着色的Phong Shading往往需要进行纹理坐标等的线性插值。然而,透视投影会导致直接在屏幕空间进行线性插值得到的结果不正确,如下图:

技术分享

在屏幕上进行的线性插值并不对应在物体上的线性插值,这将导致一系列与该插值相关的着色结果出现错误。譬如,如果在屏幕上直接插值纹理坐标,会得到下图中右边的结果(左边为正确的结果):

技术分享

解决该问题的一种方式是利用技术分享在屏幕空间的线性性。假设坐标为技术分享技术分享的点分别被投影到屏幕上坐标为技术分享技术分享的位置,直线技术分享的方程为技术分享,如下图:

技术分享

若以技术分享为原点,易见有

技术分享

整理得

技术分享

技术分享代入方程技术分享并整理可得

技术分享

类似地,有以下方程成立:

技术分享

类似的式子对技术分享上的每一点及其投影点都成立。现考虑在技术分享技术分享间进行的线性插值技术分享,有:

技术分享

由此可知,在屏幕上进行的线性插值对应于在投影前空间中对技术分享的线性插值。现假设要在技术分享技术分享间对属性值技术分享技术分享进行线性插值得到技术分享,易知——

技术分享

整理得

技术分享

现在屏幕空间对技术分享进行线性插值,即

技术分享

将上式代入技术分享表达式得

技术分享

这就得到了正确的对技术分享插值的方法:在屏幕空间中对技术分享技术分享分别进行线性插值得到技术分享技术分享,然后用后者除以前者,即得到技术分享

以上推导仅考虑了技术分享技术分享坐标,现考虑三角形技术分享上进行的线性插值,假设屏幕上线性插值的权重为技术分享技术分享,真实三角形上对应的权重为技术分享技术分享,故有

技术分享

技术分享

技术分享

注意到技术分享技术分享,代入得到

技术分享

技术分享

技术分享

解得

技术分享

技术分享

这就得到了根据技术分享求出技术分享的公式。由于在透视投影变换后、坐标齐次化之前,技术分享技术分享的比值是一定的,因此上面两个公式中的技术分享坐标均可换成透视投影变换后、坐标齐次化之前对应的技术分享坐标。

透视投影后的纹理坐标校正

原文:http://www.cnblogs.com/AirGuanZ/p/6240219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!