Изменения

Перейти к: навигация, поиск

BSP-дерево

371 байт убрано, 21:05, 17 января 2015
BSP-деревья и алгоритм художника
Порядок фрагментов объектов в поддеревьях определяется таким же способом.
<code> '''void''' painters_algorithm(<tex>T</tex>, <tex>p_{view}</tex>): <tex>v \leftarrow T.root</tex> '''if ''' <tex>v</tex> is a leaf{{---}} лист отрисовать фрагменты объектов из <tex>S(v)</tex>. '''else if ''' <tex>p_{view} \in h_v^+</tex> painters_algorithm(<tex>T^-</tex>, <tex>p_{view}</tex>) отрисовать фрагменты объектов из <tex>S(v)</tex>. painters_algorithm(<tex>T^+</tex>, <tex>p_{view}</tex>) '''else if ''' <tex>p_{view} \in h_v^-</tex> painters_algorithm(<tex>T^+</tex>, <tex>p_{view}</tex>) отрисовать фрагменты объектов из <tex>S(v)</tex>. painters_algorithm(<tex>T^-</tex>, <tex>p_{view}</tex>) '''else ''' <font color="green">/∗ <tex>p_{view} \in h_v</tex> ∗/</font> painters_algorithm(<tex>T^+</tex>, <tex>p_{view}</tex>) painters_algorithm(<tex>T^-</tex>, <tex>p_{view}</tex>)</code>
Заметим, что мы не рисуем полигоны объекты из<tex>S(v)</tex>, когда <tex>p_{view}</tex> лежит на разбивающей плоскости <tex>h_v</tex>, потому что полигоны они являются плоскими двумерными объектамиполигона.
Эффективность данного алгоритма, как и любого другого алгоритма для BSP-деревьев, зависит от размера BSP-дерева. То есть мы должны необходимо выбирать разбивающие плоскости таким образом, чтобы фрагментация объектов была минимальной.
Перед тем, как разрабатывать стратегии разбиения, которые порождают маленькие BSP-деревья, мы должны решить, какие типы объектов допустимы. Мы заинтересовались BSP-деревьями потомуинтересны тем, что нам нужена была быстрая реализация позволяют достичь быстрой реализации удаления скрытых поверхностей для симулятора полетовотрисовки сцены (будь то симулятор полёта или игровой персонаж, наблюдающий игровой мир). Так как скорость {{---}} наша главная цель, мы должны следует упростить вид объектов нашего рассматриваемого пейзажа: не , поэтому далее будем использовать кривые поверхностисчитать, представив все в 3D мы работаем только с помощью полигонов.Предположиммногогранниками, что грани полигонов которых уже триангулированы, и мы хотим построить в трехмерном пространстве BSP-дерево наименьшего размера для данного множества треугольников.
== Построение BSP-дерева ==
Анонимный участник

Навигация