Недостаток метода буфера глубины заключается в том, что он определяет только одну видимую поверхность в каждом пикселе. Другими словами, он работает только с непрозрачными поверхностями и не может накапливать коды цветов для нескольких поверхностей, а это необходимо, если нужно отобразить прозрачную поверхность (рис. 9.8). Метод А-буфера так расширяет алгоритм буфера глубины, чтобы каждая позиция в буфере могла соответствовать целому списку поверхностей. Это позволяет вычислить цвет пикселя как комбинацию цветов различных поверхностей при расчете прозрачности или защиты от наложения.
Каждая позиция в А-буфере имеет два поля.
• Поле глубины: здесь хранится действительное значение (положительное, отрицательное или нуль).
• Поле данных о поверхности: здесь находятся данные о поверхности или указатель.
Если поле глубины неотрицательное, число, записанное в этой позиции, - это глубина поверхности, проектирующейся в соответствующую область пикселя. Следующее за ним поле данных о поверхности содержит такую информацию, как цвет поверхности для этой точки и процент охвата пикселя (рис. 9.9, а). Если поле глубины для позиции в А-буфере отрицательно, значит, цвет пикселя определяется вкладами нескольких поверхностей. Следующее за ним поле цвета содержит указатель на связанный список данных о поверхности, как показано на рис. 9.9, б. Информация о поверхности в А-буфере включает следующее:
• значения интенсивностей ШЗВ-компонентов;
• параметр непрозрачности (процент прозрачности);
• глубина;
• процент охвата площади;
• идентификатор поверхности;
• другие параметры, требуемые при визуализации поверхности.
Схему исследования видимых поверхностей в А-буфере можно реализовать с помощью методов, подобных представленным для алгоритма буфера глубины. Чтобы определить, какую часть площади пикселя вдоль отдельных строк развертки занимает поверхность, следует обработать все строки развертки. Поверхности делятся на многоугольную сетку и обрезаются по границам пикселей. Используя параметры прозрачности и процент охвата поверхности, алгоритмы визуализации рассчитывают цвет каждого пикселя как среднее вкладов перекрывающихся поверхностей.
МЕТОД СТРОК РАЗВЕРТКИ
Данный метод пространства изображений предназначен для выявления видимых компонентов поверхностей и сравнения глубин вдоль различных строк развертки на сцене. При обработке каждой строки развертки исследуются все проекции многоугольных поверхностей, пересекающих данную строку, и определяется, какая из них видима. Вдоль каждой строки развертки рассчитывается глубина, а по ней в каждом пикселе определяется, какая поверхность расположена ближе всего к плоскости наблюдения. Когда для пикселя определена видимая поверхность, ее цвет вводится в буфер кадров.
Поверхности обрабатываются с использованием информации, записанной в таблицах многоугольников (раздел 3.15). Координаты конечных точек всех линий на сцене, обратных наклонов каждой линии и указателей в таблицу граней поверхностей, определяющих поверхности, ограничиваемые каждой линией, записаны в таблице сторон. Таблица граней поверхностей содержит коэффициенты плоскости, свойства материалов поверхности, другие данные, касающиеся поверхности, и, возможно, ссылки на таблицу сторон. Чтобы облегчить поиск поверхностей, пересекаемых данной строкой развертки, для каждой строки развертки при обработке формируется активный список сторон. В этом списке в порядке увеличения х записаны стороны, которые пересекаются с данной строкой развертки. 1