Моделирование освещения
Лекция 9
8. Моделирование освещения.
8.1. Основные законы освещения
8.1.1. Закон Ламберта (диффузного отражения)
Если есть некоторая поверхность и в некоторую точку этой поверхности, у которой есть нормаль
, направлен луч от источника света. Для наблюдателя, находящегося в любой точке, яркость точки, которую он видит, будет выражаться следующим образом.
, где V - яркость (для ч/б); E альбедо (коэффициент отражения) поверхности.
, I освещённость точки, I0 фоновая освещенность (рассеянный свет), q - угол между нормалью (
) и вектором, направленным на источник света (
),
.

Рис. 1
Данный метод не учитывает отражения света, поэтому место положения наблюдателя не играет роли. При помощи этого метода лучше всего моделируется матовые поверхности.
Рассмотренный ранее закон Ламберта можно записать в удобной форме.
,
где e доля рассеянного света (рекомендуется
).
Рассматриваются два вида источников света:
а) точечный источник света:

Рис. 2
б) параллельный пучок света: от удаленного источника

Рис.3
Закон Фонга (закон зеркального отражения)

Рис.4
нормаль к поверхности в точке (x,y,z);
падающий луч от источника S;
отраженный луч света;
направление на наблюдателя Р (xP,yP,zP);
q угол падения и отражения;
g угол между отраженным лучом и направлением на наблюдателя.
формула для определения зеркальной составляющей V,
где n степень зеркальности поверхности,
. Чем больше n тем больше зеркальные свойства поверхности.

Вектора
нормированные и лежат в одной плоскости (см. закон отражения света)
Пусть I = const, тогда 
e доля рассеянного света,
eФ доля отраженного света,
; 

Рис. 5
Если угол g > 90° , то не надо учитывать зеркальную составляющую
Лунная модель

Рис. 6
формула Гуро
VД диффузная составляющая света. Если L = 0 , получается закон Ламберта. L >0.
По сравнению с методом Ламберта эта модель уменьшает яркость точек, на которые мы смотрим под углом 90°, и увеличивает яркость тех точек, на которые мы смотрим вскользь
Применение законов освещения при синтезе объекта изображения.
Объект с четко выраженными гранями.
Метод закраски flat
Основная идея: каждая грань закрашивается одним цветом.

Рис. 7
Рассчитывается яркость в одной точке (например, в центре тяжести для выпуклых многоугольников) грани (по Ламберту) и производится заливка грани полученным цветом.
Метод закраски Гуро
Основная идея: заливка осуществляется с учетом линейной интерполяции яркости, вычисляется яркость только для вершин многоугольника.

Рис. 8
Недостаток метода то, что если источник света проецирутся в плоскость многоугольника, то, используя этот метод заливки, будет получен результат рис.8 (1), хотя должно быть рис.8 (2).
Закраска по Фонгу
Основная идея: для каждой точки изображения устанавливаются пространственные координаты, исходя из которых, считаем g и получаем яркость для точки.
Недостаток метода большая сложность вычислений.
Моделирование освещения методом наложения текстуры.
Можно упростить вычисления, сведя метод Фонга к процедуре нанесения текстуры.

Рис. 9

Рис. 10
Основная идея: в памяти рассчитывается текстура рис. 9, затем заливка объектов осуществляется с использованием полученной текстуры.
- · Рассчет вспомогательной текстуры.
Для каждой точки текстуры рассчитывается яркость по формуле

Пусть под яркость отведен 1 байт, т.е.
VMAX = 255.
Максимальная яркость будет в точке максимально приближенной к источнику света, т.е.



Если соответсявующим образом просматривать h, то получится яркость соответствующей точки в вспомогательной текстуре.
- · Рассчет координатных точек для произвольного треугольника.

Рис. 11
В мировой системе координат задан произвольный треугольник рис. 11, необходимо провести его заливку с учетом освещенности.
Для этого строится система координат (x,yz) с началом в точке О(x0,y0,z0), таким образом, что ось OZ проходит через источник света S и параллельна нормали
, а OX и OY лежат в плоскости треугольника.

Рис. 12
, где M матрица преобразования.
Найдем такую матрицу М, чтобы точки 1,2,3,S проецировались в точки с координатами которые озображены на рис. 12.
ненормированный вектор нормали
Пронормируем этот вектор:
; N(NX,NY,NZ)
Операясь на это выражение, вычисляем матрицу М:
1)

данная формула используется когда составляющая нормали NX = min;
2)

данная формула используется когда составляющая нормали NY = min;
3)

данная формула используется когда составляющая нормали NZ = min;
Для окончательного пересчета координат вершин треугольника будем пользоваться М умноженной на
; где М=М1, М2, М3.
Мf матрица Фонга. Таким образом координаты в текстурном поле :

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


Рис. 14
На рис. 14 показан примерный диапазон и характер изменения h.
2) Высчитываем нормаль к поверхности треугольника
; 
3) Пересчитываем координаты в текстурные, используя Мf
;

4) Рассчитываем яркость каждой точки.

Если учитывать рассеянный свет, то
, где e - доля рассеянного света.
8.2.2. Объект имеет гладкую форму.
Аналог алгоритма Гуро

Рис. 15
Яркость рассчитывается в каждой вершине, а яркость на гранях и ребрах получается линейной интерполяцией. В качестве нормали при расчетах яркости в одной вершине используется средняя нормаль
, где n число прилегающих к этой вершине граней.
вектора площади, перпендикулярные соответсвующей грани и равные ее площади, таким образом учитывается то, что грани могут быть разного размера, а следовательно по-разному влиять на среднее значение нормали.
Рассчитанная таким методом яркость вершины используется для всех прилегающих к ней ребер, а следовательно со всех сторон вершины яркость одинакова и перепада яркости на ребрах не будет.
Аналог алгоритма Фонга
Основная идея: рассчитываются средние нормали, и производится интерполяция нормалей, т.е. линейная интерполяция по каждой координате (x,y,z).

Рис. 16
Недостаток метода если поверхность неровная, то возможны неточности рис.17

Рис.17
Трассировка лучей.
Всё что было рассмотрено ранее относится к проективным методам синтеза. Альтернативой им является трассировка лучей, так же как и проективные методы поддерживается проективно.
Суть: отслеживание луча.
Существуют:
1) Обратная трассировка луча (движение на встречу лучу);
2) Прямая трассировка луча (движение в противоположную сторону).
Обратная трассировка

Надо найти точку пересечения луча с ближайшим многоугольником (с объектом трёхмерного изображения). Эта задача решается с помощью сортировки элементов пространственной сце-. ны.
Недостатки:
1) Для сложных сцен трассировка лучей не эффективена;
3) Струсктура вычислений сложнее, чем в проективных медодах.
Но метод трассировки лучей более эффективен, чем проективный метод для простой (гладкой) сцены, которая может быть описана математически, т. е.:
1) Решается система уравнений;
2) Находится точка пересечения;
3) Находится яркость.
Так же трассировка лучей эффективна для обработки диффузных поверхностей.