Компьютерная графика работает с объектами, заданными в трехмерном мире 2D – всего лишь частный случай Все эти объекты имеют форму, положение и ориентацию.

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



Advertisements
Похожие презентации
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Advertisements

Элементы векторной алгебры.. Определение Совокупность всех направленных отрезков, для которых введены операции: - сравнения - сложения - умножения на.
Элементы векторной алгебры. Лекции 5-7. Вектором называется направленный отрезок. Обозначают векторы символами или, где А- начало, а B-конец направленного.
Векторная алгебра. Основные понятия.. Декартовые прямоугольные координаты на плоскости. Координатами точки на плоскости называются числа, определяющие.
В е к т о р ы. О с н о в н ы е п о н я т и я.. Вектором называется направленный отрезок. Обозначают векторы символами или, где А- начало, а B-конец направленного.
Компьютерная геометрия и графика. Лекция 6. План занятия: Виды проектирования. Обобщенные координаты пространства. Матричные преобразования.
АНАЛИТИЧЕСКАЯ ГЕОМЕТРИЯ. ВЕКТОРЫ ВФ НИТУ «МИСиС, 2018.
Векторная алгебра Основные понятия. Математическая величина Скалярная величина (характеризуется численным значением) Векторная величина (Характеризуется.
ЭЛЕМЕНТЫ ВЕКТОРНОЙ АЛГЕБРЫ Лекция 3. План лекции: Понятие вектора. Действия над векторами. Линейно зависимые и линейно независимые векторы. Размерность.
Тема 8. «Векторы на плоскости и в пространстве» Основные понятия: 1.Определение вектора, основные определения и линейные операции над векторами 2.Скалярное.
Элементы векторной алгебры Кафедра высшей математики ТПУ Лектор: доцент Тарбокова Татьяна В асильевна.
Математика Лекция 3 (продолжение) Разработчик Гергет О.М.
ГЛАВА 3 ЭЛЕМЕНТЫ АНАЛИТИЧЕСКОЙ ГЕОМЕТРИИ. §1. Прямая на плоскости. Различные виды уравнений прямой на плоскости. Пусть имеется прямоугольная система координат.
ВЕКТОРНАЯ АЛГЕБРА ВЕКТОРНАЯ АЛГЕБРА Основные определения.
1 2. Матрицы. 2.1 Матрицы и их виды. Действия над матрицами. Джеймс Джозеф Сильвестр.
Координаты вектора в пространстве. Скалярное и векторное произведения векторов.
Глава 2. ЭЛЕМЕНТЫ ВЕКТОРНОЙ АЛГЕБРЫ.. §1. Векторы. Основные определения. Величины, которые полностью определяются заданием их числовых значений (например,
Плоскость и прямая в пространстве Лекция 10. Определение. Уравнением поверхности в пространстве называется такое уравнение между переменными которому.
Линейная алгебра и аналитическая геометрия Лектор Ефремова О.Н г. Тема: Простейшие задачи векторной алгебры. Скалярное произведение векторов.
Две взаимно перпендикулярные числовые оси с общим началом 0 образуют прямоугольную систему координат на плоскости. Горизонтальная ось называется осью.
Транксрипт:

Компьютерная графика работает с объектами, заданными в трехмерном мире 2D – всего лишь частный случай Все эти объекты имеют форму, положение и ориентацию в виртуальном пространстве

Задачи визуализации трехмерных объектов Описание объектов, источников света, виртуальных камер, сред (жидкости, газы, туман) Взаимодействие этих объектов со светом и вычисление значений соответствующих пикселей Эта задача, в общем случае, непростая

Векторный анализ Векторный анализ – математическая дисциплина, облегчающая решение различных задач компьютерной графики Построение проекций трехмерных объектов Трассировка лучей с целью создания реалистичных изображений Решение геометрических задач

Система координат Все точки и векторы задаются в какой-либо системе координат Система координат имеет точку начала координат и несколько координатных осей, обычно направленных под прямым углом друг к другу

Двухмерная прямоугольная система координат

Трехмерная прямоугольная система координат

Правосторонняя система координат Часто применяется при моделировании объектов

Левосторонняя система координат Часто применяется при работе с системами просмотра и виртуальными «камерами»

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

Точки и векторы P Q v x y Вектор – разность между двумя точками: v = Q – P Разность точки и точки есть вектор Точка Q получена путем перемещения точки P на вектор v Q = P + v Сумма точки и вектора есть точка Точка имеет положение в пространстве Вектор имеет размер и направление

Запись векторов n-мерный вектор задается посредством его n-кортежа – списка его компонентов или

Операции с векторами Над векторами можно проделывать две основные операции Сложение векторов c = a + b Умножение на скаляр c = sa Данные операции выполняются покомпонентно

Сложение векторов a b a+ba+b a b a+ba+b

Масштабирование векторов a -a-a 1,5a

Линейная комбинация векторов Линейной комбинацией m векторов v 1, v 2, … v m называется вектор вида w=a 1 v 1 + a 2 v 2 + … + a m v m a 1, a 2,…,a m – скаляры

Аффинная комбинация векторов (affine combination) Линейная комбинация векторов называется аффинной комбинацией, если сумма коэффициентов a 1, a 2,…,a m равна 1 Аффинные комбинации векторов появляются в различных контекстах, как и аффинные преобразования точек

Выпуклая комбинация векторов (convex combination) Выпуклая комбинация векторов – аффинная комбинация векторов, каждый коэффициент которой является неотрицательным Все a i должны находиться между 0 и 1. Почему?

Множество всех выпуклых комбинаций Для двух векторов v 1 и v 2 множество всех выпуклых комбинаций представляет собой множество всех векторов вида: v=(1-a)v 1 + av 2 a может изменяться от 0 до 1. (Почему?) v=v 1 + a(v 1 - v 2 )

Пример v1v1 v2v2 v a(v 1 - v 2 ) Выпуклой комбинацией векторов v 1 и v 2 является множество всех векторов v, удовлетворяющих условию: v=(1-a)v 1 + av 2

Модуль (длина, величина) вектора Модулем или длиной вектора w называется расстояние от его начала до конца Для n-мерного вектора w, представленного n-кортежем (w 1, w 2,…,w n ) длина вычисляется по теореме Пифагора:

Единичный вектор (орт), нормирование Единичный вектор – это вектор, имеющий единичную длину Нормирование – масштабирование ненулевого вектора a так, чтобы получить в результате единичный вектор â, с тем же направлением, что и вектор a

Скалярное произведение векторов (dot product) Скалярное произведение двух n-мерных векторов v=(v 1, v 2,…,v n ) и w=(w 1, w 2,…,w n ) обозначается v w и имеет величину:

Свойства скалярного произведения Симметрия (коммутативность) a b = b a Линейность (дистрибутивность) (a + c) b = a b + c b Однородность (ассоциативность) (sa) b = s (a b) |b| 2 = b b

Угол между двумя векторами b c φbφb φcφc θ

Косинус угла между двумя векторами равен скалярному произведению их орт

Знак скалярного произведения Связь между знаком косинуса и углом: cos(θ) > 0, если |θ| < 90° cos(θ) = 0, если |θ| = 90° cos(θ) 90° Угол между двумя векторами ненулевой длины составляет: Менее 90°, если b c > 0 Ровно 90°, если b c = 0 Более 90°, если b c < 0

Перпендикулярность (ортогональность) Два ненулевых вектора являются перпендикулярными (т.е. угол между ними равен 90°), если их скалярное произведение равно нулю

Двумерный «перп» вектор Пусть a = (a x, a y ), тогда a = (-a y, a x ) – вектор, перпендикулярный против часовой стрелки к вектору a Для обозначения таких векторов используется символ « » («perp», произносится «перп»)

Пример a a -a

Упражнения на дом Докажите следующие свойства оператора : Линейность: (a + b) = a + b (Aa) = Aa, для любого скаляра A Реверсирование: a = (a) = -a

Перп-скалярное произведение Перп-скалярное произведение – произведение перпа некоторого вектора на другой вектор a b Свойства (доказать, используя определение a ): a b = a x b y – a y b x a a = 0 |a | 2 = |a | 2 a b = -b a

Ортогональные проекции и расстояние от точки до прямой В графических приложениях часто возникают 3 геометрических задачи Проецирование вектора на данный вектор Разложение вектора на составляющие в заданных направлениях Определение расстояния между точкой и прямой Использование перп-вектора и перп- скалярного произведения упрощает решение данных задач

Пример A C v c L Даны 2 точки A и C а также вектор v На каком расстоянии находится точка C от прямой L, проходящей через точку A в направлении вектора v? Если мы опустим перпендикуляр из точки C на прямую L, то в каком месте он пересечет L? Как разложить вектор c = C – A на составляющие вдоль прямой L и в направлении, перпендикулярном к L? ?

Решение A C v c L v Строим вектор v Опустив перпендикуляр из точки C на прямую L мы говорим, что вектор c разложен на составляющую Kv вдоль v и составляющую Mv перпендикулярно к v, где K и M – некоторые константы Таким образом мы имеем: c = Kv + Mv Зная c и v можно определить K и M: c v = Kv v + Mv v Mv KvKv v v = 0

Отражение Свойства отражения Угол падения равен углу отражения Отраженный луч лежит в той же плоскости, что падающий луч и перпендикуляр к поверхности, восстановленный в точке падения

Отражение a r n L m ee -m r = e - me = a - m r = a – 2m m – проекция a на n

Векторное произведение двух векторов Векторное произведение (cross product, vector product) двух векторов – вектор Векторное произведение двух трехмерных векторов равно:

Свойства векторного произведения i j = k;j k = i;k i = j Антисимметрия a b = -b a Линейность a (b + c) = a b + a c Однородность (sa) b = s (a b)

Геометрический смысл векторного произведения Площадь = |a b| a b a b

Нахождение нормали к плоскости Любые 3 точки P 1, P 2, P 3 определяют единственную плоскость, если они не находятся на одной прямой Нормаль к плоскости, проходящей через 3 заданные точки можно решить с помощью векторного произведения Построим два вектора: a = P 2 – P 1 и b = P 3 – P 1 Их векторное произведение перпендикулярно данным векторам, а, следовательно оно нормально к любой прямой, лежащей в плоскости векторов a и b

Вектор vs Точка Вектор в пространстве задается при помощи упорядоченной тройки чисел v = (3, 1, -8) Точка в пространстве тоже задается при помощи тройки чисел: P = (3, 1, -8) Однако, точки и векторы – это не одно и то же Точка имеет местоположение в пространстве, но не имеет размера и направления Вектор не имеет местоположения, но обладает размером и направлением

Системы координат и координатные фреймы Система координат обычно задается в виде трех осей, исходящих из начала отсчета Однако, точка начала отсчета расположена где- нибудь в «мире» Направления осей лучше всего задавать векторами Местоположение начала координат должно быть явно задано точкой

Координатный фрейм Координатный фрейм состоит из заданной точки O, называемой началом отсчета и трех взаимно перпендикулярных единичных векторов a, b и c Строго говоря, эти векторы должны быть линейно независимыми, однако взаимно перпендикулярные векторы координатных осей упрощают многие задачи компьютерной графики

Координатный фрейм с a b P v O v = v 1 a + v 2 b + v 3 c P = О + p 1 a + p 2 b + p 3 c P – O = p 1 a + p 2 b + p 3 c Точка P задается не просто тройкой чисел (p 1, p 2, p 3 ), а тройкой вместе с началом отсчета

Однородное представление точки и вектора Полезно представлять точки и векторы с помощью одного и того же набора базовых объектов (a, b, c, O) Вектору v = v 1 a + v 2 b + v 3 c требуется четыре коэффициента (v 1, v 2, v 3, 0) Точке P = p 1 a + p 2 b + p 3 c требуется четыре коэффициента (p 1, p 2, p 3, 1) Четвертый компонент показывает, входит ли в в состав объекта начало отсчета O

Представление точек и векторов при помощи умножения матриц Данные уравнения являются примерами однородного представления векторов и точек Однородное представление позволяет сохранять различие между точками и векторами и предоставляет компактную запись при работе с афинными преобразованиями

Линейные комбинации векторов в однородных координатах Разность двух точек - вектор (x,y,z,1) – (u,v,w,1) = (x-u, y-v, z-w, 0) Сумма точки и вектора – точка (x,y,z,1) + (d,e,f,0) = (x+d, u+e, z+f, 1) Сумма двух векторов – вектор (d,e,f,0) + (m,n,r,0) = (d+m, e+n, f+r, 0) Имеет смысл масштабирование векторов 3(d,e,f,0) = (3d, 3e, 3f, 0) Имеет смысл создание любой линейной комбинации векторов Для векторов v=(v 1,v 2,v 3,0) и w=(w 1,w 2,w 3,0) и произвольных скаляров a и b имеем av+bw=(av 1 +bw 1, av 2 +bw 2, av 3 +bw 3, 0), что является вектором

Аффинные комбинации точек Рассмотрим формирование линейной комбинации двух точек P=(P 1,P 2,P 3,1) и R=(R 1,R 2,R 3,1) со скалярами f и g fP+gR=(fP 1 +gR 1, fP 2 +gR 2, fP 3 +gR 3, f+g) Результат является истинной точкой лишь в том случае, когда f+g =1 Если сумма коэффициентов линейной равна 1, такая комбинация является аффинной, т.о. единственная истинная комбинация точек – аффинная комбинация Любая аффинная комбинация точек является истинной точкой

Произвольная линейная комбинация точек Пусть дана линейная комбинация двух точек E=fP+gR, такая, что f+g0 Пусть начало отсчета смещено на вектор u, тогда точка P смещена на P+u, а точка R – на R+u Если E является истинной точкой, то она также должна быть смещена в новую точку E=E+u, однако мы имеем: E=fP + gR + (f+g)u Если f+g1, то EE + u Иными словами, неаффинная комбинация точек в различных системах координат дает различные точки

Точка плюс вектор – аффинная комбинация точек Рассмотрим формирование точки P как смещение точки A на вектор v, масштабированный скаляром t P = A + tv Пусть v=B-A, тогда: P = A + t(B-A) P = tB + (1-t)A А это – ни что иное, как аффинная комбинация точек

Линейная интерполяция двух точек Аффинная комбинация точек, выраженная уравнением P=A(1-t) + Bt выполняет линейную интерполяцию между точками A и B Иными словами, x-компонент P x (t) генерирует величину, которая составляет t-ю часть расстояния между точками A x и B x Аналогично для y и z- компонент

Пример функции lerp // linear interpolation between a and b float lerp(float a, float b, float t) { return a + (b – a) * t; } Задание для самостоятельной работы – самостоятельно разработать функцию для линейной интерполяции между точками на 2D плоскости и в 3D пространстве

Твининг (tweening) Используя линейную интерполяцию можно создать эффект т.н. tweeningа - плавной анимации превращения одной геометрической фигуры в другую При этом точки исходной фигуры равномерно интерполируются с течением времени в точки конечной фигуры

Пример Tweening-а геометрической фигуры

Пример Tweening-а двух изображений t 01

Пример преобразования двухмерной фигуры Объект до преобразования x y Объект после преобразования

Составление трехмерной сцены из примитивов Оригинальный блок

Просмотр сцены с различных точек наблюдения

Что осуществляют преобразования Пусть исходный объект задан последовательностью точек Pi: P1, P2, P3… Преобразование изменяет значения этих точек так, что на выходе получаются точки Q1, Q2, … Эти точки описывают преобразованный вариант того же самого объекта

Преобразование объекта и преобразование координат Преобразование можно рассматривать с двух сторон Преобразование объекта Координаты каждой точки меняются в соответствии с некоторыми законами, при неизменной системе координат Преобразование координат Старая система координат преобразовывается в новую и все точки объекта получают представление в новой системе координат

Преобразование точек Любое преобразование переводит каждую точку P в пространстве в новую точку Q согласно заданной формуле или алгоритму

Отображение точек в новые точки x y P Q T Точка P на плоскости отображена в точку Q при помощи отображения T Точка Q называется образом точки P при отображении T Преобразование объекта осуществляется посредством преобразования каждой из его точек. Для каждой точки используется та же самая функция T() Непрерывные преобразования осуществляют преобразование прямой линии в некоторую связную линию (не обязательно прямую)

Как это выглядит формально? В любом двухмерном координатном фрейме точки P и Q имеют следующее представление Преобразование воздействует на представление координаты точки P и дает представление точки Q в соответствии с некоторой функцией T(): Или более кратко:

Аффинные преобразования Аффинные преобразования наиболее часто используются в компьютерной графике Упрощают масштабирование, поворот, перенос изображений Компактно представляются в виде матриц

При аффинных преобразованиях координаты точки Q являются линейными комбинациями соответствующих координат точки P m11, m12 – некоторые константы

Матричное представление аффинных преобразований Для любого аффинного преобразования третья строка матрицы всегда равняется (0, 0, 1) Аффинные преобразования могут применяться не только к точкам, но и к векторам

Геометрические эффекты элементарных аффинных преобразований Аффинные преобразования осуществляют комбинации из четырех элементарных преобразований Перемещение Масштабирование Поворот Сдвиг

Перемещение Преобразование перемещения осуществляет перенос точки вдоль заданного вектора Задача: что получится в результате применения преобразования переноса не к точке, а к вектору?

Перемещение

Масштабирование Масштабирование изменяет размер объекта и использует два масштабных множителя Sx и Sy для координат x и y соответственно

Масштабирование

Поворот Одна из основных операций в компьютерной графике – поворот изображения относительно заданной точки на некоторый угол Преобразование поворота относительно начала координат имеет следующий вид Попробуйте доказать это самостоятельно

Поворот

Сдвиг При сдвиг вдоль оси x координата y каждой точки остается неизменной, а координата x перемещается на величину, линейно возрастающую с ростом y При сдвиге вдоль оси y – ситуация противоположная Сдвиг вдоль оси x Сдвиг вдоль оси y

Сдвиг TT

Инвертирование аффинного преобразования Матрица M размерностью n на n называется невырожденной, если ее определитель |M| отличен от нуля В этом случае матрица M имеет обратную матрицу M -1, обладающую свойством: MM -1 = M -1 M = I, где I – единичная матрица размерностью n на n Матрица, обратная к произведению квадратных матриц имеет вид: (AB) -1 = B -1 A -1

Определитель матрицы С каждой квадратной матрицей связано некоторое число, называемое ее определителем Обозначается |M| или det M M ij – алгебраическое дополнение

Обратная матрица Матрица размерностью n на n называется невырожденной, если ее определитель отличен от нуля. В этом случае она имеет обратную матрицу M -1, обладающую свойством: MM -1 = M -1 M = I Кроме того, (AB) -1 = B -1 A -1 Пусть A – матрица обратная к матрице M. В этом случае ее ij-элемент равен:

Сложные преобразования Часто требуется осуществить сложное преобразование, состоящее из нескольких элементарных Поворот относительно произвольной точки (оси в 3D) Отражение относительно произвольной прямой (плоскости в 3D) Масштабирование и сдвиг относительно произвольных «опорных точек»

Композиция аффинных преобразований Процесс последовательного применения нескольких преобразований с целью формирования единого суммарного преобразования называется композицией (компоновкой, конкатенацией) этих преобразований

Пример P Q W T 1 () T () T 2 () ? Пусть преобразования T1 и T2 заданы матрицами M 1 и M 2 Тогда: Q = M 1 P W = M 2 Q = M 2 (M 1 P) В силу ассоциативности умножения матриц мы имеем: W = M 2 (M 1 P)=(M 2 M 1 )P = MP

Композиция аффинных преобразований При использовании однородных координат аффинные преобразования компонуются при помощи умножения матриц Матрицы располагаются в порядке, обратном по отношению к порядку применения преобразований: M = M 2 M 1 Любое количество аффинных преобразований может быть скомпоновано простым умножением соответствующих матриц

Полезные свойства аффинных преобразований Сохранение аффинных комбинаций точек Сохранение прямых линий и плоскостей Сохранение параллельности прямых и плоскостей Столбцы матрицы показывают координатный фрейм Сохранение относительных пропорций Влияние на площади и объемы фигур:

К трехмерным аффинным преобразованиям применимы те же идеи, что и к двухмерным В 3D пространстве точка P имеет координаты: P = O + P x i + P y j + P z k

Пусть T() – аффинное преобразование, преобразующее точку P в точку Q Данное преобразование можно представить в виде матрицы M размерностью 4x4:

Перемещение Матрица перемещения осуществляет перенос точки на вектор m = (m 14, m 24, m 34 )

Масштабирование Матрица масштабирования относительно начала отсчета имеет следующий вид:

Сдвиг Матрица единичного сдвига является единичной матрицей, в которой один из нулей заменен некоторой величиной f: Q = (P x, fP y, P z ) cмещение вдоль оси y

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

Элементарные повороты вокруг координатных осей z x y P Q P Q P Q

Матрицы элементарных поворотов

Комбинирование поворотов Порядок, в котором осуществляются повороты вокруг различных осей имеет значение Трехмерные матрицы поворота некоммутативны Поворот в трех измерениях обычно строят как композицию трех элементарных поворотов Углы β 1, β 2, β 3 в данном контексте называют углами Эйлера

Вращение вокруг произвольной оси При использовании углов Эйлера мы выполняем последовательность x-, y- и z- вращений Очень часто возникает необходимость поворота вокруг произвольной оси Теорема Эйлера: Любой поворот или последовательность поворотов вокруг произвольной точки эквивалентен повороту вокруг некоторой оси, проходящей через эту точку

Матрица поворота вокруг произвольной оси

Определение оси и угла поворота Иногда бывает полезно извлечь значения угла поворота и координаты оси вращения из матрицы. Пусть матрица вращения задана следующим образом: Угол вращения: Ось вращения

Аффинные преобразования можно использовать для создания новой системы координат, в которой происходит отображение исходных точек Применяется, например, при моделировании сцен и создании виртуальных «камер»

Преобразование координатного фрейма a b i j c d i j O O P Пусть имеется преобразование T(.), выраженное матрицей M, которое переводит координатный фрейм с началом отсчета в точке O и осями i и j в координатный фрейм с началом отсчета O и осями i и j

Последовательные преобразования координатного фрейма Пусть координатная система 1 переходит в систему 2 при помощи преобразования T 1 (.), а система 2 – в систему 3 при помощи преобразования T 2 (.) Заметим, что система 3 трансформируется относительно системы 2 Если координаты точки P в системе 3 равны (e,f,1) T, то чему будут равны координаты (a,b,1) T в системе 1?

Двукратное преобразование координатного фрейма Важным обстоятельством является тот факт, что сперва применяется преобразование M 2, а затем M 1, т.е. в обратном порядке по сравнению с применением преобразований к точкам Данный случай можно обобщить на произвольное количество преобразований координатного фрейма: M = M 1 x M 2 x … x M n

Составляющие элементы трехмерной сцены Камеры просмотра Позволяют задать положение и ориентацию «наблюдателя» в виртуальном пространстве и получать изображение объектов сцены с заданных точек Объекты сцены Предметы виртуального пространства, оптические среды, изображение которых может быть получено при помощью камер

Процесс визуализации трехмерной сцены z y x Ближняя плоскость Дальняя плоскость Отображаемый объем Плоскость просмотра Глаз

Процесс визуализации трехмерной сцены (продолжение) P P Проецирование точек на плоскость просмотра Преобразование в видовой порт (порт просмотра, View Port) После того, как координаты ключевых точек объекта преобразованы в порт просмотра осуществляется этап растеризации объекта

Позиционирование и ориентирование камеры Положение и ориентация камеры на сцене могут быть любыми. Позиционирование: Перемещаем камеру (глаз наблюдателя) в некоторую точку пространства Ориентация: Повернем камеру так, чтобы нацелить в желаемом направлении

Позиционирование и ориентирование камеры Перенос камеры в заданную точку пространства Ориентирование камеры в заданном направлении

Система координат, связанная с камерой Система координат камеры имеет начало, расположенное в точке глаза и три координатные оси: u, v, n n u v z x y Глаз Ось n направлена вдоль оси камеры по направлению к наблюдателю Ось u совпадает с направлением «вправо» Ось v – «вверх»

Свободное ориентирование камеры в пространстве Задание ориентации камеры в авиационных терминах Курс (heading) – управление направлением «взгляда» камеры (ось n) Тангаж (pitch) – управление креном камеры (вращение вдоль курса камеры) Рысканье (yaw) – отклонение от курса (вращение вокруг вертикальной оси) v u n u n v

Построение векторов u, v и n Eye Look up Пусть нам известно: Положение глаз наблюдателя (Eye) Положение точки наблюдения (Look) Направление вектора «вверх» (up) Тогда: n=Eye – Look u=up n v=n u Затем производим нормализацию векторов u, v, и n n u v

Построение матрицы камеры z x y u vnГлаз V Матрица камеры V осуществляет преобразование точек из мировых координат в координаты камеры (преобразовывает систему координат камеры в исходную позицию камеры) Вектор u преобразовывается в вектор x Вектор v - в вектор y Вектор n - в вектор z

Построение матрицы камеры Матрица камеры имеет следующий вид:

Перспективная проекция точки z x y x y x* y* N P PzPz PxPx PyPy P PyPy По признаку подобия треугольников: Следовательно: P x* y*

Проецирование параллельных прямых Перспективная проекция прямой линии является прямой линией Если две прямые параллельны друг другу, а также плоскости просмотра, они проецируются в параллельные прямые Параллельные прямые, не параллельные плоскости просмотра сходятся в некоторой точке схода

Точка схода параллельных прямых d d

Прямые, проходящие за «глазом» z y При попытке построить проекцию прямой, проходящей «за глазом» происходит «оборачивание проекции вокруг бесконечности» Плоскость просмотра Поэтому перед проецированием необходимо произвести отсечение части прямой, находящейся ближе к глазу, нежели ближняя плоскость отсечения

Особенности проецирования При проецировании отбрасывается информация о глубине – расстоянии до глаза Различные точки могут проецироваться в в одну и ту же точку Некоторые алгоритмы удаления невидимых поверхностей требуют знания глубины точек после проецирования

z x y P (x*, y*) P1P1 P2P2 Расстояние от точки P до глаза равно: Извлечение квадратных корней – довольно дорогостоящая операция, поэтому для оценки расстояния от точки P до глаза вычисляют псевдоглубину – оценка глубины точки P

Псевдоглубина Если две точки проецируются в одну и ту же точку, то более дальней из них соответствует та, у которой величина -P z больше В качестве значения псевдоглубины может подойти значение –P z Однако лучше выразить значение псевдоглубины z* в тех же терминах, что и координаты x* и y* - через знаменатель -P z

Проецирование точки с сохранением информации о ее псевдоглубине a и b – некоторые константы Удачным решением было бы выбрать a и b таким образом, чтобы значение псевдоглубины изменялось в пределах -1 до +1: z* = -1 при P z = -N z* = +1 при P z = -F N – расстояние до ближней плоскости проецирования F – расстояние до дальней плоскости проецирования В этом случае:

Изменение псевдоглубины

Использование однородных координат Точка P = (P x, P y, P z ) в однородных координатах выражается в виде: P = (P x, P y, P z, 1) Вектор v=(v x, v y, v z ) в однородных выражается в виже: v = (v x, v y, v z, 0) Такой подход позволил представлять векторы и точки внутри координатных фреймов и выражать аффинные преобразования с помощью матриц

Дальнейшее развитие Точка P имеет целое семейство однородных представлений вида: (wP x, wP y, wP z, w) для любого ненулевого w Преобразование в однородные координаты: Добавить 1 (при необходимости, умножить все компоненты на любую ненулевую величину) Преобразование точки из однородных координат в обычные: Разделить все компоненты на последний, а затем отбросить его

Матрица аффинного преобразования Матрица аффинного преобразования имеет четвертой строкой (0, 0, 0, 1) При умножении такой матрицы на точку в однородных координатах, компонент w останется неизменным:

Эксперимент Что, если четвертая строка матрицы будет отличной от (0, 0, 0, 1)? Например, такой: При умножении такой матрицы на точку в однородных координатах с любым значением w мы получим: Результатом данного умножения будет некоторая точка. Какая именно?

Для выяснения фактических координат данной точки разделим компоненты данной точки на четвертый и отбросим его: А это есть ни что иное, как координаты точки после перспективного проецирования! Данный этап называется перспективным делением

Матрица перспективного преобразования Матрица, четвертая строка которой не равна (0, 0, 0, 1), производит перспективное преобразование Данное преобразование не является аффинным Это именно преобразование, а не проекция. Результатом данного преобразования является точка той же размерности, что и аргумент

Получение перспективной проекции Перспективное преобразование переносит трехмерную точку P в другую трехмерную точку в соответствии с отображением: Для получения проекции точки мы можем просто проигнорировать третий компонент, заменив его на нуль:

Что такое перспективная проекция? Перспективная проекция = Перспективное преобразование + Ортографическое преобразование

Перспективное преобразование превращает трехмерную точку P в другую трехмерную точку Можно рассматривать данное преобразование как деформирование трехмерного пространства, обладающее следующим свойствами: Сохранение прямолинейности (прямые линии преобразуются в прямые линии) Сохранение плоскостности (плоскости – в плоскости) Сохранение «промежуточности» (точка внутри объекта преобразуется в другую точку внутри преобразованного объекта)

Деформирование отображаемого объема перспективным преобразованием z y z y Объект до преобразования Объект после преобразования Перспективное преобразование деформирует объекты так, что при их просмотре в ортографической проекции они выглядят такими же, как выглядели бы исходные объекты в перспективной проекции

Преобразование в канонический отображаемый объем z y x 1 1 z x y Перспективное преобразование (left, top, -N) (right, bottom, -N) Коэффициенты left, top, right, bottom можно вычислить, зная угол обзора камеры и соотношение ее сторон:

После преобразования отображаемого объема в канонический возникают искажения соотношение сторон отображаемого объема, как правило не равно 1:1 Отображение в порт просмотра решает эту задачу Порт просмотра – прямоугольная область экрана, в которую происходит отображение двумерной проекции трехмерной сцены Имеет заданные координаты и размер

Преобразование в канонический объем (возникают искажения из-за «втискивания» сцены внутрь канонического куба) Преобразование в порт просмотра (исправление форматных искажений объекта)

Преобразование в порт просмотра Преобразование в порт просмотра отображает точку внутри канонического объема в точку на устройстве отображения (напр. экране) Данное преобразование является аффинным и может быть представлено в виде матрицы типа: (left, top) – координаты верхнего левого угла порта просмотра в экранных координатах (width, height) – размеры порта просмотра в экранных координатах (sx, sy) – координаты точки в экране dz – мера расстояния до точки (от 0 до 1)

Пример

Вопросы?