我正在用三维空间中的三角形构建BSP树。在构造BSP树之前,所有三角形都已转换为视图空间。因此,我使用点(0,0,0(作为观察者眼睛的位置,从远到近遍历树,并将所有访问的三角形添加到列表中。
然后,我遍历列表,用正交投影变换三角形,并将它们绘制到屏幕上。这在大多数情况下都有效,但有时我会因为错误的三角形顺序而得到奇怪的工件。如果我使用透视投影,这种情况就永远不会发生。
为什么正交投影会出现这种情况?在解决正交投影下的可见性问题时,BSP树是否不起作用?还是我需要采用我的眼睛姿势?
我很确定你可以使用BSP树进行正交投影,但与透视投影相比,这需要调整数学,因为尽管你的查看器位于0,0,0,但你无法根据该点对多边形进行排序。正交投影有效地将观察者放置在无穷远处。假设你是向下看标准的-Z轴,你需要遍历BSP树,就好像查看器在0,0,∞一样。如果你对分裂平面使用标准的ax+by+cz+d=0,那么数学实际上非常简单,因为你基本上只需要考虑c的符号就可以确定首先遍历平面的哪一边。(如果c为零,您可以先遍历任意一侧。(