Построение реалистических изображений. Модели освещения.
·
Закраска
граней: плоское закрашивание (Ламберта),
Эта группа состоит из наиболее сложных алгоритмов, реализующих закраску участвующих в сцене объектов с учетом их взаимного расположения и
физических, в том числе оптических свойств, а также расположения и
характеристик источников света.
Визуальное восприятие объектов окружающей действительности
представляет собой сложный процесс, имеющий как физические, так и
психологические аспекты.
Глаз адаптируется к средней яркости рассматриваемой сцены, поэтому
при смене фона изменяется восприятие сцены. Например, однородно окрашенная
область на более темном фоне будет казаться более яркой, чем на светлом.
Еще одна особенность восприятия заключается в том, что граница
равномерно освещенной области кажется более яркой по сравнению с внутренними
частями. Это явление было обнаружено Эрнстом Махом, поэтому оно получило
название эффекта полос Маха. Такие особенности необходимо
учитывать, если мы стремимся к созданию реалистических изображений сцен.
При формировании изображения сцен, содержащих зеркальные и
полупрозрачные поверхности, следует использовать законы геометрической оптики,
преломляющие свойства материалов, эффекты смешения цветов и т.д.
Объекты окружающего пространства становятся видимыми для глаза
благодаря световой энергии, которая может излучаться поверхностью предмета, отражаться
или проходить сквозь нее. В свою очередь, отражение света от поверхности
зависит от физических свойств материала, из которого она изготовлена, а также
от характера и расположения источника света. Яркость (или интенсивность)
освещения зависит от энергии светового потока, которая обуславливается,
во-первых, мощностью источника света, а во-вторых, отражающими и пропускающими
свойствами объекта.
Сначала мы рассмотрим модель освещения, учитывающую только
отражение. Свойства отраженного света зависят главным образом от направления
лучей и характеристик отражающей поверхности.
Отражение может быть двух видов: диффузное и зеркальное.
Первое из них возникает в ситуации, когда свет как бы проникает под поверхность
объекта, поглощается, а потом равномерно излучается во всех направлениях.
Поверхность в этом случае рассматривается как идеальный
рассеиватель. При этом возникает эффект матового
света, а видимая освещенность того или иного участка поверхности не зависит от
положения наблюдателя. Зеркальное отражение, наоборот, происходит от внешней
поверхности, интенсивность его неоднородна, поэтому видимый максимум
освещенности зависит от положения глаза наблюдателя.
Рис. 10.1. Освещение точечным
источником
Свет точечного источника отражается от поверхности рассеивателя по закону Ламберта: интенсивность отражения
пропорциональна косинусу угла между внешней нормалью к поверхности и
направлением к источнику света Если - интенсивность источника света,
- угол между вектором внешней нормали к поверхности и направлением
к источнику света, то интенсивность отраженного света определяется формулой
|
(10.1) |
При таком расчете интенсивности получится очень контрастная картина,
т.к. участки поверхности, на которые лучи от источника не попадают напрямую,
останутся абсолютно черными. Для повышения реалистичности необходимо учитывать
рассеивание света в окружающем пространстве. Поэтому вводится фоновая
освещенность, зависящая от интенсивности рассеянного света , и интенсивность отраженного света определяется выражением
|
(10.2) |
где - коэффициент диффузного отражения рассеянного света,
- коэффициент диффузного отражения падающего света,
В описанной модели пока никак не учитывалась удаленность источника
света от поверхности, поэтому по освещенности двух объектов нельзя судить об их
взаимном расположении в пространстве. Если мы хотим получить перспективное
изображение, то необходимо включить затухание интенсивности с расстоянием.
Обычно интенсивность света обратно пропорциональна квадрату расстояния от
источника. В качестве расстояния до источника в случае перспективного
преобразования можно взять расстояние до центра проекции, и если он достаточно
удален, то изображение будет достаточно адекватным. Но если этот центр
расположен близко к объекту, то квадрат расстояния меняется очень быстро, и в
этом случае лучше использовать линейное затухание. В этом случае интенсивность
отраженного света от непосредственно освещенных участков поверхности будет задаваться
формулой
|
(10.3) |
где - расстояние до центра проекции, а
- произвольная постоянная. Если центр проекции находится на
бесконечности, т. е. при параллельном проецировании, то в качестве
можно взять расстояние до объекта, наиболее близкого к
наблюдателю.
В отличие от диффузного, зеркальное
отражение является направленным. Идеальное зеркало отражает лучи по принципу
"отраженный и падающий лучи лежат в одной плоскости, причем угол падения
равен углу отражения" (имеется в виду угол между направлением луча и
нормалью к поверхности). Если поверхность не идеально зеркальная, то лучи
отражаются в различных направлениях, но с разной интенсивностью, а функция
изменения интенсивности имеет четко выраженный максимум.
Рис. 10.2. Зеркальное
отражение
Вместе с тем, выделяют три относительно
простых метода затенения (закрашивания), предполагающие ту или иную
интерполяцию освещенности: метод постоянного закрашивания (по Ламберту), метод Гуро и метод Фонга.
Независимо от применяемого в дальнейшем
метода поверхности объектов аппроксимируются набором плоских выпуклых граней – полигонов.
Чаще всего, для этой цели используются треугольные полигоны. Это объясняется
тем, что три вершины однозначно определяют положение плоскости в пространстве
и, кроме того, из треугольников всегда можно получить любой другой
многоугольник.
Суть метода постоянного закрашивания
(по Ламберту) заключается в том, что на каждом полигоне определяется
освещенность в произвольной точке, и полученное значение используется для всего
полигона. Изображение при этом имеет ярко выраженный полигональный характер –
видно, что поверхность состоит из отдельных граней, на границах между которыми
освещенность претерпевает разрывы (фактически освещенность является
кусочно-постоянной функцией).
Метод Гуро обеспечивает
непрерывность освещенности за счет ее билинейной интерполяции: после
определения значений освещенности в вершинах полигона применяют линейную
интерполяцию вдоль сторон полигона, а потом – линейную интерполяцию между
сторонами полигона вдоль каждой из сканирующих строк, пересекающих полигон (при
этом освещенность рассчитывается для каждого пикселя соответствующего интервала
сканирующей строки).
В методе Фонга также применяется билинейная интерполяция, но по
отношению к вектору нормали к поверхности: рассчитывают векторы нормали в
вершинах полигона, осуществляют линейную интерполяцию вектора нормали вдоль
сторон полигона, а затем – линейную интерполяцию вдоль каждой сканирующей
строки, пересекающей полигон, между сторонами полигона (при этом вектор нормали
рассчитывается для каждого пикселя соответствующего интервала сканирующей
строки).
Полученное поле распределения вектора нормали используется в дальнейшем при
расчете освещенности для каждого пикселя полигона (отметим здесь, что
ориентация друг относительно друга вектора нормали к поверхности и направления
света от точечного источника учитывается во всех моделях освещенности).
Один из способов устранения дискретности интенсивностей
закрашивания был предложен Гуро. Его метод
заключается в том, что используются не нормали к плоским граням, а нормали к
аппроксимируемой поверхности, построенные в вершинах многогранника. После этого
вычисляются интенсивности в вершинах, а затем во всех внутренних точках
многоугольника выполняется билинейная интерполяция интенсивности.
Метод сочетается с алгоритмом построчного сканирования. После того
как грань отображена на плоскость изображения, для каждой сканирующей строки
определяются ее точки пересечения с ребрами. В этих точках интенсивность
вычисляется с помощью линейной интерполяции интенсивностей в вершинах ребра.
Затем для всех внутренних точек многоугольника, лежащих на сканирующей строке,также вычисляется
интенсивность методом линейной интерполяции двух полученных значений.
Рис. 10.3. Интерполяция
интенсивности
Пусть - интенсивности в вершинах
,
- горизонтальные координаты этих точек. Тогда в точках
пересечения сканирующей строки с ребрами многоугольника интенсивности можно
вычислить по формулам интерполяции:
|
(10.7) |
После этого интенсивность в точке х получаем
путем интерполяции значений на концах отрезка:
|
(10.8) |
К недостаткам метода Гуро следует
отнести то, что он хорошо работает только с диффузной моделью отражения. Форма
бликов на поверхности и их расположение не могут быть адекватно воспроизведены
при интерполяции на многоугольниках. Кроме того, есть проблема построения
нормалей к поверхности. В алгоритме Гуро нормаль в
вершине многогранника вычисляется путем усреднения нормалей к граням,
примыкающим к этой вершине. Такое построение сильно зависит от характера
разбиения.
описывается соотношением
|
где - функция отражения,
- длина волны. Степень, в которую возводится косинус угла,
влияет на размеры светового блика, наблюдаемого зрителем. Графики этой функции
являются характерными кривыми поведения функции изменения интенсивности в
зависимости от свойств поверхности.
Рис. 10.4. Зеркальное
отражение
Теперь модель освещенности, учитывающую зеркальное и диффузное
отражения, можно описать формулой
|
(10.5) |
Используя единичные векторы (направление к источнику) и
(внешняя нормаль), косинус угла
можно вычислить через скалярное произведение:
. Для расчета интенсивности зеркального отражения сначала надо
определить отраженный вектор
. Из рис. 11.2 видно, что
. С другой стороны
является диагональю ромба
, поэтому
. Учитывая все эти соотношения, получаем формулу
|
(10.6) |
В алгоритмах закрашивания с использованием цветовых моделей
интенсивность рассчитывается для каждого из базовых цветов, поскольку изменение
интенсивности при зеркальном отражении зависит от длины волны. Фонг предложил вместо интерполяции интенсивностей
произвести интерполяцию вектора нормали к поверхности на сканирующей строке.
Этот метод требует больших вычислительных затрат, поскольку формулы
интерполяции применяются к трем компонентам вектора нормали, но зато дает
лучшую аппроксимацию кривизны поверхности. Поэтому зеркальные свойства
поверхности воспроизводятся гораздо лучше.
Нормали к поверхности в вершинах многогранника вычисляются так же,
как и в методе Гуро. А затем выполняется билинейная
интерполяция в сочетании с построчным сканированием. После построения вектора
нормали в очередной точке вычисляется интенсивность.
Этот метод позволяет устранить ряд недостатков
метода Гуро, но не все. В частности, эффект полос
Маха в отдельных случаях в методе Фонга бывает даже
сильнее, хотя в подавляющем большинстве случаев аппроксимация Фонга дает лучшие результаты.
В приложении1 реализуются все
три метода затенения при освещении трехмерного объекта двумя источниками.
Работу программы иллюстрирует экранное окно, в котором представлена одна и та
же фигура. Способ закраски и расположение источников выбираются с помощью
инструментов.
В приложении2 реализуются так
же все три метода затенения при освещении различных объектов точечным
источником. Работу программы иллюстрирует экранное окно, в котором представлены
различные фигуры. Фигуры следует выбирать из папки VRP,
которую необходимо скопировать на свой компьютер, разархивировать и указать к ней путь при открытии. Способ закраски выбор фигуры и расположение
источника выбираются с помощью инструментов.