Самая большая практическая разница между деревьями BSP и другими видами 3d-деревьев заключается в том, что BSP-деревья могут быть более оптимальными, но только работают на статических геометрии. Это связано с тем, что BSP-деревья, как правило, очень медленны, чтобы строить, часто принимая часы или дни для типичного статического уровня городской игры.
Две основные причины, по которым BSP-Trees занимают больше времени, являются: (a) они используют плоскости, не ориентированные по оси, которые занимают больше времени, чтобы оптимально находить, и (b) они подразделяют геометрию на границы осей, гарантируя отсутствие объектов пересекающихся плоскостей.
Другие типы 3d-деревьев (Octrees, Quadtrees, kd-tree, Bounding-Volume-Hierarchy) используют ориентированные по оси ограничительные тома, а томам (необязательно) разрешено перекрываться, поэтому содержащиеся в нем объекты не нужны быть разрезанными по границам объема. Они делают деревья менее оптимальными, чем BSP-деревья, но быстрее их строить и легче изменять для динамических объектов.
Экстраполируя эти факторы в ситуации ...
На открытой площади, как правило, используют на основе высоты основного поля представления, либо простые или более карты высот сложные методы гео-мип-маппинг, ROAM. Сама земля не участвует в разделении трехмерного пространства, а только объекты, расположенные на земле.
Миры с большим количеством экземпляров более простой и аналогичной геометрии (дома, деревья, астероиды и т. Д.) Часто будут использовать не-BSP-дерево (такое как BVH), потому что помещение геометрии в дерево BSP означало бы дублируя и разбивая геометрию детали для каждого экземпляра.
И наоборот, большая пользовательская статическая сетка без инсталяции, такая как городская сцена или сложная внутренняя среда, как правило, использует BSP-Tree для повышения производительности во время выполнения. Тот факт, что BSP-Tree разбивает геометрию на границах узлов, полезен для рендеринга производительности, поскольку узлы BSP могут использоваться в качестве предварительно организованных пакетов рендеринга треугольников. BSP-Tree также может быть оптимизирован для окклюзии, избегая необходимости рисовать части BSP-дерева, которые, как известно, находятся за другой геометрией.
См. Также: Octree vs BVH, Bounding Volume Hierarchy Tutorial, BSP Tutorial.
Хороший ответ, хотя я не уверен, что вы подразумеваете под «отправкой» объекта на графический процессор вместо отдельных треугольников. Вы имеете в виду VBO против немедленного режима? Потому что это можно сделать с обоими подходами, которые я думал ... – Aktau 2012-07-06 21:52:53
@DavidJeske Этот ответ шесть лет. Долгое время в информатике. Возможно, это изменилось. – 2014-10-22 21:41:14