Информационные технологии в САПР. Вычислительные сети и компьютерная графика. Васильев С.А - 39 стр.

UptoLike

таких поверхностей не наблюдается. Световая энергия падающего луча (вдоль вектора
L
) отражается только по линии отра-
жения (вдоль вектора
R
). Рассеивание в стороны от линии отражения отсутствует. В реальной жизни такие поверхности не
встречаются.
В простых моделях освещения обычно пользуются имперической моделью Буи-Туонга Фонга [22], так как физические
свойства зеркального отражения очень сложны. Модель Фонга имеет вид
α=
n
sl
kII cos
,
где
k
s
коэффициент зеркального отражения;
n
степень, аппроксимирующая пространственное распределение зеркально
отражённого света.
Рис. 11.2. Зеркальное отражение
Объединив диффузное и зеркальное отражение, получим
(
)
α+θ
+
+=
n
sd
l
aa
kk
k
d
I
kII coscos
.
Если имеются несколько источников света, то их эффекты суммируются:
( )
j
n
jsjd
m
j
l
aa
kk
kd
I
kII
j
α+θ
+
+=
=
coscos
1
, (11.2)
где
m
количество источников света.
Надо заметь, что все приведённые выше модели освещения определяются для каждой составляющей цвета, т.е. для
R
,
G
и
B
.
Если при построении полигональной поверхности для каждой грани используется по одной нормали, то модель осве-
щения создаёт изображение, состоящее из отдельных многоугольников. Для плавной закраски полигональной поверхности
используется метод Гуро [22, 23]. В данном алгоритме сначала определяется интенсивность освещения вершин по модели
диффузного отражения, а затем с помощью билинейной фильтрации вычисляется интенсивность каждого пикселя на скани-
рующей строке.
Для вычисления освещенности вершин 3
D
объекта приходится вычислять нормаль в вершине, а это осуществляется через
усреднение нормалей полигонов сходящихся в этой вершине. Простое суммирование нормалей полигонов обеспечивает получе-
ния нормали в вершине полигональной сетки. Следует отметить, что делить полученную сумму нормалей на их количество не
обязательно, так как нас интересует не длина вектора, а его направление.
Рис. 11.3. Закраска полигонов методом Гуро
Можно вычислить обобщённую нормаль в вершине через усреднение векторного произведения всех рёбер полигональ-
ной сетки сходящихся в вершине.
Рассмотрим, например, участок полигональной поверхности на рис. 11.3. Значение интенсивности в точке
P
определяется
линейной интерполяцией интенсивности в точках
Q
и
R
. Для получения интенсивности в точке
Q
, полученной в результате
пересечения ребра полигона со сканирующей строкой, нужно линейной интерполяцией интенсивностей
A
и
B
найти
(
)
10,1 += uIuuII
BAQ
,
где
ABAQu =
.
Поверхность
Наблюдатель
Отражённый луч
Нормаль
Источник света
L
n
R
S
θ
θ
α
4
1
2
3
A
P
R
Q
B
C
Сканирующая строка