gpt4 book ai didi

geometry - 透视投影: Proving that 1/z is Linear?

转载 作者:行者123 更新时间:2023-12-02 19:02:59 25 4
gpt4 key购买 nike

在 3D 渲染(或几何图形)中,在光栅化算法中,当您将三角形的顶点投影到屏幕上,然后查找像素是否与 2D 三角形重叠时,您通常需要查找深度或像素重叠的三角形的 z 坐标。一般来说,该方法包括计算三角形的二维“投影”图像中像素的重心坐标,然后使用这些坐标来插值三角形原始顶点的 z 坐标(在顶点投影之前)。

现在所有教科书中都写到,你不能直接对顶点的顶点坐标进行插值,而是需要这样做:

(抱歉无法让 Latex 工作?)

1/z = w0 * 1/v0.z + w1 * 1/v1.z + w2 * 1/v2.z

其中 w0、w1 和 w2 是三角形上“像素”的重心坐标。

现在,我关心的是两件事:

  • 证明插值 z 不起作用的正式证据是什么?
  • 证明 1/z 正确的正式证据是什么?

为了表明这不是家庭作业;-)并且我自己做了一些工作,我找到了问题 2 的以下解释。

基本上,三角形可以通过平面方程来定义。因此你可以写:

Ax + By + Cz = D。

然后分离 z 得到 z = (D - Ax - By)/C

然后你将此公式除以 z,就像使用透视除法一样,如果你展开、重新组合等,你会得到:

1/z = C/D + A/Dx/z + B/Dy/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')。

最佳答案

不确定您想在这里问什么,但如果您查看:

1/z = A'x/z + B'y/z + C'

并将其重写为:

1/z = A'u + B'v + C'

其中(u,v)是透视投影后三角形的屏幕坐标,可以看到三角形上一点的深度(z)不是与 (u,v) 线性相关,但 1/深度 是线性相关的,这就是教科书试图教给您的内容。

关于geometry - 透视投影: Proving that 1/z is Linear?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28707584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com