0

我正在从 3d 空间中的三角形构建 BSP 树。在构建 BSP 树之前,所有三角形都已转换为视图空间。因此,我使用点 (0, 0, 0) 作为观察者眼睛的位置,并从远到近遍历树并将所有访问过的三角形添加到列表中。

然后我遍历列表并使用正交投影变换三角形并将它们绘制到屏幕上。这在大多数情况下都有效,但有时我会因为错误的三角形排序而得到奇怪的伪影。如果我改用透视投影,这永远不会发生。

为什么正交投影会发生这种情况?解决正交投影下的可见性问题时,BSP 树是否不起作用?还是我需要采用我的眼睛位置?

4

1 回答 1

0

我很确定您可以将 BSP 树用于正交投影,但与透视投影相比,它需要调整数学,因为尽管将查看器放置在 0,0,0,但您无法对多边形进行排序观点。正交投影有效地将观察者置于无穷远处。假设您正在向下看标准 -Z 轴,您需要遍历 BSP 树,就好像查看器位于 0,0,∞。如果您对分割平面使用标准 ax+by+cz+d=0 ,那么数学实际上非常简单,因为您基本上只需要考虑 c 的符号即可确定首先遍历平面的哪一侧。(如果 c 为零,您可以先遍历任一侧。)

于 2019-11-04T17:58:29.223 回答