После того как это дерево построено, построение изображения осуществляется в зависимости от используемого проектирования. Ниже приводится процедура построения изображения для центрального проектирования с центром в точке с.
л.
void drawBSPTree ( BSPNode * tree ) {
if ( tree -> plane.classify ( с ) == IN_FRONT ) {
if ( tree -> right != NULL )
drawBSPTree ( tree -> right );
drawFacet ( tree -> facet );
if ( tree -> left != NULL )
drawBSPTree ( tree -> left ) ;
}
else
{
if ( tree -> left != NULL )
drawBSPTree ( tree -> left ) ;
drawFacet ( tree -> facet );
if ( tree -> right != NULL )
drawBSPTree ( tree -> right );
}
}
Приведенная процедура осуществляет вывод граней в порядке back-to-front. Эту процедуру можно модифицировать для вывода только лицевых граней. Несложно также скорректировать ее и для работы с параллельным проектированием.
Если необходимо выводить грани в обратном порядке (front-to-back), то отработку левого и правого поддеревьев следует поменять местами. Но тогда потребуется механизм отслеживания уже заполненных пикселов экрана.
Как только все пикселы будут заполнены, рекурсивный обход дерева можно прекратить.
Одним из основных преимуществ этого метода является полная независимость дерева от параметров проектирования (положения центра проектирования, направления проектирования и др.), что делает его весьма удобным для построения серий изображений одной и той же сцены из разных точек наблюдения. Это обстоятельство привело к тому, что BSP-деревья стали широко использоваться в ряде систем виртуальной реальности. В частности, удаление невидимых граней в широко известных играх DOOM и всех играх серии Quake основано на привлечении именно В SP-деревьев.
В ряде случаев удобнее строить дерево, листьями которого будут не грани, а выпуклые многогранники, порядок, в котором выводятся лицевые грани выпуклых многогранников, может быть произволен и никакого влияния на конечный результат не оказывает. Причем BSP-дерево используется только для упорядочения этих многогранников, а уже упорядочение граней внутри каждого из них осуществляется другим способом.