La mayor diferencia práctica entre BSP-Trees y otros tipos de árboles 3d es que BSP-Trees puede ser más óptimo pero solo funciona en geometría estática. Esto se debe a que los árboles BSP generalmente son muy lentos de construir, a menudo demoran horas o días en un nivel típico de juego urbano estático. Las dos razones principales por las que los BSP-Trees tardan más en construirse son (a) utilizan planos de división no alineados con el eje, que tardan más en encontrarlos óptimamente, y (b) subdividen la geometría en los límites del eje, asegurando que no haya objetos cruzar planos divididos.
Otros tipos de árboles 3d (Octrees, Quadtrees, kd-tree, Bounding-Volume-Hierarchy) utilizan volúmenes delimitadores alineados con los ejes, y los volúmenes (opcionalmente) se pueden superponer, por lo que los objetos contenidos no necesitan ser cortado en los límites de volumen. Ambos hacen que los árboles sean menos óptimos que los árboles BSP, pero más rápidos de construir y más fáciles de cambiar para los objetos dinámicos.
Extrapolando estos factores en situaciones ... áreas
al aire libre suelen utilizar representaciones basadas en tierra de altura sobre el terreno, ya sea heightmaps simples o técnicas de geo-mapeo MIP más complejos como ROAM. El suelo en sí mismo no participa en la división del espacio en 3D, solo los objetos colocados en el suelo.
Los mundos con muchas instancias de geometría más simple y similar (casas, árboles, asteroides, etc.) a menudo usarán un árbol que no sea BSP (como BVH), porque poner la geometría en un árbol BSP significaría duplicar y dividir la geometría de detalle para cada instancia.
Por el contrario, una gran malla estática personalizada sin instancias, como una escena urbana o un entorno interior complejo, normalmente utilizará un BSP-Tree para un mejor rendimiento en tiempo de ejecución. El hecho de que BSP-Tree divide la geometría en los límites de los nodos es útil para el rendimiento de la representación, ya que los nodos BSP se pueden utilizar como lotes de representación de triángulos preorganizados. El BSP-Tree también se puede optimizar para la oclusión, evitando la necesidad de dibujar porciones del BSP-Tree que se sabe están detrás de otra geometría.
Véase también: Octree vs BVH, Bounding Volume Hierarchy Tutorial, BSP Tutorial.
Buena respuesta, aunque no estoy seguro de lo que quiere decir con "enviar" un objeto a la GPU en lugar de triángulos individuales. ¿Te refieres al modo inmediato de VBO vs. Porque eso se puede hacer con ambos enfoques, pensé ... – Aktau
@DavidJeske Esa respuesta tiene seis años. Un largo tiempo en ciencias de la computación. Esto puede haber cambiado ahora. –
El comentario sobre el dibujo es más lento con BSP es incorrecto. Los BSP están diseñados para optimizar grandes geometrías estáticas. Se usaron originalmente para optimizar la oclusión para la rasterización de software y, desde entonces, también se han utilizado para calcular previamente los lotes de dibujo para la rasterización de hardware. Los BSP no son una buena opción cuando hay muchas instancias, porque los objetos deben ser instanciados y subdivididos en el BSP. Los BSP también son malos para objetos dinámicos, porque son demasiado lentos para construir. –