在3D渲染(或几何形状)中,在光栅化算法中,当您将三角形的顶点投影到屏幕上然后查找像素是否与2D三角形重叠时,您通常需要找到深度或像素重叠的三角形的z坐标。通常,该方法包括计算三角形的2D“投影”图像中像素的重心坐标,然后使用这些坐标来插值三角形原始顶点z坐标(在投影顶点之前)。
现在在所有教科书中都写过,你不能直接插入顶点的顶点坐标,而是需要这样做:
(抱歉无法让Latex工作?)
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 - Ax - 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'。)
答案 0 :(得分:0)
不确定你在这里要问的是什么,但如果你看一下:
1/z = A'x/z + B'y/z + C'
并将其重写为:
1/z = A'u + B'v + C'
其中(u,v)
是透视投影后三角形的屏幕坐标,您可以看到三角形上某点的深度(z
)与(u,v)
不是线性相关,而是{ {1}}就是教科书试图教你的东西。