Аффинные преобразования Графический конвейер Астана. Лекция 7
На прошлой лекции Типовая схема графической обработки Геометрическое моделирование –Представление трехмерных данных в компьютере Используется декартова система координат –Трехмерная для представления объемных объектов и поверхностей Представление трехмерных данных –Каркасное («структура» объекта) –Грани и ребра (поверхность объекта) –Воксельное (объем) –Конструктивная геометрия (объем)
На лекции Типы преобразований –Нелинейные преобразования –Линейные преобразования –Аффинные преобразования –Преобразования подобия –Изометрические преобразования Классификация проективных преобразований Однородные координаты Комбинация, иерархия преобразований Графический конвейер –Локальные, мировые, экранные координаты
Что такое геометрические преобразования? Модель –Например, описание поверхности трехмерного объекта –Некоторое подмножество точек декартова пространства Какие геометрические операции можно применять к модели? Преобразование моделей – важный инструмент в геометрическом моделирование и синтезе изображений –Вспомните CSG
Типы преобразований Нелинейные преобразования Линейные преобразования –Также называются проективными –Прямые переходят в прямые Аффинные преобразования –Сохраняется параллельность линией –Пример: сдвиг Преобразование подобия –Сохраняются углы –Пример: равномерное масштабирование Изометрия –Сохраняются расстояния –Пример: поворот, перенос
Нелинейные преобразования Произвольное преобразование точек модели M=T(M)
Линейные преобразования Линейное преобразование применяется к каждой точке (вершине) модели. Не изменяет топологию!
Перенос Изометрия
Масштабирование Подобие
Поворот (2D) Изометрия
Сдвиг (2D) Аффинное преобразование
Преобразование в матричной форме
Однородные координаты Какой смысл имеет использование 4х компонент вектора? –Позволяет использовать матричную запись для всех линейных преобразований (если использовать матрицы 3x3, невозможно представить перенос) –Позволяет описать так называемой перспективное деление
Параллельный перенос
Масштабирование
Поворот (2D)
Поворот вокруг оси Z x z y
Поворот вокруг оси X x z y
Поворот вокруг оси Y x z y
Сдвиг
Наши обозначения Перенос [T a,b,c] Поворот [R theta] ([R axis, theta]) Масштабирование [S a,b,c] Сдвиг [Sh a,b,c]
Суперпозиция преобразований Записывать так Произносить так а b Повернуть вокруг центра
Произведение матриц Произведение матриц не коммутативно! AB != BA Поворот, затем перенос Перенос, затем поворот
Произведение матриц (2) Произведение матриц ассоциативно Можно перемножить матрицы и применять одно составное преобразование для всей геометрии!
Задача (1,1)(3,1) (2,2) (6,0) (4,2.5) (4,0) T(-1,-1) Sh(-1, 0) S(1,2.5) T(4,0)
Решение задачи T(-1,-1) Sh(-1, 0) S(1,2.5) T(4,0) P= T(4,0) * S(1,2.5) * Sh(-1, 0) * T(-1,-1) * P
Иерархия преобразований Составить манипулятор из трех частей
Задача 1 2 3
Позиционирование части 1 1.Поворачиваем на 1 2.Переносим на 1g
Позиционирование части 2 1.Поворачиваем на 2 2.Переносим на размер части 1 3.Поворачиваем на 1 4.Переносим на 1g
Позиционирование части 3 1.Поворачиваем на 3 2.Переносим на размер части 2 3.Поворачиваем на 2 4.Переносим на размер части 1 5.Поворачиваем на 1 6.Переносим на 1g
Результат 1 2 3
Проективные преобразования Важнейший класс преобразований Все современные дисплеи визуализируют изображение => необходимо преобразовать 3D данные в 2D ! Для выполнения таких преобразований применяются проективные преобразования. Описываются матрицей 4x4 (линейным преобразованием)
Типы проекций Много разновидностей –Применяются в дизайне и т.п. Основные виды –Параллельные Ортографические Косоугольные –Перспективные 1,2,3-х точечные
Ортографическая проекция
Изометрия
Военная проекция
Кабинетная проекция
Направление проецирования Угол между косыми проекторами и плоскостью проекции Военная проекция Кабинетная проекция Косоугольные проекции
Фотография
Перспективная проекция
Перспективная проекция и однородные координаты Применяем матрицу M per Четверная компонента не равна 1 ! –Т.е. Результат уже не в декартовых координатах. Необходима нормализация
Двухточечная проекция
Виртуальная камера Определяет положение наблюдателя в пространстве Параметры –Положение –Направление взгляда –Направление «вверх» –Матрица проекции Положение, направление взгляда и направление «вверх» задаются матрицей видового преобразования
Видовое преобразование Для чего нужно еще одно преобразование? Заметим, что проективные преобразования описывают «стандартные» проекции, т.е. проецируют фиксированную часть пространства Что если мы хотим переместить наблюдателя? –Изменить матрицу проекции чтобы включить в нее информации о камере –Применить дополнительное преобразование, «подгоняющее» объекты под стандартную камеру Стандартная камера: –Наблюдатель в (0, 0, 0) –Смотрит по направлению (0, 0, -1) –Верх (0, 1, 0)
Графический конвейер
Модельное преобразование Переводит модель, заданную в локальных (собственных) координатах, в глобальное (мировое пространство) Модель «собирается» из частей, с помощью модельных преобразований На выходе – модель в единых мировых координатах
Видовое преобразование «Подгоняет» мир под стандартную камеру, преобразует мировую систему координат в видовые координаты (которые подходят для «стандартной» камеры На выходе – модель, готовая к проекции на экран
Проективное преобразование Выполняет 3D преобразование, подготавливая модель к переходу на 2D После перспективного преобразования необходимо отбросить координату z и получить значения в оконных координатах (обычно от –1 до 1)
Проективное преобразование vs. проекция Матрица проекции вырожденная –Фактически, информация от координате z теряется Часто необходимо выполнять дополнительные действия уже ПОСЛЕ проецирования –Например, удаление невидимых линий/поверхностей –Поэтому часто (e.g. в OpenGL) используется перспективное преобразование вместо проекции Перспективное преобразование невырожденно и позволяет анализировать глубину! Перспективное преобразование преобразует некоторую область пространства в каноническую пирамиду видимости
Отсечение
Преобразование в экранные координаты Отбрасываем координату z Умножаем на высоту/ширину окна –Получаем экранные координаты
Итоги Рассмотрены геометрические преобразования –Нелинейные преобразования –Линейные преобразования (проективные) –Аффинные преобразования –Преобразования подобия –Изометрические преобразования Однородные координаты –Много применений: унификация операций с матрицами, перспективное деление и т.п. Комбинация, иерархия преобразований –Сборка модели из локальных компонент Графический конвейер: от локальной модели до точки на экране –Локальные, мировые, экранные координаты