至少从理论上讲,可以在没有接近裁剪平面的情况下进行渲染吗?光线追踪可以忽略这种可能性吗?

很多崭露头角的3d美术师在第一次遇到剪裁平面时都会遇到WTF时刻。如果可以避免这种情况,那么3D创作应用程序的可用性将是一个巨大的胜利。在解释之前,这不是普通艺术家会考虑的事情之一。

评论

想象一下在您的眼睛内部有一个3d对象。您认为这看起来如何?你的朋友怎么看?

@Andreas是的,但是只有线性代数技巧是如何工作的,我们才能使用许多其他技巧。

还有什么窍门?

@Andreas我们可以做例如球形投影。仅仅因为我们拥有一个有效的数学模型,并不意味着没有其他方法可以解决问题。

删除了我的答案

#1 楼

近裁剪平面是投影栅格化的基本特征。借用Eric Lengyel的Projection Matrix Tricks演示文稿中的图表:



剪辑空间的显示区域(您可以将栅格化视为发生在其中)是一个盒子。有一副“近”的脸。这与近裁剪平面相关。但是我们可以将远剪切平面推到无穷大,那么我们可以将近剪切平面推到零吗?

从数学上讲,您绝对可以!出现问题的唯一点是眼睛本身:您可以无限靠近眼睛,但仍然可以解析到剪辑空间中的单个点。但是,如果您有一个穿过眼睛的三角形,则仍然需要对其进行修剪,并且要修剪它,您需要一个实际的平面,而不是诸如“无限靠近眼睛”之类的概念。

对于当前的栅格化管道而言,更关键的是,透视划分确实可以实现数值精度的乐趣。看到上图中NDC 0处的线吗?它位于剪辑空间中查看体积的一半,但根本不在相机空间中视锥视图的一半附近。实际上,它的位置取决于近夹平面到眼睛的距离!这意味着剪辑空间中深度范围的一半以上位于眼睛附近的区域中。随着近夹平面越来越靠近眼睛,该平面会拉得越来越近,并且浪费了越来越多的深度范围。这不一定是基本的-您不必将z / w存储在深度缓冲区中-但这很方便。这是内森·里德(Nathan Reed)撰写的有关深度精度的文章,还有一些注释说明了为什么埃米尔·佩尔森(Emil Persson)可以使用预计的z / w深度。

最后,我将在一篇出色的“旅行通过“图形管道”系列非常有趣,并引用了同构栅格化算法,该算法在理论上可以避免在投影的剪辑空间中进行剪辑的需求,这将完全避免其中的一些陷阱。

评论


$ \ begingroup $
好吧,我们到了某个地方。我并不是真正关心大多数光栅化器的工作方式,而是是否有一种新颖的方法来解决这个问题。我正在考虑接受此答案,因为它暗示了答案,并且避免了我不得不证明实际上可以通过与当前管道的处理方式不同的方式来解决此问题。它不是投影的功能,而是矩阵运算以及我们如何读取投影中的数据。
$ \ endgroup $
– joojaa
16年4月18日在7:18



#2 楼

使用透视投影的光栅化设置中的近剪切平面可以避免被0除以限制正交投影的可能深度。

通过一些额外的数学运算,您可以将深度存储在深度中再次线性缓冲。但是,您仍然需要防止被0除。

在光线追踪中,近平面可以为0没问题。但是,没有什么技术可以阻止您将其设置为-10(这会很奇怪)。

评论


$ \ begingroup $
是的,我知道这一点,但想知道是否可以采用另一种策略来避免被0除。
$ \ endgroup $
– joojaa
16-4-14在10:37



$ \ begingroup $
您可以通过推入或推出将导致1的值来避免被零除。
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
16年4月17日在0:24

$ \ begingroup $
@joojaa光线跟踪不除零。
$ \ endgroup $
–安德烈亚斯(Andreas)
16年4月17日在15:01

$ \ begingroup $
@Andreas是的,我知道现实也没有;)
$ \ endgroup $
– joojaa
16年4月17日在15:01

$ \ begingroup $
@joojaa但是,您是否曾经尝试查看过眼球推入的物体? :-)
$ \ endgroup $
–西蒙F
16年5月4日在8:00