Метод z-буфера

Метод z-буфера основан на том же принципе, что и алгоритм сортировки по глубине: на любом участке экрана оказывается проекция элемента, расположенного лпже всех прочих к наблюдателю. Здесь под элементами понимаются точки, кривые или поверхности. Данный метод требует использования области памяти, называемой z-буфером. В этом буфере для каждого пиксела хранится значение координаты Zv. того элемента, проекция которого изображается данным пикселом. Как уже говорилось, значение Zv. (то есть координата z в наблюдательской системе) есть мера удаленности объекта от наблюдателя. Объем 2-буфера определяется количеством пикселов, для каждого из которых требуется сохранить вещественное число.

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

Сначала проецируется произвольно выбранная поверхность, и в ячейки памяти z-буфера, соответствующие пикселам проекции поверхности, записываются значения координат Zv. точек поверхности, являющихся прообразами данных пикселов. Пикселы окрашиваются в цвет первой поверхности. Затем проецируется следующая поверхность, и все неокрашенные пикселы, относящиеся к ее проекции, окрашиваются в цвет второй поверхности. Если пикселы уже были окрашены, соответствующие нм значения Zv. сравниваются со значениями Zv. точек текущей поверхности. Если сохраненное значение Zv. какого-то пиксела оказывается больше текущего (то есть точка на предыдущей поверхности ближе к наблюдателю, чем точка на текущей поверхности), цвет пиксела не меняется. В противном случае пиксел окрашивается в цвет текущей поверхности. Изначально 2-буфер инициализируется координатами Zv., соответствующими дальней плоскости (см. рис. 3.11), поэтому пикселы проекции первой поверхности автоматически окрашиваются в ее цвет. Повторяя эту процедуру для всех имеющихся плоскостей, мы окрасим все пикселы экрана в цвета ближайших поверхностей (рис. 3.27).

 
Метод z-буфера
 
 

Как следует из предшествующего описания, метод 2-буфера предназначен главным образом для удаления скрытых поверхностей, как и метод сортировки по глубине. Однако метод 2-буфера с небольшими изменениями позволяет реализовать и построение рисунков со скрытыми линиями. Сначала все поверхности проецируются на экран, причем пикселы окрашиваются в цвет фона (на экране ничего не появляется). При этом 2-буфер заполняется правильными значениями Zv. Затем на экран проецируются ребра поверхностей. При этом значения Zv.. ребер сравниваются со значениями Zv ближайших к наблюдателю поверхностей, уже найденными на предыдущем этапе. Окрашиваются только те пикселы, для которых новые значения Zv. больше исходных. Таким образом, участки ребер, скрытые поверхностями, на экране не появляются. Эта процедура дает правильный рисунок без скрытых линий, но некоторые граничные линии могут оказаться слишком тонкими, потому что некоторые пикселы этих линий будут относиться к поверхностям, ограниченным соответствующими ребрами. Эту проблему легко решить, пододвинув весь объект поближе в момент проецирования ребер.

 

 

Смотрите также