在三维渲染(或几何学)中,在栅格化算法中,当你将三角形的顶点投影到屏幕上,然后发现一个像素是否与2D三角形重叠时,你通常需要找到像素重叠的三角形的深度或z坐标。一般情况下,该方法包括计算三角形二维投影图像中像素的重心坐标,然后利用这些坐标插值三角形原始顶点z-坐标(在顶点得到投影之前)。
现在,在所有的教科书中都写着,您不能直接插值顶点的顶点坐标,但是您需要这样做:
(对不起,拉泰克斯不能上班了?)
1/z = w0 * 1/v0.z + w1 * 1/v1.z + w2 * 1/v2.z
其中w0、w1和w2是三角形上“像素”的重心坐标。
现在,我所关心的有两件事:
为了证明这不是在家工作;-)而且我自己做了一些工作,我找到了关于问题2的以下解释。
基本上,三角形可以用平面方程来定义。这样你就可以写:
Ax + By + Cz = D.
然后分离z,得到z= (D By)/C
然后,将这个公式除以z,就像用透视除法一样,如果您开发、重新组合等等,就会得到:
1/z = C/D + A/D_x/z + B/D_y/z。
然后我们将C'=C/D、B'=B/D和A'=A/D命名为:
1/z = A'x/z + B'y/z + C‘
它说x/z和y/z只是屏幕上三角形点的坐标,右边的方程是“仿射”函数,因此1/z是线性函数?
在我看来这不像是个示范?或者这也许是正确的想法,但不能真正说,你可以通过看方程来判断这是一个仿射函数。如果你把你刚刚得到的所有术语乘以:
A'x + B'y + C'z = 1。
这基本上是我们的原始方程(只需要用适当的术语替换A‘B’和C‘)。
发布于 2015-06-04 21:20:55
不知道你想问什么,但如果你看看:
1/z = A'x/z + B'y/z + C'并将其改写为:
1/z = A'u + B'v + C'当(u,v)是透视投影后三角形的屏幕坐标时,你可以看到三角形上一个点的深度(z)与(u,v)不是线性相关的,而是1/depth是的,这就是教科书试图教你的。
https://stackoverflow.com/questions/28707584
复制相似问题