zoukankan      html  css  js  c++  java
  • 透视投影后的线性插值校正

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

    clip_image002

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

    clip_image004

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

    clip_image020

    若以clip_image022为原点,易见有

    clip_image024

    整理得

    clip_image026

    clip_image028代入方程clip_image030并整理可得

    clip_image032

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

    clip_image034

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

    clip_image044

    由此可知,在屏幕上进行的线性插值对应于在投影前空间中对clip_image006[1]的线性插值。现假设要在clip_image008[1]clip_image010[1]间对属性值clip_image046clip_image048进行线性插值得到clip_image050,易知——

    clip_image052

    整理得

    clip_image054

    现在屏幕空间对clip_image006[2]进行线性插值,即

    clip_image056

    将上式代入clip_image050[1]表达式得

    clip_image058

    这就得到了正确的对clip_image060插值的方法:在屏幕空间中对clip_image006[3]clip_image062分别进行线性插值得到clip_image064clip_image066,然后用后者除以前者,即得到clip_image050[2]

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

    clip_image082

    clip_image084

    clip_image086

    注意到clip_image088clip_image090,代入得到

    clip_image082[1]

    clip_image092

    clip_image094

    解得

    clip_image096

    clip_image098

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

  • 相关阅读:
    HDU4348To the moon主席树,区间修改
    不修改的主席(HJT)树-HDU2665,POJ-2104;
    斐波那契数列性质
    HDU-2795Billboard+对宽度建立线段树
    BZOJ-3343教主的魔法+分块(大块排序二分)
    BZOJ4034 [HAOI2015]树上操作+DFS序+线段树
    ECfinal-D-Ice Cream Tower-二分+贪心
    codeforce617E-XOR and Favorite Number莫队+异或前缀和
    BZOJ1878[SDOI2009]HH的项链+莫队算法模板
    POJ-1222EXTENDED LIGHTS OUT-位运算枚举模板
  • 原文地址:https://www.cnblogs.com/AirGuanZ/p/6240219.html
Copyright © 2011-2022 走看看