Изменения

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

BSP-дерево

94 байта добавлено, 17:41, 17 января 2015
Нет описания правки
== Описание ==
Одной из важных задач вычислительной геометрии является визуализация объектов, когда точка обзора находится над плоскостью с 3D или 2D объектами. Определение местоположений объектов и их теней занимает много времени.
 
=== Адгоритм z-буфера ===
Для удаления невидимых частей объектов существует простой, но длительный метод - алгоритм z-буфера.
В направлении просмотра проводится ось z-координат, затем определяется, какие пиксели покрывают проекции объектов.
Алгоритм хранит информацию об уже обработанных объектах в двух буферах: буфере кадра и z-буфере.
*В буфере кадра для каждого пикселя хранится информация об интенсивности объекта, отображаемого им на данный момент, то есть тот объект из обработанных ранее, который виден в данной области.*В z-буфере для каждого пикселя хранится z-координата видимого на данный момент объекта, точнее, в нем хранится z-координату точки такого объекта. 
Предположим, что мы выбрали пиксель и преобразовываем объект.
*Если z-координата объекта в этом пикселе меньше, чем z-координата, хранимая в z-буфере, тогда новый объект лежит перед видимым на данный момент.Тогда запишем интенсивность нового объекта в буфер кадра, а его координату - в z-буфер.*Если z-координата объекта в этом пикселе больше, чем z-координата, хранимая в z-буфере, то новый объект не видим, и буферы останутся без изменений. Алгоритм z-буфера легко реализовать, и он быстро работает. Поэтому именно этот метод используют чаще всего, но у него есть свои недостаткисвой недостаток:Для для хранения z-буфера требуется большое количество памяти, кроме того, требуется дополнительная проверка каждого пикселя, покрываемого объектом. === Алгоритм художника ===Алгоритм художника избегает дополнительных затрат, изначально сортируя объекты по расстоянию от них до точки обзора. Тогда объекты проверяются в так называемом порядке глубины, начиная от самого дальнего. В таком случае при проверке объекта уже не нужна проверка его z-координаты, мы всегда пишем интенсивность в буфер кадра. Значения, хранимые в буфере ранее просто перезаписываются.
Алгоритм художника избегает дополнительных затрат, изначально сортируя объекты по расстоянию от них до точки обзора.
Тогда объекты проверяются в так называемом порядке глубины, начиная от самого дальнего. В таком случае при проверке объекта уже не нужна проверка его z-координаты, мы всегда пишем интенсивность в буфер кадра.
Значения, хранимые в буфере ранее просто перезаписываются.
Чтобы успешно применять данный метод, нужно уметь быстро сортировать объекты. К сожалению, это не всегда просто. Кроме того, порядок глубины не всегда существует: отношение "перед" может содержать циклы.
 
Когда такое цикличное перекрытие происходит, объекты не могут быть корректно отсортированы.
В таком случае мы должны разорвать циклы, разбив один или более объектов на части. (Картинка с примером)
 
Определение, какие объекты нужно разбить и где, затем сортировка их фрагментов - дорогой процесс, так как порядок зависит от положения точки обзора, и мы должны пересчитывать все при каждом ее смещении.
Чтобы использовать этот алгоритм в реальной жизни, например, в симуляторе полета, мы должны предпосчитать сцену так, чтобы можно было быстро найти корректный порядок отображения объектов для любой точки обзора.
Анонимный участник

Навигация