Скачать презентацию Интерактивная Компьютерная Графика Часть 3 -3 освещение и Скачать презентацию Интерактивная Компьютерная Графика Часть 3 -3 освещение и

Часть 3-3.ppt

  • Количество слайдов: 28

Интерактивная Компьютерная Графика Часть 3 -3 (освещение и материалы) Интерактивная Компьютерная Графика Часть 3 -3 (освещение и материалы)

Модели освещения ü Типы источников света: Ø Фоновый Ø Точечный Ø Эмиссионный ü Типы Модели освещения ü Типы источников света: Ø Фоновый Ø Точечный Ø Эмиссионный ü Типы взаимодействия с поверхностью: Ø Преломление Ø Поглощение Ø Отражение • Диффузное рассеяние (diffuse scattering) • Зеркальное отражение (specular reflections)

Варианты отражения Идеальное отражение • зеркальная поверхность • закон отражения Идеальное рассеяние • матовая Варианты отражения Идеальное отражение • зеркальная поверхность • закон отражения Идеальное рассеяние • матовая поверхность (бумага) • закон Ламберта Отражение не идеальное • блики на объекте • модели Фонга и Блинна

Диффузионное отражение ( diffuse scattering ) Варианты названия: Ø рассеянный свет Ø диффузионный свет Диффузионное отражение ( diffuse scattering ) Варианты названия: Ø рассеянный свет Ø диффузионный свет Ø diffuse light L L L макс. уровень сред. уровень мин. уровень N Закон Ламберта: – интенсивность диффузного света – интенсивность падающего света – коэффициент диффузии угол между падающим светом и нормалью в точке падения N

Зеркальное отражение ( specular reflections ) Варианты названия: Закон Фонга Ø зеркальный свет Ø Зеркальное отражение ( specular reflections ) Варианты названия: Закон Фонга Ø зеркальный свет Ø specular light – интенсивность зеркального света – интенсивность падающего света L N – коэффициент зеркальности R – коэффициент блеска материала V угол между отраженным светом и направлением на наблюдателя Закон Блинна-Фонга – вектор полупути (halfway vector )

Фоновый свет Варианты названия: Ø Свет (цвет) пространства Ø ambient light – фоновая составляющая Фоновый свет Варианты названия: Ø Свет (цвет) пространства Ø ambient light – фоновая составляющая освещенности в точке – мощность фонового освещения – свойство материала воспринимать фоновое освещение

Модель освещения Фонга en Op Модель Фонга для каждой RGB-компоненты источника: GL ( Phong Модель освещения Фонга en Op Модель Фонга для каждой RGB-компоненты источника: GL ( Phong illuminance model )

Учет эмиссионного света Эмиссионный свет (emission light) – это свет излучения самого объекта, но Учет эмиссионного света Эмиссионный свет (emission light) – это свет излучения самого объекта, но при этом объект не рассматривается как источник света.

Учет затухания луча света Коэффициент затухания света с расстоянием: – расстояние, пройденное светом от Учет затухания луча света Коэффициент затухания света с расстоянием: – расстояние, пройденное светом от источника – постоянный фактор затухания – линейный фактор затухания – квадратичный фактор затухания

Учет направления источника – коэффициент поглощения – половинный угол отсечения L N P Учет направления источника – коэффициент поглощения – половинный угол отсечения L N P

Учет нескольких источников – число источников в сцене – глобальное фоновое освещение Учет нескольких источников – число источников в сцене – глобальное фоновое освещение

Суммарный свет Полный свет для каждой RGB-компоненты источников света: Если результат больше 1 или Суммарный свет Полный свет для каждой RGB-компоненты источников света: Если результат больше 1 или меньше 0, то: Вариант 1 (отсечение): Вариант 2 (нормализация):

Модель освещения Кука-Торренса (Cook-Torrance model ) Улучшенная модель для создания стеклянных и металлических поверхностей Модель освещения Кука-Торренса (Cook-Torrance model ) Улучшенная модель для создания стеклянных и металлических поверхностей (модель Ламберта хорошо работает только для сравнительно гладких поверхностей) L N H V коэффициент Френеля распределение Бекмана (шероховатость) самозатенение

Закраска Плоская ( flat rendering ) 1. По одному из цветов вершин: B A Закраска Плоская ( flat rendering ) 1. По одному из цветов вершин: B A C 3. По среднему значению цветов в вершинах примитива: 2. По цвету в центре:

Закраска Гуро ( Gouraud rendering ) B E D F A C Закраска Гуро ( Gouraud rendering ) B E D F A C

Закраска Фонга ( Phong rendering ) B E D F A C Закраска Фонга ( Phong rendering ) B E D F A C

Результат сглаживания нормалей Несглаженные нормали Сглаженные нормали Результат сглаживания нормалей Несглаженные нормали Сглаженные нормали

Результат плоской закраски Примитивов: 2 000 Примитивов: 30 000 Результат плоской закраски Примитивов: 2 000 Примитивов: 30 000

Результат закраски Гуро Примитивов: 2 000 Примитивов: 30 000 Результат закраски Гуро Примитивов: 2 000 Примитивов: 30 000

Результат закраски Фонга Примитивов: 2 000 Точек для расчета при разрешении 1024 x 768 Результат закраски Фонга Примитивов: 2 000 Точек для расчета при разрешении 1024 x 768 : 700 000

Результаты учета различных компонент света Результаты учета различных компонент света

Задание модели освещения в Open. GL float light_ambient [] = { 0. 2, 1 Задание модели освещения в Open. GL float light_ambient [] = { 0. 2, 1 } // RGBA глобальной фоновой составляющей gl. Light. Modelfv ( GL_LIGHT_MODEL_AMBIENT, light_ambient ) // установление RGBA глобальной фоновой составляющей света сцены gl. Light. Modelf ( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE ) // включение/отключение двустороннего режима расчета освещенности // для лицевых и обратных (нелицевых) граней объектов gl. Light. Modelf ( GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR) // включение/отключение режима расчета зеркальной составляющей // отдельно от рассеянной и фоновой (т. е. накладываться на текстуру) gl. Light. Modelf ( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE) // Считать ли положение точки наблюдения локальным к сцене или же // бесконечно удаленным, т. е. направление обзора параллельно OZ // (ускорение за счет ухудшения зеркальной составляющей)

Задание источников света в Open. GL gl. Enable( GL_LIGHTING ) ) – включение расчета Задание источников света в Open. GL gl. Enable( GL_LIGHTING ) ) – включение расчета освещения GL_MAX_LIGHT – максимальное число источников в Open. GL gl. Enable ( GL_LIGHT 0 ) – включение источника № 0 gl. Enable ( GL_LIGHT 1 ) – включение источника № 1 gl. Enable ( GL_LIGHT 2 ) – включение источника № 2 gl. Enable ( GL_LIGHT 3 ) – включение источника № 3 gl. Enable ( GL_LIGHT 4 ) – включение источника № 4 gl. Enable ( GL_LIGHT 5 ) – включение источника № 5 gl. Enable ( GL_LIGHT 6 ) – включение источника № 6 gl. Enable ( GL_LIGHT 7 ) – включение источника № 7

