угольных граней, можно найти в [15].

Методу упорядочения присущ тот же недостаток, что и методу z-буфера, а именно необходимость вывода всех лицевых граней. Чтобы избежать этого, можно его модифицировать следующим образом: грани выводятся в обратном порядке - начиная с самых близких и заканчивая самыми далекими (front-to-back). При выводе очередной грани рисуются только те пикселы, которые еще не были выведены. Как только весь экран будет заполнен, вывод граней можно прекратить.

Но здесь нужен механизм отслеживания того, какие пикселы были выведены, а какие нет. Для этого могут быть использованы самые разнообразные структуры, от линий горизонта до битовых масок.

Замечание. Рассмотрим подробнее, каким именно образом осуществляются проверки тестов 3 и 4. Пусть грань Р задана набором вершин Аь \ = 1, и, а грань Q - набором вершин BJtj= 1, ...,m.

Тогда для определения плоскости, проходящей через грань Р, достаточно знать вектор нормали п к этой грани и какую-либо ее точку, например Ah Уравнение плоскости, проходящей через грань Р, имеет следующий вид:

{п, г)-{А,, п) = 0, где вектор нормали задается формулой п = [A2~Ah А3-А2].

Компьютерная графика. Полигональные модели Грань 0 лежит но ту же стороны от плоскости, проходящей через грань Р, по которую находится и наблюдатель, расположенный в точке V, если

51§п{(п, В1) - (п, А,)} = 81§п{(п, 6) - (п, А,)}, 1 = 1,..., т,

Метод двоичного разбиения пространства

10.4.3.2. Метод двоичного разбиения пространства Существует другой, довольно элегантный и гибкий способ упорядочения граней.

Каждая плоскость в объектном пространстве разбивает все пространство на два полупространства. Считая, что эта плоскость не пересекает ни одну из граней сцены, получаем разбиение множества всех граней на два непересекающихся множества (кластера); каждая грань попадает в тот или иной кластер в зависимости от того, в каком полупространстве относительно плоскости разбиения эта грань находится.

Ясно, что ни одна из граней, лежащих в полупространстве, не содержащем наблюдателя, не может закрывать собой ни одну из граней, лежащих в том же полупространстве, в котором находится и наблюдатель (с небольшими изменениями это работает и для параллельного проектирования).


⇐ Предыдущая| |Следующая ⇒