Цифровое моделирование на C#. Дмитрий Павлов
всегда больше или равна нулю. Если поверхность освещается прожектором, то диффузная составляющая будет одна и та же для каждой точки треугольника. В случае точечного источника диффузная составляющая будет различна для каждой точки.
Зеркальная составляющая
Зеркальная составляющая имитирует яркое пятно света (блик), которое появляется на блестящих объектах. Расчет зеркальных бликов, как и в случае диффузного освещения, основан на векторе направления источника света и нормали к поверхности объекта, но помимо этого в вычислениях учитывается позиция наблюдателя, то есть направление, в котором наблюдатель смотрит на фрагмент.
рис. 2.11
(1) – вектор, исходящий из вершины треугольника и направленный на источник света.
(2) – вектор нормали к плоскости треугольника.
(3) – отраженный от поверхности луч света.
(4) – вектор, исходящий из вершины треугольника и направленный на наблюдателя.
α – угол между вектором нормали и вектором, направленным на источник света.
β – угол между отраженным от поверхности треугольника лучом света и вектором, направленным на наблюдателя.
Зеркальную составляющую освещения можно вычислить по следующей формуле:
S – зеркальная составляющая.
a – параметр, характеризующий яркость светового блика.
b – параметр, характеризующий размер светового блика на поверхности. Чем больше b, тем меньше блик.
x = 1-cos (β)
β – угол между отраженным лучом света и вектором, направленным на наблюдателя. Этот угол должен варьироваться в пределах от 0 до 90 градусов. Если угол больше, чем 90 градусов, это означает, что поверхность не освещается лучами от источника света или наблюдатель не может видеть данную поверхность. В этом случае зеркальная составляющая равна 0.
Если мы построим график функции, с помощью которой вычисляется зеркальная составляющая, то мы получим примерно такой график (рис. 2.12) (в зависимости от параметров a и b вид графика может немного меняться).
рис. 2.12
Эта функция достигает своего максимума при x=0, то есть когда отраженный луч и вектор, направленный на наблюдателя, сонаправлены. Значение самих параметров a и b полностью зависит от свойств материала поверхности. Например, для металла значение a будет больше, чем для дерева.
Как и диффузная, зеркальная составляющая всегда больше или равна нулю. Но в отличии от диффузной, которая зависит только от угла между нормалью к поверхности и падающим лучом света, значение зеркальной составляющей не является некоторым абсолютным значением, а зависит от позиции наблюдателя.
Формула Фонга
Общее значение освещенности является суммой трех составляющих освещения:
Освещенность = Фоновая + ∑ Диффузная + ∑ Зеркальная
Суммирование идет по всем источникам света, присутствующим