Моделирование
освещения методом наложения текстуры.
Можно упростить
вычисления, сведя метод Фонга к процедуре нанесения текстуры.
Рис. 9
Рис. 10
Основная идея: в
памяти рассчитывается текстура рис. 9, затем заливка объектов осуществляется с
использованием полученной текстуры.
·
Рассчет
вспомогательной текстуры.
Для каждой точки
текстуры рассчитывается яркость по формуле
Пусть под яркость
отведен 1 байт, т.е. – VMAX = 255.
Максимальная
яркость будет в точке максимально приближенной к источнику света, т.е.
Если
соответсявующим образом просматривать h, то получится яркость соответствующей точки в
вспомогательной текстуре.
·
Рассчет координатных
точек для произвольного треугольника.
Рис. 11
В мировой системе
координат задан произвольный треугольник рис. 11, необходимо провести его
заливку с учетом освещенности.
Для этого
строится система координат (x’,y’z’) с началом в точке О(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 - доля рассеянного света.