Цифровое моделирование на C# - страница 16

Шрифт
Интервал


X – исходный цвет поверхности треугольника.

α – угол между вектором нормали к поверхности и вектором, исходящим из вершины треугольника и направленным на источник света.


Легко заметить, то значение диффузной составляющей максимально, когда вектор нормали сонаправлен с вектором, направленным на источник света, и минимально, когда данные вектора антиколлинеарны. Как следует из формулы, диффузная составляющая всегда больше или равна нулю. Если поверхность освещается прожектором, то диффузная составляющая будет одна и та же для каждой точки треугольника. В случае точечного источника диффузная составляющая будет различна для каждой точки.

Зеркальная составляющая

Зеркальная составляющая имитирует яркое пятно света (блик), которое появляется на блестящих объектах. Расчет зеркальных бликов, как и в случае диффузного освещения, основан на векторе направления источника света и нормали к поверхности объекта, но помимо этого в вычислениях учитывается позиция наблюдателя, то есть направление, в котором наблюдатель смотрит на фрагмент.


рис. 2.11


(1) – вектор, исходящий из вершины треугольника и направленный на источник света.

(2) – вектор нормали к плоскости треугольника.

(3) – отраженный от поверхности луч света.

(4) – вектор, исходящий из вершины треугольника и направленный на наблюдателя.

α – угол между вектором нормали и вектором, направленным на источник света.

β – угол между отраженным от поверхности треугольника лучом света и вектором, направленным на наблюдателя.


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



S – зеркальная составляющая.

a – параметр, характеризующий яркость светового блика.

b – параметр, характеризующий размер светового блика на поверхности. Чем больше b, тем меньше блик.

x = 1-cos (β)

β – угол между отраженным лучом света и вектором, направленным на наблюдателя. Этот угол должен варьироваться в пределах от 0 до 90 градусов. Если угол больше, чем 90 градусов, это означает, что поверхность не освещается лучами от источника света или наблюдатель не может видеть данную поверхность. В этом случае зеркальная составляющая равна 0.


Если мы построим график функции, с помощью которой вычисляется зеркальная составляющая, то мы получим примерно такой график (рис. 2.12) (в зависимости от параметров a и b