теория, алгоритмы, примеры на С++ и OpenGL  

Мы vkontakte.ru


Rambler's Top100 Rambler's Top100
Каталог@Mail.ru - каталог ресурсов интернет

Друзья

Словарь синонимов русского языка

Свойства источника света и материала. Типы источников света. Суммарное освещение

В статье "Модель отражения Фонга" в качестве входных и выходных параметров фигурировали интенсивности. В конечном итоге, на экране, все эти расчеты будут определять цвет пикселей. Цель настоящей статьи описать, как, используя ту или иную модель освещения, получить итоговый цвет всех точек и какие цветовые характеристики поверхности и источника света требуются для этого.

Прим. В качестве освещаемых объектов по-прежнему выступают точки (вершины). Освещение полигонов (модели затенения) будут рассмотрены в последующих статьях.

В модели освещения Фонга свет представляется в виде трех составляющих: фоновая, рассеянная и зеркальная. С учетом цветовой модели RGB, каждая из этих компонент разбивается в свою очередь на три: фоновая красная, фоновая зелёная, фоновая синяя, рассеянная красная и т.д.

Свойства материала

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

k_a(k_a^R,k_a^G,k_a^B) - свойство материала воспринимать фоновое освещение

k_d(k_d^R,k_d^G,k_d^B) - свойство материала воспринимать рассеянное освещение

k_s(k_s^R,k_s^G,k_s^B) - свойство материала воспринимать зеркальное освещение

k_e(k_e^R,k_e^G,k_e^B) - свойство материала излучать свет

К свойствам материала добавляются ещё два коэффициента: kα - прозрачность и β - коэффициент блеска. Подробнее о прозрачности будет рассказано в одной из последующих статей. Коэффициент блеска это степень косинуса в формуле зеркальной компоненты.

Свойства источника света

Цветовые свойства источника света:

i_a(i_a^R,i_a^G,i_a^B) - мощность фонового освещения

i_d(i_d^R,i_d^G,i_d^B) - мощность рассеянного освещения

i_s(i_s^R,i_s^G,i_s^B) - мощность зеркального освещения

Будем считать, что для всех рассматриваемых ниже типов источников света цветовые свойства заданы. В списках параметров, приводимых ниже, они опускаются. В расчетных формулах имеется в виду, что вычисления производятся для каждой компоненты цвета по отдельности.

Типы источников света

Источники направленного света (directional light sources)

Источник направленного света находится в бесконечно-удаленной точке. В этом случае допустимо считать, что все лучи света от него распространяются параллельно и для всех точек можно использовать один и тот же вектор направления освещения. Хорошим примером такого источника света является Солнце.

Источник направленного света

Для источников направленного света использование модели Блинна-Фонга оказывается весьма выгодным. В предположении о постоянстве вектора взгляда \vec{V}, вектор полупути \vec{H} может быть вычислен единожды для источника и, далее использоваться на протяжении всех вычислений. В этом случае расчет зеркальной компоненты освещенности будет почти так же прост, как для рассеянной составляющей.

Параметры и расчетная формула

Параметрами источника направленного света будут вектор направления \vec{L} (для расчета рассеянной компоненты) и вектор полупути \vec{H} (для расчета зеркальной компоненты). Суммарный вклад в освещение от источника направленного света рассчитывается по формуле:

I = k_ai_a + k_d\cos{(\vec{L},\vec{N})}i_d + k_s\cos^{\beta}{(\vec{H}, \vec{N})}i_s

Точечные источники света (point light sources)

В отличие от источников направленного света, точечные источники находятся в определенной точке пространства с конечными координатами, и свет от них распространяется равномерно по всем направлениям. При расчете освещенности в точке будет учитываться направление на такой источник.

Точечный источник света

Также для точечных источников учитывается эффект поглощения света, когда интенсивность излучения уменьшается с расстоянием (distance attenuation). Убывание интенсивности излучения с расстоянием задается следующей формулой:

f_{att}(d)=\frac{1}{k_{const} + k_{linear}d + k_{quadratic}d^2}

где d - расстояние от освещаемой точки до источника света.

Параметры и расчетная формула

Параметрами точечного источника света будут его положение в пространстве и три коэффициента для расчета затухания. Суммарный вклад в освещение от точечного источника света рассчитывается по формуле:

I = f_{att}(d)(k_ai_a + k_d\cos{(\vec{L},\vec{N})}i_d + k_s\cos^{\beta}{(\vec{H}, \vec{N})}i_s)

Прожекторы (spot light sources)

Такие источники света являются простой имитацией реальных прожекторов, которые используются, к примеру, в театре для создания мощного луча света в определенном направлении. Свет от такого источника распространяется лишь в определенном направлении и получается конус света. Обеспечивается это с помощью наложения ограничений на вектор направления \vec{L} от освещаемой точки до источника света.

Прожектор Направление центрального освещения D

У прожекторов, по сравнению с точечными источниками света добавляются два новых параметра: направление центрального освещения \vec{D}, половинный угол отсечения φ и коэффициент поглощения kspotatt. Далее вычисляется величина fspotatt:

f_{spotatt}(\vec{L})=\begin{cases}0,&\text{$ \cos{(-\vec{L}, \vec{D})} <  \cos{(\phi)} $}\\\cos^{k_{spotatt}}{(-\vec{L}, \vec{D})},&\text{$ \cos{(-\vec{L}, \vec{D})} \ge \cos{(\phi)} $}\\\end{cases}

Прим. Косинус в первой четверти убывающая функция, поэтому приведенные выше условия будут верными, хотя для углов стоят противоположные знаки в неравенствах. Угол отсечения φ Є (0; 90°). Если φ = 90°, то прожектор вырождается в точечный источник света.

Параметры и расчетная формула

Параметрами прожектора будут его положение в пространстве, три коэффициента для расчета затухания, направление центрального освещения, половинный угол отсечения и коэффициент поглощения.

Суммарный вклад в освещение от прожектора рассчитывается по формуле:

I = f_{spotatt}(\vec{L})f_{att}(d)(k_ai_a + k_d\cos{(\vec{L}, \vec{N})}i_d + k_s\cos^{\beta}{(\vec{H}, \vec{N})}i_s)

Суммарное освещение

На сцене может находиться несколько источников освещения. В этом случае суммарное освещение создаваемое источниками света будет равно сумме вкладов, вносимых каждым источником:

I = \sum{I_j}

где Ij – вклад вносимый j-м источником света. Если учесть способность материала излучать свет и глобальную фоновую освещенность сцены, то итоговая формула будет:

I = k_e + k_ai_{globalamb} + \sum{I_j}

После расчета величин IR, IG, IB в конкретной вершине эти значения могут быть больше единицы. В этом случае существует три способа нормализации:

  1. Отсечение (clamping): если компонента больше единицы, то она приравнивается единице. Если компонента меньше нуля, то она приравнивается нулю.
  2. Нормализация в вершине: считается минимум и максимум из IR, IG, IB в конкретной вершине. После этого диапазон [Imin; Imax] линейным преобразованием переводится в диапазон [max(0, Imin); min(Imax, 1)] (для конкретной вершины).
  3. Нормализация по всем вершинам: считается минимум и максимум из IR, IG, IB во всех вершинах. После этого диапазон [Imin; Imax] линейным преобразованием переводится в диапазон [max(0, Imin); min(Imax, 1)] (для всех вершин).