logo search
KGMicro

15.5. Алгоритм, использующий z-буфер

Другим алгоритмом, даже более простым, чем предыдущий, является алгоритм, построенный на основе z-буфера, или, точнее, алгоритм, работающий в пространстве изображения и использую­щий буфер глубины. Для него требуется не только буфер регенера­ции, в котором запоминаются значения яркости, но также и z-бу-фер, куда можно помещать информацию о координате г для каждого пэла. Вначале в z-буфер заносятся максимально возможные зна­чения г, а буфер регенерации заполняется значениями пэлов, описы­вающими фон. Затем каждый многоугольник преобразуется в ра­стровую форму и записывается в буфер регенерации, при этом, однако, не производится начального упорядочения, которое было необходимо в алгоритме сортировки по глубине. При разложении в растр для каждой точки многоугольника выполняются следующие шаги:

1. Вычисление глубины многоугольника z(x, у) в точке (х, у).

2. Если г(х, у) меньше, чем значение z-буфера в позиции (х, у), то

а) г(х, у) заносится в элемент (х, у) z-буфера и

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

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

Весь процесс представляет собой не более чем поиск среди мно­жества пар {zi(x, у), Vi(x, у)} для заданных х и у с целью найти минимальное гг. При успешном поиске минимальное из встретив­шихся значений z помещается в z-буфер для каждой позиции (х, у). Очередность появления объектов на экране определяется упорядо­ченностью, с которой обрабатываются многоугольники, т. е. они могут изображаться не обязательно в направлении от переднего плана к заднему или от заднего к переднему.

Этот алгоритм обладает недостатком: для него требуется боль­шой объем памяти под z-буфер. Однако реализация алгоритма очень проста. Эксплуатационные характеристики остаются все время почти постоянными, поскольку в среднем с ростом числа многоугольников в видимом объеме уменьшается число пэлов, покрываемых одним многоугольником. Поэтому средний размер каждого множества пар, среди которых производится поиск, практически постоянен (разд. 15.8).

Пусть некоторый заданный многоугольник построчно преобразуется в растровую форму. Вычисление координаты z для каждой |.точки сканирующей строки можно упростить, воспользовавшись тем, •что многоугольник плоский. Обычно для определения г уравнение ;плоскости

решается относительно этой переменной

" * *~* \ Г\ Г\

kТеперь, если в точке (х, у) в уравнении (15.6) получается значение Zi, то в точке (х+Дх, у)

Отношение А/С является постоянным, а Дх=1, поэтому, если -задана глубина в точке (х, у), для вычисления глубины в точке (#-Н, у) требуется выполнить лишь одно вычитание.