Дмитрий Павлов

Цифровое моделирование на 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 будет больше, чем для дерева.

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

      Формула Фонга

      Общее значение освещенности является суммой трех составляющих освещения:

      Освещенность = Фоновая + ∑ Диффузная + ∑ Зеркальная

      Суммирование идет по всем источникам света, присутствующим