Растеризация Текстуры Композиты. На лекции 4-е задание Задача растеризации Текстурирование Определение Текстурные отображения для сферы, тора, цилиндра.

Презентация:



Advertisements
Похожие презентации
Текстуры. Композиты Лекция 11 Алексей Игнатенко. На прошлой лекции Удаление невидимых поверхностей Удаление нелицевых граней Алгоритм художника Двоичное.
Advertisements

Текстуры. Композиты Чепурнова Екатерина Graphics & Media Lab.
Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)
Прямые. Кривые. Поверхности Лекция 12. Алексей Игнатенко.
OpenGL Лекция 2.. Преобразование координат Преобразования координат.
Фильтрация текстур. Пиксельные операции. Астана 2004 Лекция 11.
{ OpenGL Лекция 3 ( ). float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены.
GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
Графический конвейер Преобразования геометрии Александр Шубин.
OpenGL Лекция 3. Построение тени Проективные тени Объемные тени Карты теней Мягкие тени.
Текстура растровое изображение, накладываемое на поверхность полигона, из которых состоят 3D- модели, для придания ей цвета, окраски или иллюзии рельефа.
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Компьютерная графика. Лекция 6 М ЕТОДЫ ТЕКСТУРИРОВАНИЯ И АНТИАЛИАСИНГ.
Лекция 13 Метод трассировки лучей Астана Трассировка лучей через сферическую каплю воды Луч 7 -- луч Декарта [1637]
ТРЕХМЕРНАЯ ГРАФИКА Компьютерная графика. Геометрические примитивы.
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
Кривые и поверхности высших порядков Астана 2004 Лекция 12.
Лекция 8 25февраля 2003 г. (Астана) Видовые преобразования Закраска Гуро и Фонга Удаление невидимых линий и поверхностей.
Компьютерная геометрия и графика. Лекция 7. План занятия: Задача удаления невидимых линий. Алгоритм плавающего горизонта.
Транксрипт:

Растеризация Текстуры Композиты

На лекции 4-е задание Задача растеризации Текстурирование Определение Текстурные отображения для сферы, тора, цилиндра Рельефное текстурирование (bump-mapping) Текстурирование в OpenGL Композиты Определение Алгебра композитов Композиты в OpenGL

4-е задание: визуализация односторонних поверхностей Лист Мёбиуса Бутылка Клейна

Конвейер Обработка вершин и сборка примитивов Растеризация и обработка фрагментов Операции над пикселями Передача данных в буфер кадра Текстуры Источники света Атрибуты вершин Вершина любого объекта в момент определения немедленно передается в конвейер, и проходит все его ступени 3D координаты -> экранные

Растеризация

Генерация изображения P1 P2 P3 P4 1.Растеризовать примитив 2.Вычислить цвет каждого пикселя 3.Скомбинировать с цветом фона

Растеризация P1 P2 P3 P4 Линия развертки (scanline)

Вычисление цвета пикселя P1 P2 P3 P4 1.Цвет материала C m 2.Цвет текстуры C t 3.Цвет фона C b

Вычисление цвета пикселя: цвет материала P1 P2 P3 P4 1.Цвет материала C m 2.Цвет текстуры C t 3.Цвет фона C b

Вычисление цвета пикселя: закраска Фонга (1/2)

Вычисление цвета пикселя: закраска Фонга (2/2)

Вычисление цвета пикселя: цвет текстуры P1 P2 P3 P4 1.Цвет материала C m 2.Цвет текстуры C t 3.Цвет фона C b

Отображение текстуры (Texture mapping) Общее отображение текстуры Узор, определенный в 2D области, «наклеивается» на объект как кусок обоев и, фактически становится частью объектной базы данных. Когда объект перемещается, текстурный узор перемещается вместе с ним. Разнообразие технологий View-dependent mapping techniques. Bump mapping techniques. Displacement mapping techniques … (с)

Текстурирование: постановка задачи Текстура – часть модели освещения и часть геометрической модели Какой атрибут или параметр модулируется, чтобы получить желаемый эффект? Как осуществляется отображение? Если текстура определена в 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, - specularity mapping падающий свет I i - environment mapping геометрия - displacement mapping прозрачность - transparency mapping

Отображение текстуры Задать соответствие между координатами изображения текстуры и точками объекта Для полигонального предсталения используется соответствие на вершинах

Пример отображение текстуры : Цилиндр

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

Пример отображение текстуры : Цилиндр (3)

Другие поверхности Параметрические (В-сплайн) поверхности Полигональные поверхности Неявно заданные поверхности

Bump mapping

Bump mapping (2)

Закраска Фонга и рельефное текстурирование

Виды рельефных текстур

Визуализация текстуры P1 (s1, t1) P4 (s4, t4) P2 (s2, t2) P3 (s3, t3)

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

Фильтрация текстур: метод ближайшего соседа Выбирается цвет ближайшего соответствующего пикселя текстуры Быстрый метод Низкое качество

Фильтрация текстур: Билинейная фильтрация Четыре пикселя текстуры, ближайшие к текущей точке экрана Результирующий цвет – смешение цветов этих пикселей Быстро, достаточно качественно За исключение случаев, когда смотрим на плоскость под углом

Фильтрация текстур: MIP – mapping (multum in parvo) Выбирается подходящий уровень мипмапа чем больше размер "образа" пикселя в текстуре, тем меньший мипмап берется Далее значения в мипмапе могут усредняться билинейно или методом ближайшего соседа (как описано выше) Дополнительно происходит фильтрация между соседними уровнями мипмапа (трилинейная фильтрация)

Фильтрация текстур: анизотропная фильтрация Вместо квадратного фильтра, используется вытянутый Позволяет более качественно выбрать нужный цвет для экранного пикселя

Сравнение фильтраций Ближайший соседБилинейная Трилинейная Анизотропная

GLuint texture; glGenTextures(1,&texture); Создаем текстуру - прямоугольный массив с цветами пикселов. Высота и ширина должны быть степенями двойки. RGB NM …RGB 1M RGB 0M ………… RGB N1 …RGB 11 RGB 01 RGB N0 …RGB 10 RGB 00 Получаем номер текстурного объекта Активизируем текстурный объект glBindTexture(texture); Текстурирование в OpenGL

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); Загружаем текстуру Устанавливаем режимы текстурирования glPixelStorei(GL_UNPACK_ALIGNMENT,1); glTexImage2D(GL_TEXTURE_2D, 0, // Mip-level GL_RGB, // Формат текстуры tex_width,tex_height, 0, // Ширина границы GL_RGB, // Формат исходных данных GL_UNSIGNED_BYTE, // Тип данных tex_bits); // Исходные данные Текстурирование в OpenGL (2)

Разрешаем текстурирования Задаем текстурные координаты glEnable(GL_TEXTURE_2D); glTexCoord2d(u,v); Возможно, потребуется включить режим перспективного текстурирования glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); Возвращаем номер текстурного объекта в список свободных glDeleteTextures(1,&texture); Текстурирование в OpenGL (3)

