Моделирование освещения
Лекция 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) Находится яркость.
Так же трассировка лучей эффективна для обработки диффузных поверхностей.