Моделирование освещения методом наложения текстуры.

 

Можно упростить вычисления, сведя метод Фонга к процедуре нанесения текстуры.

 

Рис. 9

 

Рис. 10

Основная идея: в памяти рассчитывается текстура рис. 9, затем заливка объектов осуществляется с использованием полученной текстуры.

 

·         Рассчет вспомогательной текстуры.

Для каждой точки текстуры рассчитывается яркость по формуле

 

 

Пусть под яркость отведен 1 байт, т.е.  VMAX = 255.

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

 

 

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

 

·         Рассчет координатных точек для произвольного треугольника.

 

Рис. 11

 

В мировой системе координат задан произвольный треугольник рис. 11, необходимо провести его заливку с учетом освещенности.

Для этого строится система координат (x’,yz’) с началом в точке О(x­0,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 - доля рассеянного света.

 

 

 

Hosted by uCoz