Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuternaya_grafika.doc
Скачиваний:
90
Добавлен:
23.04.2019
Размер:
5.45 Mб
Скачать

26. Алгоритмы отсечения в пространстве объектов

Данный алгоритм относится к другой группе алгоритмов отсечения, так как работает в пространстве объектов. Для повышения эффективности (уменьшения количества шагов разбиения) осуществляется дробление окон вдоль границ многоугольника.

Алгоритм Вейлера-Азертона на одноименном двухмерном алгоритме. Трехмерный алгоритм реализуется за четыре этапа:

1) предварительная сортировка по глубине (z-сортировка);

2) сортировка многоугольников на плоскости (x,y-сортировка);

3) удаление экранированных многоугольников;

4) рекурсивное разбиение и окончательная сортировка при наличии неопределенности.

ЭТАП 1. Z-сортировка.

Н а этом этапе происходит формирование списка приблизительных приоритетов, определяющего в первом приближении удаленность многоугольников от наблюдателя. Если за точку наблюдения принимать z=+∞, то ближайший многоугольник должен иметь максимальную z-координату. Построение списка приблизительных приоритетов осуществляется путем сохранения z-координат для каждого из многоугольников.

ЭТАП 2. X,Y-сортировка.

На данном этапе происходит сортировка в плоскости экрана. В результате создается два списка многоугольников:

А) внутренний (для многоугольников, попадающих в окно)

Б) внешний (для всех прочих).

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

Поскольку отсечение производится ближайшим многоугольником, то первым во внутреннем списке является он сам.

ЭТАП 3.

Н а данном этапе выполняется полная проверка координат многоугольников, учитывая тот факт, что первоначальная z-сортировка является приблизительной.

При выполнении проверки для каждой j-ой вершины i-ого многоугольника с координатами (Xij, Yij), отсекаемого ближайшим многоугольником, определяется глубина Zij. Затем Zij сравнивается с глубиной Zk ближайшего многоугольника, зафиксированного при z-сортировке. Если вычисленная величина Zij< Zk, то порядок, определенный z-сортировкой, правильный. В том случае, если Zij > Zk, то результат z-сортировки – ошибочен. В первом случае продолжается рекурсивная работа с внешним списком многоугольников. Во втором случае – необходим переход к четвертому этапу.

ЭТАП 4.

Необходимость в нем возникает в том случае, если среди Zij есть значение, большее Zk. Такой многоугольник, по крайней мере, частично экранирует ближайший многоугольник, определенный на первом этапе. Для устранения ошибки сортировки осуществляется рекурсивное разбиение X,Y-плоскости с использованием в качестве отсекающего того многоугольника, который нарушил правило сортировки по z-координате. Отсечению подлежат многоугольники из внутреннего списка, в том числе и старый ближайший многоугольник. Для отсечения используется копия нового претендента. Данный алгоритм обрабатывает случаи циклического перекрытия нескольких многоугольников.

Конец 26 вопроса.

27. Алгоритмы сортировки по глубине.

Данный алгоритм был предложен Ньюэллом и Санчем. При работе исполняется понятие оболочек геометрических объектов. В общем случае в качестве n - мерной оболочки подразумевается n - мерный параллелепипед, размеры которого соответствуют габаритным размерам исходного объекта.

Данный вариант алгоритма позволяет сортировать многоугольники по их Z – координатам и реализуется за три шага:

1) упорядочивание многоугольника по координате Z – max;

2) разрешение неопределенностей при перекрытии Z-оболочек;

3) преобразование многоугольников в растровую форму.

Для выполнения шага 2 исполняется тест, состоящий из 5 проверок.

Рассмотрим ситуацию, при которой в качестве ближайшего многоугольника на первом шаге выбран многоугольник P. Многоугольник имеющий перекрытие Z оболочек с многоугольником Р обозначаем Q.

Необходимо выполнить следующие пять проверок:

1) Х- оболочки не перекрываются;

2) У- оболочки не перекрываются;

3) многоугольник Р целиком за плоскостью Q;

4) многоугольник Q целиком перед плоскостью Р;

5) ХУ- оболочки многоугольников Р и Q не перекрываются.

Если во всех пяти случаях получается отрицательный ответ, то Р закрывает Q, в противном случае Q закрывает Р, поэтому в первоначальном списке многоугольники Р и Q необходимо поменять местами

Данный алгоритм не позволят обрабатывать в случае взаимного перекрытия объектов, этот вариант приводит к зацикливанию алгоритма

Для устранения данного недостатка осуществляется контроль за моментом возникновения зацикливания, для этого фиксируются многоугольники, входящие в список конфликтов.

Зацикливание образуется при повторном вхождении многоугольников в список. Для того чтобы разорвать подобный цикл, многоугольник, повторно возникший в этом списке, делят на две части, таким образом, чтобы не возникало конфликтов между многоугольниками. Данный алгоритм часто называют «алгоритмом художника». Егос ложность определяется Q (n2), где n – количество многоугольников.

Алгоритм сортировки по глубине использующий Z- буфер.

Принципиальное отличие от алгоритма Ньюэма- Санча заключа-ется в том, что Z координаты рассматриваются не для многоугольников, а для точек экрана. Для хранения Z координат используется буфер глубины или Z-буфер, который может представить из себя как часть ОП, так и специальный сегмент памяти, принадлежащей графической подсистеме ПК. Перед началом работы алгоритма выполняются следующие операции:

1) в видео буфер заносится изображение фона;

2) в Z-буфер заносится максимальное значение Zmax.

Затем каждый многоугольник раскладывается в растр и записывается в видео буфер без сортировки по глубине. При разложении в растр для каждой точки i-ого многоугольника c координатами (x,y) выполняются следующие действия:

- вычисление глубины i-ого многоугольника – точки Zi (x,y);

- в том случае, если рассчитанное значение Zi(x,y) < Zбуф(x,y), то цвет многоугольника заносится в точку (x,y) видеобуфера. В противном случае изменения видеобуфера не происходит и осуществляется переход к следующей точке.

Таким образом, после обработки всех многоугольников сцены в Z-буфере оказываются координаты ближайших к наблюдателю объектов. Единственной трудоемкой операцией является вычисление Z-координат многоугольника по координатам (x,y). Однако если рассматривать эту операцию более детально, то и ее трудоемкость можно значительно снизить.

Для вычисления Z(x,y) используется формула Ax+By+Cz+D=O отсюда: Z(x,y) = - (Ax+By+D)/C, т.к. развертка идет вдоль строк, то полное вычисление Z координат можно производить один раз на строку растра. Остальные значения вычисляются как Z(x+Ux,y): Z = Z1 + A*Ux/C. Таким образом, при отображении очередного пиксела растра необходима одна операция вычитания.

Достоинство. Простота алгоритма, что с одной стороны позволяет выполнить его аппаратную реализацию, а с другой стороны позволяет достичь высокого быстродействия.

Недостаток. Необходимость значительного объема буфера глубины.

Область применения:

1) мультимедийные игровые программы;

2) аппаратная реализация 3D-ускорителя, предназначенного для бытовых/игровых ПК.

При практической реализации алгоритма 3D-отсечения возникают ситуации, в которых необходимо использовать достоинства отдельных алгоритмов. Поэтому на практике используются не отдельные классические алгоритмы 3D-отсечения, а их комбинации. Причем алгоритмы, ориентированные на пространство объектов, могут быть реализованы в пространстве изображений и наоборот.

Конец 27 вопроса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]