(освещение и материалы)
Типы источников света
Варианты отражения
Зеркальное отражение (specular reflections/light)
Диффузионное (рассеянное) отражение (diffuse scattering/light)
Фоновый свет (ambient light)
Учет эмиссионного света
Учет затухания с расстоянием луча света (damping factor)
Учет направленности источника света (прожектор)
Учет нескольких источников
Модель освещения Фонга (Phong illuminance model)
Модель Кука-Торренса (Cook-Torrance model )
Результаты учета компонент света
Закраска Плоская (flat rendering)
Закраска Гуро (Gouraud rendering)
Закраска Фонга (Phong rendering)
Результат сглаживания нормалей
Результат плоской закраски
Результат закраски Гуро
Результат закраски Фонга
Задание модели освещения в OpenGL (glLightModelfv)
Задание модели освещения в OpenGL (glEnable)
Задание параметров источника света №0
Задание прожектора в OpenGL
Задание материала в OpenGL (glMaterial)
Задание цвета материала (объекта) в OpenGL
Результат освещения с учетом цвета материала
Результаты задания различных источников света (ИС)
850.73K

Часть 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 I
L
общая интенсивность
отраженного света в точке
с учетом
прожекторной составляющей
N
коэффициент затухания:
P
cos p L, P , если cos L, P cos
k AC
0, иначе
p
9 (28)
– коэффициент поглощения
5.1.3 Дополнительные компоненты [3/4]

10. Учет нескольких источников

n
I 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)

B
1. Расчет цвета по одной из вершин:
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 A
F 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 A
F 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 000
18 (28)
5.1.6 Результат закраски [2/4]
Примитивов ≈ 30 000

19. Результат закраски Гуро

Примитивов ≈ 2 000
19 (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]
English     Русский Rules