我正在复习OpenGL的基础知识。一切都很顺利。我正在看BSP的地图/等级。我知道Doom使用BSP,但我很担心。BSP可以用于完整的3D世界,而不是2.5D透视图吗?
发布于 2021-09-06 00:09:32
是的,完整的3D BSP是可能的,例如在地震或地震衍生的引擎,如半条命,或其他游戏从那个时代。
也就是说,BSP通常不再用于渲染目的。在某些情况下,它们仍可用于物理引擎的碰撞检测。
发布于 2021-09-06 12:00:21
有两种类型的BSP树,轴对齐BSP (又名and树)和多边形对齐BSP。Doom使用多边形对齐的变化。
多边形对齐的BSP树可以按遮挡顺序遍历(背对前,或前后对背,视需要而定)。这使得它们在Z-缓冲区不可用的情况下非常有用,也是BSP树被选择为Doom的最初原因。(第一次创建Doom时没有Z缓冲区)
BSP树的构造使用"超平面“。所谓的2.5D世界是使用一个一维超平面(也就是一条线)来分割一个有效的二维世界。
在三维中,超平面是将三维世界分成两个独立的三维子空间的二维平面。然后递归地分割,直到世界上所有的物体被分割。这是你建议的BSP树的类型:多边形对齐,使用2D超平面来划分3D世界。
BSP树对拆分点的选择非常敏感,并且可能导致非常大的树,特别是在人口稠密的世界中,对象的大小多种多样,因为许多对象最终会落在拆分点上。
八叉树将是BVH的另一个选择,它在网络上有更好的资源可供实现,并且对分割点的选择不太敏感,因此通常会产生更多的性能树。(但并非总是如此)
https://computergraphics.stackexchange.com/questions/12174
复制相似问题