Тема 12. Построение реалистических изображений
В этом разделе мы рассмотрим методы, которые позволяют получить реалистичные изображения для объектов, моделируемые многогранниками и полигональными сетками.
Модели отражения света
Рассмотрим, как можно определить цвет пикселей изображения поверхности согласно интенсивности отраженного света с учетом взаимного расположения отражающей поверхности, источника света и наблюдателя.
Зеркальное отражение света. Угол между нормалью и падающим лучом (Θ) равен углу между нормалью и отраженным лучом. Падающий луч, отраженный, и нормаль располагаются в одной плоскости (рис. 12.1).
Рисунок 12.1. Зеркальное отражение света
Поверхность считается идеально зеркальной, если на ней отсутствуют какие-либо неровности (рисунок 12.2, а).
| |||
| |||
Рисунок 12.2. Зеркальное отражение света
Собственный цвет у такой поверхности не наблюдается. Световая энергия падающего луча отражается только по линии отраженного луча. Какое-либо рассеяние в стороны от этой линии отсутствует. В природе нет идеально гладких поверхностей, поэтому полагают, что если глубина шероховатостей существенно меньше длины волны излучения, то рассеивания не наблюдается. Для видимого спектра излучения можно принять, что глубина шероховатостей поверхности зеркала должна быть меньше 0.5 мкм.
Если поверхность зеркала отполирована неидеально (рисунок 12.2, б), то наблюдается зависимость интенсивности отраженного света от длины волны — чем больше длина волны, тем лучше отражение. Например, красные лучи отражаются сильнее, чем синие. При наличии шероховатостей существует зависимость интенсивности отраженного света от угла падения. Отражение света максимально для углов, близких к 90 градусам.
|
|
|
|
Рисунок 12.3. Индикатриссы рассеивания для различных видов отражения
К числу простейших, но достаточно часто используемых, относится эмпирическая модель закона распределения Фонга, согласно которой интенсивность зеркально отраженного излучения пропорциональна cospa, где a — угол отклонения от линии идеально отраженного луча. Показатель р находится в диапазоне от 1 до 200 и зависит от качества полировки. Запишем это таким образом:
Is=IKscospa, (1)
где I— интенсивность излучения источника, Ks — коэффициент пропорциональности, который изменяется от 0 до 1.
Диффузное отражение. Этот вид отражения присущ матовым поверхностям. Матовой можно считать такую поверхность, размер шероховатостей которой уже настолько велик, что падающий луч равномерно рассеивается во все стороны. Такой тип отражения характерен для гипса, песка и бумаги.
Диффузное отражение описывается законом Ламберта, согласно которому интенсивность отраженного света пропорциональна косинусу угла между направлением на точечный источник света и нормалью к поверхности (рис. 12.2 б).
|
Рисунок 12.2. Зеркальное отражение света
Id=I Kd cosq, (2)
где I— интенсивность источника света, Kd — коэффициент, который учитывает свойства материала поверхности. Значение Kd находится в диапазоне от 0 до 1. Интенсивность отраженного света не зависит от расположения наблюдателя.
Матовая поверхность имеет свой цвет. Наблюдаемый цвет матовой поверхности определяется комбинацией собственного цвета поверхности и цвета излучения источника света.
Комбинированное отражение
При создании реалистичных изображений следует учитывать то, что в природе не существует идеально зеркальных или полностью матовых поверхностей (рис.12.3, б).
При изображении объектов средствами компьютерной графики обычно моделируют сочетание зеркального и диффузного рассеивания в пропорции, характерной для конкретного материала. В этом случае модель отражения записывают в виде суммы диффузной и зеркальной компонент:
Iотр=I (Kd cosq+Kscospa), (3)
где константы Kd, KS определяют отражательные свойства материала.
Согласно этой формуле интенсивность отраженного света равна нулю для некоторых углов Θ и a. Однако в реальных сценах обычно нет полностью затемненных объектов, следует учитывать фоновую подсветку, освещение рассеянным светом, отраженным от других объектов. В таком случае интенсивность может быть эмпирически выражена следующей формулой:
Iотр= Iа Kа+I (Kd cosq+Kscospa), (4)
где Iа — интенсивность рассеянного света, Ка — константа, определяющая рассеивающие свойства поверхности, изменяется от 0 до 1.
|
Можно еще усовершенствовать модель отражения, если учесть, что энергия от точечного источника света уменьшается пропорционально квадрату расстояния. Использование такого правила вызывает сложности, поэтому на практике часто реализуют модель, выражаемую эмпирической формулой:
Iотр= Iа Kа+I (Kd cosq+Kscospa)/(R+k), (5)
где R — расстояние от центра проекции до поверхности, k — константа, подбираемая эмпирически.
Как определить цвет закрашивания точек объектов в соответствии с данной моделью? Наиболее просто выполняется расчет в градациях серого цвета (например, для белого источника света и серых объектов). В данном случае интенсивность отраженного света соответствует яркости. Сложнее обстоит дело с цветными источниками света, освещающими цветные поверхности. Например, для модели RGB составляются три формулы расчета интенсивности отраженного света для соответствующих цветовых компонент. Коэффициенты Ка и Kd различны для цветовых компонент. Т.к. цвет отраженного зеркального луча равен цвету источника, то коэффициент Ks будет одинаковым для всех компонент цветовой модели. Цвет источника света выражается значениями интенсивности I для соответствующих цветовых компонент.
Метод Гуро
Этот метод предназначен для создания иллюзии гладкой криволинейной поверхности, описанной в виде многогранников или полигональной сетки с плоскими гранями. Если каждая плоская грань имеет один постоянный цвет, определенный с учетом отражения, то различные цвета соседних граней очень заметны, и поверхность выглядит именно как многогранник. Этот эфект можно замаскировать за счет увеличения количества граней при аппроксимации поверхности. Но зрение человека имеет способность подчеркивать перепады яркости на границах смежных граней— такой эффект называется эффектом полос Маха. Поэтому для создания иллюзии гладкости необходимо значительно увеличить количество граней, что приводит к существенному замедлению визуализации. Т.к. чем больше граней, тем меньше скорость отрисовки.
Метод Гуро основан на идее закрашивания каждой плоской грани не одним цветом, а плавно изменяющимися оттенками, вычисляемыми путем интерполяции цветов примыкающих граней.
Рис.12.4 – Нормаль в вершине
Закрашивание граней по методу Гуро осуществляется в четыре этапа.
1) Вычисляются нормали к каждой грани.
2) Определяются нормали в вершинах. Нормаль в вершине определяется усреднением нормалей примыкающих граней (рис. 12.4).
3) На основе нормалей в вершинах вычисляются значения интенсивностей в вершинах согласно выбранной модели отражения света.
4) Закрашиваются полигоны граней цветом, соответствующим линейной. интерполяции значений интенсивности в вершинах
Вектор нормали в вершине (а) равен
Na = (N1+ N2+ N3)/3 (6)
Определение интерполированных значений интенсивности отраженного света в каждой точке грани (и, следовательно, цвет каждого пиксела) удобно выполнять во время цикла заполнения полигона. Рассмотрим заполнение контура грани горизонталями в экранных координатах (рис. 12,5).
Рис.12.5 – Заполнение контура грани
Интерполированная интенсивность I в точке (X,Y) определяется из пропорции (I-I1)/(X-X1) = (I2-I1)/(X2-X1)
Отсюда I=I1+(I2-I1)(X-X1)/(X2-X1).
При этом значения интенсивностей I1 и I2 на концах горизонтального отрезка представляют собой интерполяцию интенсивности в вершинах:
Метод Фонга
Аналогичен методу Гуро, но при использовании метода Фонга для определения цвета в каждой точке интерполируются не интенсивности отраженного света, а векторы нормалей.
-Определяются нормали к граням.
- По нормалям к граням определяются нормали в вершинах.
- В каждой точке закрашиваемой грани определяется интерполированный вектор нормали.
- По направлению векторов нормали определяется цвет точек грани в соответствии с выбранной моделью отражения света.
Рассмотрим, как можно получить вектор нормали в каждой точке грани. Для интерполяции будем оперировать векторами N'a, N'b и N'c, исходящими из центра координат плоскости проецирования и параллельными соответствующим нормалям Na, Nb и Nc в вершинах а, в и с (рис. 12,6).
рис. 12.6 – Интерполяция векторов нормалей
где, XNa, YNa, ZNa, XNb, YNb, ZNb, XNc, YNc и ZNc — координаты векторов N'a, N'b и N'c. Теперь найдем координаты вектора N':
Вектор N' параллелен вектору N для нормали в точке (X, Y), поэтому eго можно использовать для расчета отражения света так же, как и вектор нормали N.
Метод Фонга сложнее, чем метод Гуро. Для каждой точки (пиксела) поверхности необходимо выполнять намного больше вычислительных операций. Тем не менее он дает значительно лучшие результаты, в особенности при имитации зеркальных поверхностей.