close

Вход

Забыли?

вход по аккаунту

?

Аффинные преобразования

код для вставкиСкачать
Аффинные преобразования
Графический конвейер
Астана. Лекция 7
На прошлой лекции
• Типовая схема графической обработки
• Геометрическое моделирование
– Представление трехмерных данных в компьютере
• Используется декартова система координат
– Трехмерная для представления объемных объектов и
поверхностей
• Представление трехмерных данных
–
–
–
–
Каркасное («структура» объекта)
Грани и ребра (поверхность объекта)
Воксельное (объем)
Конструктивная геометрия (объем)
На лекции
• Типы преобразований
–
–
–
–
–
•
•
•
•
Нелинейные преобразования
Линейные преобразования
Аффинные преобразования
Преобразования подобия
Изометрические преобразования
Классификация проективных преобразований
Однородные координаты
Комбинация, иерархия преобразований
Графический конвейер
– Локальные, мировые, экранные координаты
Что такое геометрические
преобразования?
• Модель
– Например, описание
поверхности трехмерного
объекта
– Некоторое подмножество
точек декартова
пространства
• Какие геометрические
операции можно
применять к модели?
• Преобразование моделей –
важный инструмент в
геометрическом
моделирование и синтезе
изображений
– Вспомните CSG
Типы преобразований
• Нелинейные преобразования
• Линейные преобразования
– Также называются проективными
– Прямые переходят в прямые
• Аффинные преобразования
– Сохраняется параллельность линией
– Пример: сдвиг
• Преобразование подобия
– Сохраняются углы
– Пример: равномерное масштабирование
• Изометрия
– Сохраняются расстояния
– Пример: поворот, перенос
Нелинейные преобразования
• Произвольное
преобразование точек
модели
M’=T(M)
Линейные преобразования
x ' Ax By Cz D
y ' Ex Fy Gz H
z ' Ix Jy Kz L
• Линейное преобразование применяется к каждой
точке (вершине) модели.
• Не изменяет топологию!
Перенос
x' x x
y' y y
z' z z
x
y
Изометрия
Масштабирование
x ' ax
y ' by
z ' cz
Подобие
Поворот (2D)
x ' x cos y sin y ' x sin y cos Изометрия
Сдвиг (2D)
x ' x ay
y ' y bx
Аффинное
преобразование
Преобразование в матричной
форме
x ' Ax By Cz D
y ' Ex Fy Gz H
z ' Ix Jy Kz L
A
x' E
y ' z' I
0
B
C
F
G
J
K
0
0
D x
H y
L
z
1 1 Однородные координаты
• Какой смысл имеет
использование 4х
компонент вектора?
– Позволяет использовать
матричную запись для
всех линейных
преобразований (если
использовать матрицы
3x3, невозможно
представить перенос)
– Позволяет описать так
называемой
перспективное деление
Параллельный перенос
x' x x
y' y y
z' z z
1
x' 0
y ' z' 0
0
0
0
1
0
0
1
0
0
x x y y z
z
1 1 Масштабирование
x ' ax
y ' by
z ' cz
a
x' 0
y ' z' 0
0
0
0
b
0
0
c
0
0
0 x
0 y
0
z
1 1 Поворот (2D)
x ' x cos y sin y ' x sin y cos cos x' sin y ' z' 0
0
sin 0
cos 0
0
1
0
0
0 x
0 y
0
z
1 1 Поворот вокруг оси Z
y
x
z
cos x' sin y ' z' 0
0
sin 0
cos 0
0
1
0
0
0 x
0 y
0
z
1 1 Поворот вокруг оси X
y
x
z
1
x' cos y ' z ' sin 0
0
0
sin 0
cos 1
0
0
0 x
0 y
0
z
1 1 Поворот вокруг оси Y
y
x
z
cos x' 0
y ' z ' sin 0
sin 0
1
0
cos 1
0
0
0 x
0 y
0
z
1 1 Сдвиг
x ' x ay
y ' y bx
1
x' b
y ' z' 0
0
a
0
1
0
0
1
0
0
0 x
0 y
0
z
1 1 Наши обозначения
•
•
•
•
Перенос [T a,b,c]
Поворот [R theta] ([R axis, theta])
Масштабирование [S a,b,c]
Сдвиг [Sh a,b,c]
Суперпозиция преобразований
Повернуть вокруг
центра
b
а
Записывать так
x'
y '
(([ T a , b ] * ([ R ] * [T a , b ]))
z'
1 Произносить так
x
y
)
z
1
Произведение матриц
• Произведение матриц не коммутативно!
• AB != BA
Поворот, затем
перенос
Перенос, затем
поворот
Произведение матриц (2)
• Произведение матриц ассоциативно
• Можно перемножить матрицы и применять
одно составное преобразование для всей
геометрии!
x'
x
y '
y
M z'
z
1
1 Задача
T(-1,-1)
Sh(-1, 0)
(4,2.5)
S(1,2.5)
(2,2)
T(4,0)
(1,1)
(6,0)
(3,1)
(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
Иерархия преобразований
Составить
манипулятор из
трех частей
3
2
1
Задача
3
2
1
Позиционирование части 1
1. Поворачиваем на 1
2. Переносим на 1g
M 1G T1G * R
Позиционирование части 2
1.
2.
3.
4.
Поворачиваем на 2
Переносим на размер части 1
Поворачиваем на 1
Переносим на 1g
M 2 / 1 T1G * R * T 21 * R 2
Позиционирование части 3
1.
2.
3.
4.
5.
6.
Поворачиваем на 3
Переносим на размер части 2
Поворачиваем на 2
Переносим на размер части 1
Поворачиваем на 1
Переносим на 1g
M 3 / 2 T1G * R * T 21 * R 2 * T32 * R 3
Результат
3
M M 1 / G * M 2 /1 * M 3 / 2
2
1
Проективные преобразования
• Важнейший класс преобразований
• Все современные дисплеи визуализируют
изображение => необходимо
преобразовать 3D данные в 2D !
• Для выполнения таких преобразований
применяются проективные
преобразования.
• Описываются матрицей 4x4 (линейным
преобразованием)
Типы проекций
• Много разновидностей
– Применяются в дизайне
и т.п.
• Основные виды
– Параллельные
• Ортографические
• Косоугольные
– Перспективные
• 1,2,3-х точечные
Ортографическая проекция
Изометрия
Военная проекция
Кабинетная проекция
Косоугольные проекции
•
Направление проецирования
( l cos ,l sin ,1)
•
Угол между косыми проекторами и
плоскостью проекции
arcctg (l )
•
Военная проекция
arcctg (1) 45 •
Кабинетная проекция
arcctg (1 / 2 ) 63 . 435 Фотография
Перспективная проекция
Перспективная проекция и
однородные координаты
• Применяем матрицу M’per
M ' per
x x y y z 0 1 z 1
d
• Четверная компонента не
равна 1 !
– Т.е. Результат уже не в
декартовых координатах.
• Необходима нормализация
x x/w
Двухточечная проекция
Виртуальная камера
• Определяет положение наблюдателя в
пространстве
• Параметры
–
–
–
–
Положение
Направление взгляда
Направление «вверх»
Матрица проекции
• Положение, направление взгляда и
направление «вверх» задаются матрицей
видового преобразования
Видовое преобразование
•
Для чего нужно еще одно преобразование?
•
Заметим, что проективные преобразования описывают
«стандартные» проекции, т.е. проецируют фиксированную
часть пространства
Что если мы хотим переместить наблюдателя?
•
–
–
•
Изменить матрицу проекции чтобы включить в нее
информации о камере
Применить дополнительное преобразование, «подгоняющее»
объекты под стандартную камеру
Стандартная камера:
–
–
–
Наблюдатель в (0, 0, 0)
Смотрит по направлению (0, 0, -1)
Верх (0, 1, 0)
Графический конвейер
Модельное преобразование
• Переводит модель, заданную в локальных (собственных)
координатах, в глобальное (мировое пространство)
• Модель «собирается» из частей, с помощью модельных
преобразований
• На выходе – модель в единых мировых координатах
Видовое преобразование
• «Подгоняет» мир под стандартную камеру,
преобразует мировую систему координат в
видовые координаты (которые подходят для
«стандартной» камеры
• На выходе – модель, готовая к проекции на экран
Проективное преобразование
• Выполняет 3D преобразование, подготавливая модель к
переходу на 2D
• После перспективного преобразования необходимо
отбросить координату z и получить значения в оконных
координатах (обычно от –1 до 1)
Проективное преобразование
vs. проекция
• Матрица проекции вырожденная
– Фактически, информация от координате z теряется
• Часто необходимо выполнять дополнительные действия уже
ПОСЛЕ проецирования
– Например, удаление невидимых линий/поверхностей
– Поэтому часто (e.g. в OpenGL) используется перспективное
преобразование вместо проекции
• Перспективное преобразование невырожденно и позволяет
анализировать глубину!
• Перспективное преобразование преобразует некоторую
область пространства в каноническую пирамиду
видимости
Отсечение
Преобразование в экранные
координаты
• Отбрасываем координату z
• Умножаем на высоту/ширину окна
– Получаем экранные координаты
Итоги
• Рассмотрены геометрические преобразования
–
–
–
–
–
Нелинейные преобразования
Линейные преобразования (проективные)
Аффинные преобразования
Преобразования подобия
Изометрические преобразования
• Однородные координаты
– Много применений: унификация операций с матрицами,
перспективное деление и т.п.
• Комбинация, иерархия преобразований
– Сборка модели из локальных компонент
• Графический конвейер: от локальной модели до
точки на экране
– Локальные, мировые, экранные координаты
Документ
Категория
Презентации по информатике
Просмотров
141
Размер файла
1 282 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа