
- •Растровая и векторная графика
- •Сравнение векторной и растровой графики
- •Панель инструментов
- •Выделение областей
- •Средства рисования
- •Средства рисования.
- •Работа со слоями
- •Основные понятия векторной графики
- •Специальные эффекты
- •Геометрические объекты
- •Негеометрические объекты
- •Материалы и карты
- •Алгоритм заполнения с упорядоченным списком ребер
- •Построчный алгоритм заполнения с затравкой для гранично-определенной четырехсвязной области
- •Алгоритм, использующий z-буфер
- •Простые модели освещенности и методы затенения
Простые модели освещенности и методы затенения
Алгоритмы компьютерной графики, связанные с построением реалистических изображений, отличаются существенной сложностью. Поэтому в настоящем обзорном курсе ограничимся лишь краткими сведениями о возможных простых моделях освещенности и методах затенения.
В простейших моделях освещенности считается, что подлежащие визуализации объекты обладают только свойствами диффузного отражения: диффузно отраженный свет рассеивается равномерно по всем направлениям, и положение наблюдателя при этом не имеет значения. Для цветных поверхностей модель освещенности применяется к каждому из трех основных цветов.
Интенсивность отраженного света при освещении объекта точечным источником определяется по закону косинусов Ламберта:
I = Il kd cos ,
где Il – интенсивность точечного источника, kd – коэффициент диффузного отражения (0 kd 1), – угол между направлением света и нормалью к поверхности (0 /2).
Можно учесть также падающий на объект рассеянный свет. Для этого обычно в формулу для расчета интенсивности отраженного света вводят, в линейной комбинации с членом Ламберта, дополнительную составляющую:
I = Ia ka + Il kd cos ,
где Ia – интенсивность рассеянного света, ka – коэффициент диффузного отражения рассеянного света (0 kа 1).
При перспективном преобразовании сцены чаще всего объекты, расположенные дальше от точки наблюдения, затеняют в большей степени, чем те, которые расположены ближе. Одна из возможных моделей, учитывающих фактор удаленности объекта от наблюдателя, выглядит так:
I = Ia ka + (Il kd cos ) / (d + K ),
где d – расстояние от центра проекции до объекта, K – произвольная постоянная.
Существуют и другие, более сложные, модели освещенности.
Вместе с тем, выделяют три относительно простых метода затенения (закрашивания), предполагающие ту или иную интерполяцию освещенности: метод постоянного закрашивания (по Ламберту), метод Гуро и метод Фонга.
Независимо от применяемого в дальнейшем метода поверхности объектов аппроксимируются набором плоских выпуклых граней – полигонов. Чаще всего, для этой цели используются треугольные полигоны. Это объясняется тем, что три вершины однозначно определяют положение плоскости в пространстве и, кроме того, из треугольников всегда можно получить любой другой многоугольник.
Суть метода постоянного закрашивания заключается в том, что на каждом полигоне определяется освещенность в произвольной точке, и полученное значение используется для всего полигона. Изображение при этом имеет ярко выраженный полигональный характер – видно, что поверхность состоит из отдельных граней, на границах между которыми освещенность претерпевает разрывы (фактически освещенность является кусочно-постоянной функцией).
Метод Гуро обеспечивает непрерывность освещенности за счет ее билинейной интерполяции: после определения значений освещенности в вершинах полигона применяют линейную интерполяцию вдоль сторон полигона, а потом – линейную интерполяцию между сторонами полигона вдоль каждой из сканирующих строк, пересекающих полигон (при этом освещенность рассчитывается для каждого пикселя соответствующего интервала сканирующей строки).
В методе Фонга также применяется билинейная интерполяция, но по отношению к вектору нормали к поверхности: рассчитывают векторы нормали в вершинах полигона, осуществляют линейную интерполяцию вектора нормали вдоль сторон полигона, а затем – линейную интерполяцию вдоль каждой сканирующей строки, пересекающей полигон, между сторонами полигона (при этом вектор нормали рассчитывается для каждого пикселя соответствующего интервала сканирующей строки). Полученное поле распределения вектора нормали используется в дальнейшем при расчете освещенности для каждого пикселя полигона (отметим здесь, что ориентация друг относительно друга вектора нормали к поверхности и направления света от точечного источника учитывается во всех моделях освещенности).