Текстуры. Композиты Лекция 11 Алексей Игнатенко
На прошлой лекции Удаление невидимых поверхностей Удаление нелицевых граней Алгоритм художника Двоичное разбиение пространства Буфер глубины Модели освещения и отражения Локальные и глобальные модели Диффузное и зеркальное отражение Модель освещенности Фонга Интерполяционная закраска (при растеризации) Поддержка в OpenGL –glMaterial, glLight
На лекции Текстурирование Определение Виды текстурирования Отображение текстуры Фильтрация текстуры Композирование Определение Альфа-канал Операции композирования Ассоциативность Примеры
Текстурирование
Использование изображений для моделирования (отражающих) свойств поверхности
Отображение текстуры (Texture mapping) Способ сопоставления пикселя текстуры (текселя) пикселю примитива Фиксированное отображение Узор, определенный в 2D области, «наклеивается» на объект как кусок обоев и, фактически становится частью объектной базы данных. Т.е., когда объект перемещается, текстурный узор перемещается вместе с ним. View-dependent mapping Bump mapping...
Задачи текстурирования I Какой атрибут или параметр модулируется, чтобы получить желаемый эффект? II Как осуществляется отображение? Если текстура определена в 2D области, а объект существует в 3D пространстве, нам необходимо определить отображение между этими областями
Типы функций отражения Диффузное отражение матовый пластик, дерево и т.п. модель Ламберта Идеально зеркальное отражение зеркало модель отражения Зеркальное отражение блики на объекте модели Фонга и Блинна
Зеркальное отражение (модель Фонга)
Атрибуты (параметры) I r = k a *I a + I i (k d *(N.L) + k s *(R.V) α ) отражение от поверхности - surface color texture вектор нормали N - bump mapping коэффициенты k d, k s, - specular mapping падающий свет I i - environment mapping геометрия - displacement mapping прозрачность - transparency mapping
Цилиндр (1)
Цилиндр (2) P - точка нанесения текстуры Перевести P в параметрические координаты (s,t) s - угловая координата в радианах от оси Х t - координата высоты
Параметрическое уравнение для цилиндра
Параметрическое уравнение для сферы
Параметрическое уравнение для тора
Другие поверхности Параметрические (В-сплайн) поверхности Полигональные поверхности Неявно заданные поверхности
Бамп-мэппинг Бамп-мэппинг (bump mapping) призван создавать впечатление "шершавых" или бугристых поверхностей за счет модуляции попиксельных нормалей к поверхности Demo
Место в графическом процессе для каждого многоугольника модели { спроецировать на картинную плоскость для каждого пикселя проекции { вычислить цвет пикселя вычислить глубину (z) пикселя сравнить с хранимой в z-буфере если ближе, вывести в буфер кадра } z-буфер
Фильтрация текстур
Метод ближайшего соседа Билинейная фильтрация Мип-мэппинг Трилинейная фильтрация Анизотропная фильтрация
Ближайший сосед и билинейная фильтрация Ближайший соседБилинейная
Ближайший сосед и билинейная фильтрация(2) Выборка ближайшего текселя GL_NEAREST: Линейная комбинация 4-x соседних пикселей GL_LINEAR:
Фильтрация текстур: mip-mapping (1)
Фильтрация текстур: мипмэппинг (2) увеличение текстуры масштаб 1:1 уменьшение текстуры увеличение текстуры масштаб 1:1 уменьшение текстуры в 2 раз
Фильтрация текстур: мипмэппинг (3) 256x x64 216x16 4 Трилинейная фильтрация GL_LINEAR_MIPMAP_LINEAR
Анизотропная фильтрация Экран
Сравнение методов фильтрации Ближайший соседБилинейная ТрилинейнаяАнизотропная
Поддержка в OpenGL Стандарт OpenGL поддерживает диффузные текстуры и зеркальные текстуры (environment mapping) С помощью использования дополнительных расширений можно организовать бамп- мэппинг и др. Текстурная координата – атрибут вершины Текущая текстура – атрибут состояния
Композирование
Композирование: Определение Compositing n. : The combining of two or more separately prepared images into one, usually through pixel-by-pixel transparency (or alpha) computation, and sometimes with z comparison. Also, composit v.t. : to perform compositing; adj. : being composited; n. : the result of compositing. Смешение, Монтаж : Объединение двух или более независимо подготовленных изображений в одно изображение, обычно с помощью попиксельного вычисления полупрозрачности (альфа-канал), иногда с учетом глубины (z-координаты)
Пример 1
Пример 2
Простейший вариант композитинга Фон Передний план Фигуры переднего плана перекрывают фон Что происходит при растеризации?
Проблемный пиксель Наложение красного и синего треугольников. Каким будет цвет пиксела на границе?
Композитная операция Для каждого пикселя изображение определяем площадь, занимаемую растеризованной фигурой Часть площади обозначается как B new = (1- )B old + F B new = B old + F- B old ) Пиксель Фон Передний план
Альфа-канал Для выполнения композирования RGB изображений дополняется альфа-каналом RGB -> RGBA
Использование альфа- канала Варианты использования альфа-канала Площадь покрытия пикселя Прозрачность Затемнение...
Ассоциативность B new = (1- )B old + F B newnew = (1- )B new + G Формула позволяет получать изображение БЕЗ альфа-канала Фигуры накладываются на фон Что если мы хотим получить композиции двух изображений с альфа-каналом ?
Ассоциативность (2) B newnew = (1- )B new + G (B&F)&G = B&(F&G) H = F & G, H – RGB (1- )((1- B+ F)+ G = (1- )B+ H
Ассоциативность (3) (1- )(1- B+( 1- F+ G) = (1- )B+ H H F G H F G
Пример 1 Композируем G поверх матового изображения F ( = 1) H F G => H F G Т.е. получили обычную операцию композирования
Пример 2 Композируем полностью матовое изображение G ( поверх F H F G => H G Результирующее изображение не зависит от
Композирование и буфер кадра. Пример. Последовательность операций: Загрузить непрозрачный фон в буфер кадра ( = 1 во всех точках) Графический конвейер создает рисует фигуру поверх фона. Пиксели внутри фигуры имеют = 1. Пиксели на границах могут иметь 1 Аналогично для других фигур. Объекты могут частично перекрываться. Программа визуализации не должна знать, что находится под растеризованной фигурой. Операция композирования все обрабатывает корректно
Композирование и буфер кадра. Пример 2. Последовательность операций: Загрузить прозрачный фон в буфер кадра ( = 0 во всех точках) Рисовать фигуры аналогично примеру 1 В результирующем изображении пиксели с = 0 не были «задеты» ни разу
Композирование и буфер кадра. Пример 3. Последовательность операций: Загрузить прозрачный фон в буфер кадра ( = 0 во всех точках) Рисовать результирующее изображение из примера 2 поверх фона Только пиксели с 0 будут изменять фон
Поддержка в OpenGL OpenGL поддерживает различные композитные операции. Альфа-канал для изображения примитива может задаваться через RGBA-цвет вершин или RGBA-цвет текстур Пример: glEnable(GL_ENABLE); glDisable(GL_DISABLE); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)
Итоги Текстурирование Использование изображений для моделирования (отражающих) свойств поверхности Виды текстурирования –bump mapping, specular mapping, environment mapping, displacement mapping, transparency mapping Отображение текстуры Фильтрация текстуры –Метод ближайшего соседа, Билинейная фильтрация, Мип-мэппинг, Трилинейная фильтрация, Анизотропная фильтрация Композирование Объединение двух или более независимо подготовленных изображений в одно изображение, обычно с помощью попиксельного вычисления полупрозрачности