Основы синтеза фотореалистических изображений: трассировка лучей Боголепов Д.К. Кафедра МОЭВМ ВМК ННГУ denisbogol@sandy.ru Основные модели и алгоритмы.

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



Advertisements
Похожие презентации
Лекция 13 Метод трассировки лучей Астана Трассировка лучей через сферическую каплю воды Луч 7 -- луч Декарта [1637]
Advertisements

ГЛАВА 3 ЭЛЕМЕНТЫ АНАЛИТИЧЕСКОЙ ГЕОМЕТРИИ. §1. Прямая на плоскости. Различные виды уравнений прямой на плоскости. Пусть имеется прямоугольная система координат.
Основы синтеза фотореалистических изображений: трассировка лучей Боголепов Д.К. Кафедра МОЭВМ ВМК ННГУ Введение в методы визуализации.
Компьютерная геометрия и графика. Лекция 6. План занятия: Виды проектирования. Обобщенные координаты пространства. Матричные преобразования.
Излучательность. Трассировка лучей. Лекция 13. Алексей Игнатенко.
Плоскость и прямая в пространстве Лекции 10, 11. Определение. Уравнением поверхности в пространстве называется такое уравнение между переменными которому.
Плоскость и прямая в пространстве Лекция 10. Определение. Уравнением поверхности в пространстве называется такое уравнение между переменными которому.
Общее уравнение прямой В декартовых координатах каждая прямая определяется уравнением первой степени и, обратно, каждое уравнение первой степени определяет.
Поверхностные модели построенные по кинематическому принципу Поверхность вращения Поверхность соединения – линейчатая поверхность Поверхность перемещения.
Использование метода координат в пространстве для решения заданий С2 на ЕГЭ
Аналитическая геометрия Аналитическая геометрия – раздел геометрии, в котором простейшие линии и поверхности (прямые, плоскости, кривые и поверхности второго.
Достоинства и недостатки рендеринга, используемого в OpenGL OpenGL изначально создавался для интерактивной визуализации трехмерных сцен Обеспечивает достаточно.
Излучательность. Трассировка лучей. Фотонные карты. Андрей Татаринов Глобальные модели освещения.
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Параметрическое представление плоских и пространственных кривых При параметрическом задании кривая представляется векторной функцией r 1, r 2, r 3 - радиус.
Пусть прямая задана уравнением: И пусть задана плоскость Рассмотрим возможные случаи ориентации прямой и плоскости:
ЕСТЕСТВЕННЫЙ И ПОЛЯРИЗОВАННЫЙ СВЕТ. Как известно из анализа уравнений Максвелла, волновой вектор k, вектора E и H взаимно ортогональны и составляют правую.
Элементы векторной алгебры.. Определение Совокупность всех направленных отрезков, для которых введены операции: - сравнения - сложения - умножения на.
Интерференция в тонких пленках. Плоскопараллельная пластинка. Пусть на плоскопараллельную пластину падает параллельный пучок света. Пластина отбросит.
Урок 2 Прямая на плоскости.. Взаимное расположение прямых на плоскости Прямые на плоскости могут совпадать, пересекаться или быть параллельными. 1. Пусть.
Транксрипт:

Основы синтеза фотореалистических изображений: трассировка лучей Боголепов Д.К. Кафедра МОЭВМ ВМК ННГУ Основные модели и алгоритмы трассировки лучей

Часть 3 Модель наблюдателя

Фактически камера представляет собой систему координат: для нее задано положение, а также направления взгляда, вверх и вправо Направления взгляда, вверх и вправо образуют ортонормированный базис Модель камеры… Нижний НовгородIntel Winter School – View Up RightPosition

С камерой связана усеченная пирамида видимости: вектор взгляда задает ее направление и основания, а векторы вправо и вверх – боковые стороны Для пирамиды видимости задается угол раствора, a также ближнее и дальнее расстояния отсечения Модель камеры… Нижний НовгородIntel Winter School – View Up RightPosition Near Far FieldOfView Width Height

Задавать ориентацию камеры при помощи трех ортонормированных векторов на практике не очень удобно. Гораздо удобнее использовать в этих целях углы Эйлера Модель камеры Нижний НовгородIntel Winter School – X Y Z Pitch Yaw Roll

P(x s, y s ) = view + [ y s up + x s right aspect ] tg(α / 2), x s, y s – экранные координаты [-1, 1], α – угол раствора Генерация первичного луча… Нижний НовгородIntel Winter School – View Up RightPosition α xsxs ysys 2 tg(α / 2) 2 aspect tg(α / 2) P

R(x s, y s ) = position + normalize(P(x s, y s ) - position) t, x s, y s – экранные координаты [-1, 1], t – параметр 0 Генерация первичного луча Нижний НовгородIntel Winter School – View Up RightPosition α xsxs ysys P R(x s, y s )

Часть 4 Точки соударения и их атрибуты

Атрибуты точек пересечения удобно вычислять в локальном пространстве объекта С объектом связано преобразование T(p) = R S p + P, придающее ему желаемые размер (матрица масштабирования S ), ориентацию (матрица поворота R ) и положение (вектор параллельного переноса P ) на сцене Что происходит с уравнениями и результатами, полученными в локальном пространстве объекта? Преобразования объектов… Нижний НовгородIntel Winter School – 20099

Преобразование Т отображает базовую сферу W в эллипсоид W. Когда луч o + d t пересечется с W ? Допустим, что может быть найдена неявная форма G ( p ) = 0 для преобразованного объекта W. Тогда требуется решить уравнение G(o + d t) = 0 Преобразования объектов… Нижний НовгородIntel Winter School – o d W F(p) = 0 T o d W G(p) = 0

Если неявная функция исходного базового объекта равна F(p), то для преобразованного объекта она приобретает вид F(T -1 (p)), где T -1 – обратное преобразование. Значит, нужно решить уравнение: F(T -1 (o + d t)) = 0 Это уравнение означает решение для времени, при котором обратно преобразованный луч (inverse transformed ray) T -1 (o + d t) соударяется с исходным базовым объектом! Исследуем пересечение обратно преобразованного луча с базовым объектом Преобразования объектов… Нижний НовгородIntel Winter School –

Для пересечения луча o + d t с преобразованным объектом: –Обратно преобразуем луч: T -1 (o + d t) = T -1 (o) + T -1 (d) t = [S -1 ·R -1 ·(o - P)] + [S -1 ·R -1 ·d] · t –Находим время соударения t этого луча с базовым объектом; –Используем это же время t в луче o + d t для нахождения фактической точки соударения Требуется разработать код, относящийся только к пересечению с базовым объектом. Можно применять аффинные преобразования без усложнения кода подпрограмм, вычисляющих пересечение! Преобразования объектов… Нижний НовгородIntel Winter School –

Знание нормалей к объектам необходимо для расчета освещенности, лучей отражения и преломления и даже текстурных координат Как преобразование T(p) = R S p + P влияет на изменение локальных нормалей? На первый взгляд, нормаль в локальном пространстве необходимо умножить на матрицу R S. Это неверно: для нормалей нужно использовать обратную транспонированную матрицу [(R S) -1 ] T : [(R S) -1 ] T = S -1 R Преобразования объектов… Нижний НовгородIntel Winter School –

Рассмотрим простой пример: прямоугольный равнобедренный треугольник растягивается вдвое вдоль оси x Проблема вызвана операцией масштабирования с разными коэффициентами по осям (NUS – non- uniform scale)! Преобразования объектов Нижний НовгородIntel Winter School – x local y local P local n local = (1, 1) x world y world O world S n local = (2, 1) S -1 n local = (1/2, 1) T = S S = S -1 = 1/

В какой точке луч o + d t пересекается с плоскостью: F(x, у, z)=0 ~ z = 0 ? Пересечение с плоскостью… Нижний НовгородIntel Winter School – x local y local z local P local x world y world z world

Луч o + d t пересекает базовую плоскость, когда o z + d z t = 0 Решение дается формулой: t = -o z / d z Если d z = 0, то луч движется параллельно плоскости и пересечения нет (за исключением случая, когда o z также равно нулю). В остальных случаях луч пересекается с плоскостью в одной точке Р = o – d (o z / d z ) Пересечение с плоскостью Нижний НовгородIntel Winter School –

В какой точке луч o + d t пересекается со сферой: F(x, у, z) = x 2 + y 2 + z 2 - R 2 =0 ? Пересечение со сферой… Нижний НовгородIntel Winter School – x local y local z local P local x world y world z world

Подставляя o + d t в уравнение F(P) = 0, получаем: |o + d t| 2 - R 2 = 0 |d| 2 t (o, d) t + (|o| 2 - R 2 ) = 0 Решение дается формулой: t 1,2 = [-B ± sqrt(B 2 - A C)] / A Если D=B 2 - A C 0 существуют две точки соударения Пересечение со сферой Нижний НовгородIntel Winter School – ABC

Поверхность куба – совокупность точек, отвечающих трем группам выражений: |x| = 1, |y| 1, |z| 1; |x| 1, |y| = 1, |z| 1; |x| 1, |y| 1, |z| = 1 Пересечение с кубом… Нижний НовгородIntel Winter School – x local y local z local P local x world y world z world

В какой точке луч o + d t пересекается с кубом, заданным таким образом? Самый простой и очевидный подход: тестирование луча на соударение с каждой гранью куба и выбор ближайшего (если соударение имеет место, то луч пересекается с двумя различными гранями куба) Каждая грань – это часть плоскости, поиск пересечения с которой уже рассматривался выше. Необходимо добавить одно из трех условий: |y| 1, |z| 1; |x| 1, |z| 1; |x| 1, |y| 1 Пересечение с кубом Нижний НовгородIntel Winter School –

Неявная форма уравнения координатной плоскости XOY имеет вид: F(x, у, z) = z = 0 Очевидно, что ее нормаль в локальном пространстве есть вектор k = (0, 0, 1) Для вычисления нормали в мировом пространстве необходимо воспользоваться описанным выше преобразованием: n world = norm(S -1 R k) = norm(S -1 R (0, 0, 1)) После преобразования необходима нормировка! Нормаль к плоскости Нижний НовгородIntel Winter School –

Неявная форма уравнения сферы имеет вид: F(x, у, z) = x 2 + y 2 + z 2 - R 2 = 0 Очевидно, что координаты всякой точки на данной сфере являются в то же самое время и координатами нормали в данной точке Для перехода в мировое пространство необходимо воспользоваться описанным выше преобразованием: n world (p) = norm(S -1 R p), где p – точка на сфере После преобразования необходима нормировка! Нормаль к сфере Нижний НовгородIntel Winter School –

Куб можно рассматривать как совокупность шести граней – прямоугольников Для отыскания нормали к кубу необходимо определить, какой грани принадлежит точка: if p.x = size.x then n local = i else if p.y = size.y then n local = j else if p.z = size.z then n local = k Далее выполняется переход в мировое пространство и нормировка: n world (p) = norm(S -1 R n local ) Нормаль к кубу Нижний НовгородIntel Winter School –

Часть 5 Локальные модели освещенности

В простейшей модели диффузного освещения свет, падающий на точку P, считается равномерно рассеивающимся по всем направлениям полупространства, содержащего источник света Диффузная модель освещения… Нижний НовгородIntel Winter School – l P источник света l

Освещенность точки зависит только от ориентации участка поверхности (определяется вектором n ): C out = C · [k a · L a + k d · L d · max(0, (n · l))] Диффузная модель освещения… Нижний НовгородIntel Winter School – источник света l P n

Реализация в среде RenderMonkey Диффузная модель освещения Нижний НовгородIntel Winter School –

Модель освещения Блинна… Нижний НовгородIntel Winter School – Расширение диффузной модели освещения для включения в нее бликов (ярких пятен), введение h В модели Блинна освещенность задается формулой: C out = I diffuse + L s · k s · max{0, (n · h)} p, h = (l + v) / ||l + v|| l P n v h r

Модель освещения Блинна… Нижний НовгородIntel Winter School – Показатель степени p – это коэффициент резкости бликов (shininess coefficient) При увеличении показателя p блик концентрируется в зоне, близкой к углу идеального отражения p = 16p = 32p = 64 p = 128p = 256p = 512 Интенсивность отраженного света в зависимости от показателя p

Реализация в среде RenderMonkey Модель освещения Блинна Нижний НовгородIntel Winter School –

Модель освещения Фонга… Нижний НовгородIntel Winter School – Расширение диффузной модели освещения для включения в нее бликов (похожа на модель Блинна) В модели Фонга освещенность задается формулой: C out = I diffuse + L s · k s · max{0, (v · r)} p, r = reflect(l, n) l P n v r

Реализация в среде RenderMonkey Модель освещения Фонга Нижний НовгородIntel Winter School –

Модель освещения Гуч… Нижний НовгородIntel Winter School – Модель Эми Гуч – одна из простейших и вместе с тем дает красивые визуальные эффекты Похожа на модель диффузного освещения, но использует величину ( n · l ) для перехода от одного цвета (теплого) к другому (холодному) Когда ( n · l ) < 0 возникает ощущение, что свет проходит сквозь объект и приобретает другой цвет Формула освещенности точки по модели Гуч: C out = mix(C cool, C warm, [(n · l) + 1] / 2) + I specular

Реализация в среде RenderMonkey Модель освещения Гуч Нижний НовгородIntel Winter School –

Эффект мультипликации… Нижний НовгородIntel Winter School – Похожа на модель диффузного освещения, но использует величину ( n · l ) для выбора одного из трех цветов – цвет тени, собственный цвет объекта и цвет блика При таком способе освещения возникает ощущение, что объекты нарисованы карандашом или кистью Формула освещенности точки имеет вид: C out = C shadow, |(n, l)| < ShadowEdge C diffuse, иначе C specular, |(n, l)| > SpecularEdge

Реализация в среде RenderMonkey Эффект мультипликации Нижний НовгородIntel Winter School –

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Шероховатая поверхность в модели освещения Кука- Торренса: совокупность блестящих микрограней, ориентированных различным образом Каждая микрогрань – совершенное маленькое зеркальце. Только те из них, которые ориентированы правильно, вносят свой вклад в отражаемый свет v P n l φ

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Модель освещения Кука-Торренса предназначена для уточнения зеркальной (бликовой) составляющей, представленной тремя основными компонентами: D · G · FD · G · F (n · v) I specular = l P n v h

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Микрогрань вносит вклад, если она направлена вдоль вектора h = (v + l) / ||v + l|| Для этого угол между микрогранью и нормалью к поверхности должен быть равен δ = [θ – φ] / 2 Предложены распределения D(δ), задающие долю микрограней, составляющих угол δ с нормалью l φ P n v θ h δ

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Кук и Торренс использовали распределение Бекмана: D(δ) – среднеквадратический наклон микрограней. Достигает максимума при δ = 0 (идеальное отражение) и быстро уменьшается при возрастании δ Параметр m – степень шероховатости, m [0.2, 0.6] e -[tg(δ) / m] 2 4 · m 2 · cos 4 (δ) D(δ) = l φ P n r

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Выражение D(δ) можно преобразовать в векторную форму, избавившись от тригонометрических функций: Данное выражение удобнее использовать в программном коде (и фрагментных шейдерах) Возможно сохранение значений в одну текстуру! e [(n · h) 2 - 1] / [m 2 · (n · h) 2 ] 4 · m 2 · (n · h) 4 D(δ) = cos(δ) = (n · h) sin 2 (δ) cos 2 (δ) tg 2 (δ) =, sin 2 (δ) = 1 - cos 2 (δ),

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Торренс и Спэрроу учитывали также эффекты затенения и экранирования, что привело к появлению геометрического масштабного коэффициента G Весь падающий свет уходит с грани G = 1 Часть света экранирует соседняя грань G < 1 Освещена часть грани, остальная часть затенена G < 1

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Блинн выразил геометрический множитель G через стандартные скалярные произведения. В качестве множителя берется минимум из трех значений Величины G m и G s определяют соответственно часть неэкранированного и незатененного света G = min(1, G m, G s ) G m = 2 · (n · h) · (n · l) / (v · h) G s = 2 · (n · h) · (n · v) / (v · h) l φ P n v θ h δ

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Блестящие микрограни не являются идеальными зеркалами, а отражают только часть падающего света (оставшаяся часть передается внутрь поверхности) Доля отраженного света определяется коэффициентом Френеля F(φ,η), где φ – угол падения, а η – показатель преломления материала F(φ, η) = 1 2 (g – c) 2 (g + c) 2 c · (g + c) – 1 c · (g – c) c = cos(φ) = (n · l) и g 2 = η 2 + c 2 – 1

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Коэффициент Френеля F(φ, η) зависит от материала при нормальном падении ( φ = 0 ) и возрастает до 1 при касательном угле ( φ = π / 2 ) φ = π / 2φ = 0 F(φ, η) η 10 η 2

Модель освещения Кука-Торренса… Нижний НовгородIntel Winter School – Для непосредственного использования точная формула слишком сложна, поэтому обычно используются различные ее приближения Хорошие результаты дает аппроксимация Шлика (Christophe Schlick): Коэффициент F(0) при нормальном падении обычно неизвестен и служит предметом экспериментов F(φ) = F(0) + [1 – (v · h)] 5 · [1 – F(0)] F(0) = (η – 1) 2 (η + 1) 2

Реализация в среде RenderMonkey Модель освещения Кука-Торренса Нижний НовгородIntel Winter School –

Эффект микрорельефа… Нижний НовгородIntel Winter School – До сих пор нормаль в каждой точке рассчитываласьправильно получается гладкое освещение Наиболее простой и эффективный способ добавить микрорельеф – использование карт нормалей Карта нормалей (bump map) – текстура, содержащая закодированные тройками (R, G, B) единичные нормали к поверхности объектов. Формулы перехода: R = 0.5 · (n x + 1)n x = 2 · R – 1 G = 0.5 · (n y + 1) n y = 2 · G – 1 B = 0.5 · (n z + 1)n z = 2 · B – 1

Эффект микрорельефа… Нижний НовгородIntel Winter School – Наложив такую карту на объект, для каждой точки получаем единичный вектор – нормаль к поверхности в данной точке:

Эффект микрорельефа… Нижний НовгородIntel Winter School – Карта нормалей задает ориентацию нормалей относительно данной грани: неискаженная нормаль равна (0, 0, 1) Для расчета освещенности фрагмента необходимо переходить в касательное пространство (tangent space)

Эффект микрорельефа… Нижний НовгородIntel Winter School – В качестве базиса выбираются три вектора: –Вектор нормали n – ортогонален грани в данной точке; –Вектор бинормали b – лежит в плоскости грани и t ; –Касательный вектор t – лежит в плоскости грани Координаты вектора p в касательном пространстве вычисляются по формулам: ( p · t ), ( p · b ), ( p · n ) n t b

Эффект микрорельефа… Нижний НовгородIntel Winter School – В касательном пространстве координаты вектора нормали всегда равны (0, 0, 1) можно свободно использовать карты нормалей Все векторы для расчета освещения необходимо перевести в касательное пространство! Для модели Фонга можно преобразовывать векторы v и l Перед пересчетом координат все векторы должны быть заданы в одном пространстве! Например, все векторы – v, l, n, t, b – можно сначала перевести в мировое пространство или пространство обзора

Реализация в среде RenderMonkey Эффект микрорельефа Нижний НовгородIntel Winter School –