Задание параметров источника света № 0 в Open. GL float float light 0_ambient [] Задание параметров источника света № 0 в Open. GL float float light 0_ambient [] = { 0, 0, 0, 1 } light 0_diffuse [] = { 1, 1, 1, 1 } light 1_diffuse [] = { 0, 0, 0, 1 } light 0_specular [] = { 1, 1, 1, 1} light 1_specular [] = { 0, 0, 0, 1} // RGBA фоновой составляющей света // RGBA рассеянной составляющей света // для остальных источников // RGBA зеркальной составляющей света // для остальных источников float light 0_position 0 [] = { 0, 0, 1, 0} // вектор направления (от начала координат) // бесконечно удаленного источника float light 0_position 1 [] = { 0, 0, 1, 1} // координаты точечного источника gl. Lightfv ( GL_LIGHT 0, GL_AMBIENT, light 0_ambient ) gl. Lightfv ( GL_LIGHT 0, GL_DIFFUSE, light 0_diffuse ) gl. Lightfv ( GL_LIGHT 0, GL_SPECULAR, light 0_specular ) gl. Lightfv ( GL_LIGHT 0, GL_POSITION, light 0_position 1 )

Задание прожектора в Open. GL float float light 0_spot_direction [] = { 0, 0, Задание прожектора в Open. GL float float light 0_spot_direction [] = { 0, 0, -1, 1 } // направление прожектора light 0_spot_ angle = 180 // половинный угол отсечения (0 -90, 180) light 0_spot_ const =1 // постоянный фактор затухания light 0_spot_linear =0 // линейный фактор затухания light 0_spot_ quadratic = 0 // квадратичный фактор затухания light 0_spot_ exponent = 0 // экспонента убывания сфокусированности (0 -128) float light 0_position 0 [] = { 1, 1, 1, 0} // вектор направления (от начала координат) // бесконечно удаленного источника float light 0_position 1 [] = { 1, 1, 1, 1} // координаты точечного источника gl. Lightf ( GL_LIGHT 0, GL_CONSTANT_ATTENUATION, light 0_spot_ const) gl. Lightf ( GL_LIGHT 0, GL_LINEAR_ATTENUATION, light 0_spot_linear ) gl. Lightf ( GL_LIGHT 0, GL_QUADRATIC_ATTENUATION, light 0_spot_ quadratic) gl. Lightf ( GL_LIGHT 0, GL_SPOT_EXPONENT, light 0_spot_ exponent ) gl. Lightfv ( GL_LIGHT 0, GL_POSITION, light 0_position 1 )

Результаты задания различных источников Направленный ИС Точечный ИС Несколько ИС Прожектор Точечный ИС с Результаты задания различных источников Направленный ИС Точечный ИС Несколько ИС Прожектор Точечный ИС с затуханием Прожектор с затуханием

Задание материала в Open. GL gl. Materialfv ( face, param, value ) face = Задание материала в Open. GL gl. Materialfv ( face, param, value ) face = { GL_FRONT, GL_BACK, GL_FRONT_AND_BACK } param = { GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_SHININESS, GL_AMBIENT_AND_DIFFUSE } float float value =: material_ambient [] = { 0. 2, 1 } // RGB фонового отражения (в тени) material_diffuse [] = { 0. 8, 1 } // RGBA диффузного отражения material_specular [] = { 0. 0, 1 } // RGB зеркального отражения material_emission [] = { 0. 0, 1 } // RGB самоизлучения material_shininess = 0 // степень зеркального отражения, // коэффициент блеска (0 -128) gl. Materialfv ( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, material_ambient ) = gl. Materialfv ( GL_FRONT, GL_AMBIENT, material_diffuse ) + gl. Materialfv ( GL_FRONT, GL_DIFFUSE, material_diffuse )

Задание цвета материала в Open. GL gl. Enable ( GL_COLOR_MATERIAL ) // включение учета Задание цвета материала в Open. GL gl. Enable ( GL_COLOR_MATERIAL ) // включение учета цвета материала // при включенном освещении gl. Color 4 f (*) // задание цвета материала объекта gl. Color. Material ( face, mode) // указание на тот параметр, // где будет цвет учитываться face = { GL_FRONT, GL_BACK, GL_FRONT_AND_BACK } mode = { GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_AMBIENT_AND_DIFFUSE }