Similar presentations:
Часть 5-1 (Освещение и материалы)
1. (освещение и материалы)
Часть 5-1(освещение и материалы)
2. Типы источников света
Генераторизлучения
Описание
действия
Фоновый
само
пространство
везде равномерный свет
без теней
Интенсивность
Эмиссионный
сам
объект
подсвечивает сам себя
без теней
Интенсивность в точке
Точечный
Прожекторный
Удаленный
Направленный
2 (28)
источник света
Тип
источника
излучает равномерно
по всем направлениям
Дополнительные
характеристики
Интенсивность
Положение
Интенсивность
излучает конус света
(как прожектор)
Положение
Направление
Угол распространения
Функция распределения
расположен в ∞
(все лучи параллельны)
5.1.1 Определения [1/2]
Интенсивность
Вектор направления
3. Варианты отражения
Идеальное отражение (specular reflections)• зеркальная поверхность
• закон отражения
Идеальное рассеяние (diffuse scattering)
• матовая поверхность (бумага)
• закон Ламберта
Отражение не идеальное
• блики на объекте
• модели Фонга
3 (28)
5.1.1 Определения [2/2]
4. Зеркальное отражение (specular reflections/light)
Закон ФонгаI S LS k S cos b ( )
N
L
θ
R
θ
IS
V
зеркальная
интенсивность
интенсивность
LS падающего света
коэффициент
k S зеркальности
b
R 2 L, N N L
cos b ( ) R,V
4 (28)
коэффициент
блеска материала
Закон Блинна-Фонга
R,V b H , N c
вектор полупути
H L V (halfway vector )
5.1.2 Основные компоненты отраженного света [1/3]
5. Диффузионное (рассеянное) отражение (diffuse scattering/light)
Закон ЛамбертаI D LD kD cos( )
N
L
θ
диффузионная
I D интенсивность
интенсивность
LD падающего света
коэффициент
k D диффузии
L
L
L
L
N
θ
cos(θ) L, N
макс.
уровень
5 (28)
сред.
уровень
мин.
уровень
5.1.2 Основные компоненты отраженного света [2/3]
6. Фоновый свет (ambient light)
I A LA k A фоновая составляющая освещенностиLA мощность фонового освещения
k A свойство материала воспринимать фоновое освещение
6 (28)
5.1.2 Основные компоненты отраженного света [3/3]
7. Учет эмиссионного света
I IE Iобщая интенсивность
отраженного света в точке
с учетом эмиссионной составляющей
Эмиссионный свет (emission light) –
это свет излучения самого объекта,
но при этом объект не рассматривается как источник света
7 (28)
5.1.3 Дополнительные компоненты [1/4]
8. Учет затухания с расстоянием луча света (damping factor)
I kDF Iобщая интенсивность
отраженного света в точке
с учетом затухания
если источник света
является направленным,
фактор ослабления равен 1
k DF (d )
1
kconst d klinear d 2 kquadratic
d – расстояние, пройденное светом от источника до точки объекта
kconst – постоянный фактор затухания
klinear – линейный фактор затухания
k quadratic– квадратичный фактор затухания
8 (28)
5.1.3 Дополнительные компоненты [2/4]
9. Учет направленности источника света (прожектор)
I k AC IL
общая интенсивность
отраженного света в точке
с учетом
прожекторной составляющей
N
коэффициент затухания:
P
cos p L, P , если cos L, P cos
k AC
0, иначе
p
9 (28)
– коэффициент поглощения
5.1.3 Дополнительные компоненты [3/4]
10. Учет нескольких источников
nI I GA I j
j 1
общая интенсивность
отраженного света в точке
от n источников
I GA – глобальное фоновое освещение
10 (28)
5.1.3 Дополнительные компоненты [4/4]
11. Модель освещения Фонга (Phong illuminance model)
I I A ID ISинтенсивность
для каждой RGB-компоненты
отраженного света в точке
0, I 0
Вариант 1 (отсечение): I
1, I 1
Если I 0,1 :
Вариант 2 (нормализация): min I , max I 0,1
j
j
11 (28)
5.1.4 Модели освещения [1/3]
12. Модель Кука-Торренса (Cook-Torrance model )
Улучшенная модель для задания стекла и металла(для негладких поверхностей)
F D G
I LA k A LD k D F0 N , L Ls k s
N , V N , L
F0 LS k S
H
N
L
θ
F
коэффициент Френеля
1
5
F0 1 N ,V 1 F0 ...
1 N , V
tg ( )
V
H L V
12 (28)
1
b распределение Бекмана
D( )
e
2
4
4 b cos ( )
(шероховатость)
2 N , H N , L 2 N , H N , V
G min 1,
,
L, H
L, H
самозатенение, микрограни
5.1.4 Модели освещения [2/3]
13. Результаты учета компонент света
13 (28)5.1.4 Модели освещения [3/3]
14. Закраска Плоская (flat rendering)
B1. Расчет цвета по одной из вершин:
color A, B, C, D color_mode l A, normal A
C
2. По среднему значению цветов в вершинах:
color A, B, C , D
1
color_mode l A, normal A
3
1
color_mode l B, normal A
3
1
color_mode l C , normal A
3
D
A
14 (28)
color A, B, C, D color_mode l B, normal A
5.1.5 Модели закраски [1/3]
15. Закраска Гуро (Gouraud rendering)
E AF C
B A
B C
B
D E
F D
1
F E
F E
color A color_mode l A, normal A
color B color_mode l B, normal B
color C color_mode l C , normal C
color E color B (1 ) color A
color F color B (1 ) color C
color D color F (1 ) color E
E
D
F
A
C
15 (28)
5.1.5 Модели закраски [2/3]
16. Закраска Фонга (Phong rendering)
E AF C
B A
B C
B
D E
F D
1
F E
F E
normal E normal B (1 ) normal A
normal F normal B (1 ) normal C
normal D normal F (1 ) normal E
color D color_mode l D, normal D
E
D
F
A
16 (28)
C
5.1.5 Модели закраски [3/3]
17. Результат сглаживания нормалей
17 (28)Сглаженные нормали
Несглаженные нормали
Результат сглаживания нормалей
5.1.6 Результат закраски [1/4]
18. Результат плоской закраски
Примитивов ≈ 2 00018 (28)
5.1.6 Результат закраски [2/4]
Примитивов ≈ 30 000
19. Результат закраски Гуро
Примитивов ≈ 2 00019 (28)
5.1.6 Результат закраски [3/4]
Примитивов ≈ 30 000
20. Результат закраски Фонга
Примитивов ≈ 2 000Точек для расчета (при разрешении 1024x768) ≈ 700 000
20 (28)
5.1.6 Результат закраски [4/4]
21. Задание модели освещения в OpenGL (glLightModelfv)
/* установление RGBA глобальной фоновой составляющей света сцены */glLightModelfv ( GL_LIGHT_MODEL_AMBIENT, * )
/* включение/отключение двустороннего режима расчета освещенности
для лицевых и обратных (нелицевых) граней объектов */
glLightModelf ( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE )
/* включение/отключение режима расчета зеркальной составляющей отдельно от
рассеянной и фоновой (т.е. накладываться на текстуру) */
glLightModelf ( GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR )
/* Считать ли положение точки наблюдения локальным к сцене или же бесконечно
удаленным, т.е. направление обзора параллельно OZ
(ускорение за счет ухудшения зеркальной составляющей) */
glLightModelf ( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE )
21 (28)
5.1.7 Задание освещение в OpenGL [1/6]
22. Задание модели освещения в OpenGL (glEnable)
glEnable( GL_LIGHTING ) // включение расчета освещенияGL_MAX_LIGHT
// максимальное число источников в OpenGL
glEnable ( GL_LIGHT0 ) // включение источника №0
glEnable ( GL_LIGHT1 ) // включение источника №1
glEnable ( GL_LIGHT2 ) // включение источника №2
glEnable ( GL_LIGHT3 ) // включение источника №3
glEnable ( GL_LIGHT4 ) // включение источника №4
glEnable ( GL_LIGHT5 ) // включение источника №5
glEnable ( GL_LIGHT6 ) // включение источника №6
glEnable ( GL_LIGHT7 ) // включение источника №7
22 (28)
5.1.7 Задание освещение в OpenGL [2/6]
23. Задание параметров источника света №0
float light0_ambient[] = {0,0,0, 1} // фоновая составляющаяfloat light0_diffuse[] = {1,1,1, 1} // диффузная составляющая
float light0_specular[] = {1,1,1, 1} // зеркальная составляющая
/* По умолчанию для остальные 7ми источников*/
float light_specular[] = {0,0,0, 1}
float light_diffuse[] = {0,0,0, 1}
/* координаты точечного источника */
float light0_positionT[] = {0,0,1,1}
/* вектор направления (от начала координат) удаленного источника */
float light0_positionV[] = {0,0,1,0}
glLightfv ( GL_LIGHT0, GL_AMBIENT, light0_ambient )
glLightfv ( GL_LIGHT0, GL_DIFFUSE, light0_diffuse )
glLightfv ( GL_LIGHT0, GL_SPECULAR, light0_specular )
glLightfv ( GL_LIGHT0, GL_POSITION, light0_positionT )
23 (28)
5.1.7 Задание освещение в OpenGL [3/6]
24. Задание прожектора в OpenGL
float light0_spot_direction[] = {0,0,-1,1}float light0_spot_angle = 180
// направление прожектора
// половинный угол отсечения (0-90,180)
/* Коэффициенты фактора затухания */
float light0_spot_const = 1
float light0_spot_linear = 0
float light0_spot_quadratic = 0
// постоянный фактор
// линейный фактор
// квадратичный фактор
/* экспонента убывания сфокусированности (0-128) */
float light0_spot_exponent = 0
glLightf ( GL_LIGHT0, GL_CONSTANT_ATTENUATION, light0_spot_const)
glLightf ( GL_LIGHT0, GL_LINEAR_ATTENUATION,
light0_spot_linear )
glLightf ( GL_LIGHT0, GL_QUADRATIC_ATTENUATION, light0_spot_quadratic)
glLightf ( GL_LIGHT0, GL_SPOT_EXPONENT, light0_spot_exponent )
glLightfv ( GL_LIGHT0, GL_POSITION, light0_positionT )
24 (28)
5.1.7 Задание освещение в OpenGL [4/6]
25. Задание материала в OpenGL (glMaterial)
glMaterialfv ( face, comp, value4 )/* выбор грани: лицевая, нелицевая, обе */
face = { GL_FRONT, GL_BACK, GL_FRONT_AND_BACK }
/* выбор компоненты: фоновая, диффузная , зеркальная, эмиссионная */
comp = { GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_AMBIENT_AND_DIFFUSE
GL_EMISSION, GL_SHININESS }
/* задание вектора значений value4: */
float material_ambient[] = { 0.2, 0.2, 0.2, 1 }
float material_diffuse[] = { 0.8, 0.8, 0.8, 1 }
float material_specular[] = { 0.0, 0.0, 0.0, 1 }
float material_emission[] = { 0.0, 0.0, 0.0, 1 }
float material_shininess = 0 // коэффициент блеска (0-128)
glMaterialfv ( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, material_diffuse )
=
glMaterialfv ( GL_FRONT, GL_AMBIENT, material_diffuse )
+
glMaterialfv ( GL_FRONT, GL_DIFFUSE, material_diffuse )
25 (28)
5.1.7 Задание освещение в OpenGL [5/6]
26. Задание цвета материала (объекта) в OpenGL
/* включение/выключение учета цвета материалапри включенном освещении */
glEnable ( GL_COLOR_MATERIAL )
glDisable ( GL_COLOR_MATERIAL )
/* задание цвета материала объекта */
glColor4f (*)
/* указание грани и компоненты, где будет цвет учитываться */
glColorMaterial ( face, comp )
26 (28)
5.1.7 Задание освещение в OpenGL [6/6]
27. Результат освещения с учетом цвета материала
Позицияисточника
27 (28)
glDisable ( GL_COLOR_MATERIAL )
Схематичный вид сверху
glEnable ( GL_COLOR_MATERIAL )
Параметры материала – 0.2
С учетом цвета объектов
5.1.8 Результат освещения [1/2]
Без учета цвета объектов
28. Результаты задания различных источников света (ИС)
Направленный ИСТочечный ИС
Точечный ИС с затуханием
Несколько ИС
Прожектор
Прожектор с затуханием
28 (28)
5.1.8 Результат освещения [2/2]