Генерация текстурных координат Автоматическая генерация текстурных координат glTexGen{ifd}[v]() Режимы генерации координат: GL_OBJECT_LINEAR GL_EYE_LINEAR GL_SPHERE_MAP Координаты считаются как расстояние от заданной плоскости Ax+By+Cz+D=0

Композиты

Композирование 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- координаты) Смешение, Монтаж (Compositing)

Альфа-канал Кодирует информацию о покрытии пикселя: α = 0 : нет покрытия (прозрачный) α = 1 : полное покрытие (непрозрачный) 0 < α < 1 : частичное покрытие (полупрозрачный) Пример: α = 0.3

Композирование с альфа- каналом Альфа-канал управляет линейной интерполяцией фоновых и передних пикселей при композировании

Полупрозрачные объекты Предложим, мы рисуем изображение А поверх B поверх фона G Насколько A блокирует B ? α A Насколько B видно через A? 1-α A Насколько G видно через A и B ? (1-α A ) (1-α b )

Непрозрачные объекты Как мы можем комбинировать два частично перекрытых пикселя? 3 возможных цвета (0, A, B) 4 региона (0, А, B, AB)

Композитная алгебра Портера-Даффа 12 возможных комбинаций

Оператор Over

Композирование в OpenGL Включить режим композирования glEnable(GL_BLEND) Задать функции источника и приемника glBlendFunc(source_function, dest_function) Пример: оператор A over B glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) Задать альфа-канал в вершинах или в текстуре glColor(R,G,B,A); Выключить режим композирования glDisable(GL_BLEND);

Итоги Задача растеризации Найти пиксели (фрагменты), соответствующие примитиву и вычислить их цвет в соответствии с моделью освещения, текстурой, операцией композирования Текстурирование Отображение изображения на поверхность модели Различные виды текстурирования Композирование Способ комбинации пикселей растеризуемого примитива и фона Композитная алгебра