重心坐标的透视校正


过年期间, 没啥心思玩渲染, 又操起老本行研究起了代数拓扑( •̀ ω •́ )y~ 但这两天转念一想, 自己的软光栅渲染器还有最后一点关于重心坐标的透视校正的问题需要思考, 那就争取在春节假期结束前终结了软光栅渲染器这一块叭~

参考材料
1. Technical difficulties: linear interpolation with perspective deformations
2. [数学] 重心坐标插值与透视校正插值
3. 图形学 – 关于透视矫正插值那些事
4. 投影下光栅化插值方法
5. Shirley P, Ashikhmin M, Marschner S. Fundamentals of computer graphics[M]. AK Peters/CRC Press, 2009.
6. 【重心坐标插值、透视矫正插值】原理以及用法见解(GAMES101深度测试部分讨论)

透视校正插值-图片来自参考材料2

问题: 已知屏幕空间中$\triangle A’ B’ C’$的所有顶点坐标和屏幕空间中$P’$点坐标, 其中, 点$P’$在$\triangle A’ B’ C’$中的重心坐标为$(\alpha’, \beta’, \gamma’)$, $\triangle A’ B’ C’$在裁剪空间中对应的三角形为$\triangle ABC$, 求点$P’$在裁剪空间中对应的点$P$在$\triangle ABC$中的重心坐标$(\alpha $$ , \beta, \gamma)$.
$\\$ 解1: 二维情形下的推导详见参考材料3, 我们这里直接从二维推导出三维空间中$w$分量应该为:$$w = \frac{1}{\frac{\alpha’}{w_A} + \frac{\beta’}{w_B} + \frac{\gamma’}{w_C}},$$其中$\alpha’, \beta’$与$\gamma’$满足$P’ = \alpha’ A’ + \beta B’ + \gamma’ C’$. 则我们可以知道:$$z = w(\frac{\alpha’}{w_A} z_A + \frac{\beta’}{w_B} z_B + \frac{\gamma’}{w_C} z_C) \\ = \frac{\frac{\alpha’}{w_A} z_A + \frac{\beta’}{w_B} z_B + \frac{\gamma’}{w_C} z_C}{\frac{\alpha’}{w_A} + \frac{\beta’}{w_B} + \frac{\gamma’}{w_C}}.$$$\\$ 解2: 我们知道三维向量$v$在作投影变换时, 会给$w$分量补上1, 即变成$(v^T, 1)^T$, 再用$4 \times 4$矩阵变换, 令矩阵左上$3 \times 3$部分为$M$, 右上$3 $$ \times 1$部分为向量$t$, 即可以将投影变换后结果写成$((Mv + t)^T, w)^T$, 到光栅化阶段要对向量$Mv + t$作齐次除法(以及像素转换的仿射变换), 这样向量$Mv + t$就变成了$(Mv + t) / w$, 之后再作仿射变换, 但对插值无影响.
$\\$ 这样齐次除法之后的三个点就成了$(MA + t) / w_A$, $(MB + t) / $$ w_B$, $(MC + $$ t) / w_C$, 满足$$P’ = \alpha’ ((MA + t) / w_A) \\ + \beta’ ((MB + t) / w_B) + \gamma’ ((MC + t) / w_C),$$而$P’$也是$P = \alpha A + \beta B + \gamma C$通过齐次除法得到的, 所以$$(M(\alpha A + \beta B + \gamma C) + t) / w_P = \\ \alpha’ ((MA + t) / w_A) + \beta’ ((MB + t) / w_B) + \gamma’ ((MC + t) / w_C).$$因为$A, B$与$C$都是任意向量, 需要满足$A, B$与$C$前的系数在方程两边相等, 可以得出比例$$\alpha : \beta : \gamma = \alpha’ / w_A : \beta’ / w_B : \gamma’ / w_C,$$而因为$\alpha + \beta + \gamma = 1$, 故在使用$\alpha’ / w_A$代替$\alpha$, $\beta’ / w_B$代替$\beta$与$\gamma’ $$ / w_C$代替$\gamma$时还需要进行归一化.

$\\$ 解: 详见参考材料6(作者的解法十分清晰简洁, 相比之下, 自己的解法显得杂乱无章, 令人一头雾水, 实在惭愧囧).
$\\$ PS: 上述比例关系的成立隐式利用了$A, B$与$C$向量的正交性, 若仅有线性无关性还需结合范德蒙德行列式, 故目前看来, 上述比例关系是不严格成立的.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注