МЕТОД БУФЕРА ГЛУБИНЫ

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

На рис. 9.4 показаны три поверхности с разным расстоянием по линии орто-графической проекции от точки (х,у). Данные поверхности можно исследовать в любом порядке. При обработке каждой поверхности ее глубина от плоскости на-

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

Рис. 9.4. В один пиксель плоскости наблюдения (х, у) проектируются три точки накладывающихся поверхностей. Наименьшее значение глубины имеет видимая поверхность 51

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

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

Этапы обработки с использованием буфера глубины сведены в приведенном ниже алгоритме, где предполагается, что значения глубины нормированы в промежуток 0-1, причем плоскости наблюдения соответствует глубина 0. Данный алгоритм можно также применить для любого диапазона глубин, что позволяют некоторые графические пакеты.

Алгоритм буфера глубины

1. Инициализировать буфер глубины и буфер кадров так, чтобы для всех позиций буфера (гг, у)

с1ер^Ви££ (х, у) =1.0,


⇐ вернуться назад | | далее ⇒