倾斜视图截锥体深度投影和裁剪 (Eric Lengyel)

Oblique View Frustum Depth Projection and Clipping (Eric Lengyel)

在尝试理解倾斜裁剪方法时我遇到了一些理论问题。根据 Eric Lengyel 在第 2 章末尾写的 this 文章,我们得到裁剪空间:

据说:

each camera-space plane is expressed as a sum or difference of two rows of the projection matrix

这一刻我无法理解。比如说Near plane value是“M4 + M3”(其中M4和M3分别是投影矩阵的第四行和第三行),其他的值也类似的计算,那么得出的结论是投影矩阵MUST是身份(从 M4 + M3 获得 <0,0,1,1> 结果)。但我们知道这是不同的。那么,谁能解释一下,我们使用的是什么矩阵,与投影矩阵有什么联系?

THIS moment i can not understand. For example, if it's said that Near plane value is "M4 + M3" (where M4 and M3 are the fourth and third rows of projection matrix), and other values ​​are calculated similarly, then the conclusion follows that projection matrix MUST be Identity (to get <0,0,1,1> result from M4 + M3).

首先,你的逻辑在这里有很大的缺陷。要从两个向量 a+b 的总和中得到一个向量 c=(0,0,1,1),您可以找到无限数量的向量 ab 来满足这个,例如 (7,-2pi,0,42) + (-7, 2pi, 1, -41) = (0,0,1,1).

但是,这完全不是重点,因为您误解了那篇文章的关键部分。您在此处指定的剪辑平面是 in clip space(对于 w = 1 的特殊情况,如文章中所述)。如果我们想在剪辑 space 中找到剪辑平面 的方程,则完全不需要进行任何计算,因为剪辑平面是 在剪辑space中定义为固定方程。如果我们已经知道它会产生 (0,0,1,1).

,那么计算 M4+M3 就没有意义了

整篇文章都在讨论如何高效地计算眼睛 space 中的裁剪平面。 table 该论文的 1 篇非常清楚地说明了这一点: