uzluga.ru
добавить свой файл


Текстуры. Композиты

  • Лекция 11

  • Алексей Игнатенко


На прошлой лекции

  • Удаление невидимых поверхностей

    • Удаление нелицевых граней
    • Алгоритм художника
    • Двоичное разбиение пространства
    • Буфер глубины
  • Модели освещения и отражения

    • Локальные и глобальные модели
    • Диффузное и зеркальное отражение
    • Модель освещенности Фонга
    • Интерполяционная закраска (при растеризации)
    • Поддержка в OpenGL
      • glMaterial, glLight


На лекции

  • Текстурирование

    • Определение
    • Виды текстурирования
    • Отображение текстуры
    • Фильтрация текстуры
  • Композирование

    • Определение
    • Альфа-канал
    • Операции композирования
    • Ассоциативность
    • Примеры


Текстурирование



Текстурирование

  • Использование изображений для моделирования (отражающих) свойств поверхности



Отображение текстуры (Texture mapping)

  • Способ сопоставления пикселя текстуры (текселя) пикселю примитива

  • Фиксированное отображение

    • Узор, определенный в 2D области, «наклеивается» на объект как кусок обоев и, фактически становится частью объектной базы данных. Т.е., когда объект перемещается, текстурный узор перемещается вместе с ним.
  • View-dependent mapping

  • Bump mapping

  • ...



Задачи текстурирования

  • I

  • II

    • Как осуществляется отображение? Если текстура определена в 2D области, а объект существует в 3D пространстве, нам необходимо определить отображение между этими областями


Типы функций отражения

  • Диффузное отражение

    • матовый пластик, дерево и т.п.
    • модель Ламберта
  • Идеально зеркальное отражение

    • зеркало
    • модель отражения
  • Зеркальное отражение

    • блики на объекте
    • модели Фонга и Блинна


Зеркальное отражение (модель Фонга)



Атрибуты (параметры)

  • Ir = ka*Ia + Ii (kd*(N.L) + ks*(R.V)α)

  • отражение от поверхности - surface color texture

  • вектор нормали N - bump mapping

  • коэффициенты kd, ks,  - specular mapping

  • падающий свет Ii - environment mapping

  • геометрия - displacement mapping

  • прозрачность - transparency mapping



Цилиндр (1)



Цилиндр (2)

  • P - точка нанесения текстуры

  • Перевести P в параметрические координаты (s,t) s - угловая координата в радианах от оси Х t - координата высоты



Параметрическое уравнение для цилиндра



Параметрическое уравнение для сферы



Параметрическое уравнение для тора



Другие поверхности

  • Параметрические (В-сплайн) поверхности

  • Полигональные поверхности

  • Неявно заданные поверхности



Бамп-мэппинг

  • Бамп-мэппинг (bump mapping)

    • призван создавать впечатление "шершавых" или бугристых поверхностей за счет модуляции попиксельных нормалей к поверхности


Место в графическом процессе

  • для каждого многоугольника модели

  • {

  • спроецировать на картинную плоскость

  • для каждого пикселя проекции

  • {

  • вычислить цвет пикселя

  • вычислить глубину (z) пикселя

  • сравнить с хранимой в z-буфере

  • если ближе, вывести в буфер кадра

  • }

  • }



Фильтрация текстур



Фильтрация текстур

  • Метод ближайшего соседа

  • Билинейная фильтрация

  • Мип-мэппинг

  • Трилинейная фильтрация

  • Анизотропная фильтрация



Ближайший сосед и билинейная фильтрация



Ближайший сосед и билинейная фильтрация(2)



Фильтрация текстур: mip-mapping (1)



Фильтрация текстур: мипмэппинг (2)



Фильтрация текстур: мипмэппинг (3)



Анизотропная фильтрация



Сравнение методов фильтрации



Поддержка в 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



Простейший вариант композитинга



Проблемный пиксель

  • Наложение красного и синего треугольников.

  • Каким будет цвет пиксела на границе?



Композитная операция



Альфа-канал

  • Для выполнения композирования RGB изображений дополняется альфа-каналом



Использование альфа-канала

  • Варианты использования альфа-канала

    • Площадь покрытия пикселя
    • Прозрачность
    • Затемнение
    • ...


Ассоциативность

  • Bnew = (1-)Bold+F

  • Bnewnew = (1-)Bnew+ G

  • Формула позволяет получать изображение БЕЗ альфа-канала

    • Фигуры накладываются на фон
  • Что если мы хотим получить композиции двух изображений с альфа-каналом?



Ассоциативность (2)

  • Bnewnew = (1-)Bnew+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
    • Отображение текстуры
    • Фильтрация текстуры
  • Композирование

    • Объединение двух или более независимо подготовленных изображений в одно изображение, обычно с помощью попиксельного вычисления полупрозрачности