(трассировка лучей)
Трассировка лучей
Прямая трассировка (Direct Ray Tracing)
Обратная трассировка (Reverse Ray Tracing)
Обратная трассировка (Reverse Ray Tracing)
Обратная трассировка (минимальный код на визитке, Paul Heckbert )
Задание наблюдателя
Пересечение луча с объектом
Пересечение луча r(t) со сферой
Пересечение луча r(t) с плоскостью
Использование экстентов
Достоинства и недостатки обратной трассировки лучей
Пример расчета в лесу с водой (особенности)
Пример расчета в лесу с водой (стандартная растеризация)
Пример расчета в лесу с водой (трассировка лучей)
Пример сглаживания SSAA
Пример расчета отражения
Пример расчета отражения (Луиджи из м/ф «Тачки»)
Трассировка первичных лучей (ray casting vs ray tracing)
Трассировка путей (path tracing)
Трассировка путей (BDPT и MLT)
Излучательность (radiosity )
Окружающие помехи (ambient occlusion)
Фотонные карты (Photon Mapping)
Примеры в режиме реального времени (от NVidia)
Примеры в режиме реального времени (от Intel)
Примеры в режиме реального времени (AntiPlanet2 - мир сфер)

Интерактивная компьютерная графика. Трассировка лучей

1. (трассировка лучей)

Часть 6-3
(трассировка лучей)

2. Трассировка лучей

Трассировка лучей
(Ray Tracing)
- пускаются лучи
- ищутся пересечения с объектами
- рассчитывается освещенность
Прямая
(Direct Ray Tracing)
Обратная
(Reverse Ray Tracing)
лучи пускаются из источника света
лучи пускаются от наблюдателя
2 (27)
6.2.1 Трассировка лучей

3. Прямая трассировка (Direct Ray Tracing)

(-) много лишних лучей
3 (27)
6.2.2 Прямая трассировка лучей

4. Обратная трассировка (Reverse Ray Tracing)

(+) просчет только нужных лучей
4 (27)
6.2.3 Обратная трассировка лучей [1/3]

5. Обратная трассировка (Reverse Ray Tracing)

Через каждый пиксель пускаем луч
Находим ближайшую точку пересечения
Рассчитываем нормаль в этой точке
Призма
Рассчитываем освещенность
(например, по Фонгу)
Учитываем в цвете и материал объекта
Строим лучи к
зеркальным/преломляющим объектам
и исправляем освещенность
Зеркало
5 (27)
6.2.3 Обратная трассировка лучей [2/3]

6. Обратная трассировка (минимальный код на визитке, Paul Heckbert )

Обратная трассировка
(минимальный код на визитке, Paul Heckbert )
6 (27)
6.2.3 Обратная трассировка лучей [3/3]

7. Задание наблюдателя

Характеристики наблюдателя:
- положение: Eye
- система координат: (u,v,w)
- угол зрения: q
q
w
Характеристики экрана:
- разрешение: nc˟ nr
- форматное соотношение сторон: Aspect
- расстояние до экрана: N
u
N
Параметрическое уравнение луча:
r (t ) Eye t Dirrc
Dirrc N w uc u vr v
t<0: объект за наблюдателем
0<t<1 – объект перед ближней
плоскостью отсечения
7 (27)
6.2.4 Алгоритмы расчетов лучей [1/5]
координаты (r,c)-пикселя
Eye
экран
v
uc W W
2 c
nc
2 r
vc H H
nr
q
H N tg
2
W H Aspect

8. Пересечение луча с объектом

Вариант задания объекта
Полигональной
сеткой:
1. Ищем пересечение с плоскостью
грани
2. Проверяем, что точка
принадлежит многоугольнику
Аналитической неявной
функцией F(x,y,z)=0:
1. Решаем уравнение
F ( x(t) , y(t) , z(t) ) = 0
относительно t
В каноническом случае:
F M
F M 1 r t 0
8 (27)
1
Eye M 1 t Dir 0
6.2.4 Алгоритмы расчетов лучей [2/5]

9. Пересечение луча r(t) со сферой

Общее уравнение сферы: x x0 y y0 z z0 r
2
2
2
2
Каноническое уравнение сферы: x 2 y 2 z 2 1
Параметрическое уравнение базовой сферы: F P P 1
1. Подставляем уравнение луча: e dt 1 0
2. Получаем квадратное уравнение: ax 2bt c 0
где : a d , d , b e, d , c e, e 1,
дискриминант s b 2 4ac
, если s 0 нет пересечений
b
3. Находим корни: t , если s 0 одно пересечение
a
b s
, если s 0 два пересечения
a
9 (27)
6.2.4 Алгоритмы расчетов лучей [3/5]

10. Пересечение луча r(t) с плоскостью

Уравнение базовой плоскости (xy-плоскости):
Луч r(t) пересекает плоскость z=0 когда:
F x, y, z z
ez d zt 0
Решение уравнения:
, если d z 0 нет пересечений, луч параллелен плоскости
t ez
d , если d z 0
z
Точка пересечения с плоскостью: T e d
10 (27)
ez
dz
6.2.4 Алгоритмы расчетов лучей [4/5]

11. Использование экстентов

Экстент (extent) объекта
простая форма, охватывающая сложный объект,
с которым ищется пересечение только тогда,
когда луч пересекает экстент
11 (27)
6.2.4 Алгоритмы расчетов лучей [5/5]

12. Достоинства и недостатки обратной трассировки лучей

(+) Корректно обрабатывает:
тени
отражения
преломление
полупрозрачные объекты
(+) Может работать с неполигональными объектами
(–) Затратность
12 (27)
6.2.5 Достоинства и недостатки [1/4]

13. Пример расчета в лесу с водой (особенности)

Солнца скрыто за облаками → освещение почти полностью рассеянное
Теней вообще нет (только темнота чащи леса)
Рябь на воде
13 (27)
6.2.5 Достоинства и недостатки [2/4]

14. Пример расчета в лесу с водой (стандартная растеризация)

1. Деревья:
модели стволов и основных веток изобразить примитивами
ветки изобразить спрайтами
дальние деревья скрыть туманом
2. Вода:
отрендерить сцену с точки зрения воды – и наложить как текстуру
рябь на воде сымитировать рельефной текстурой
3. Освещение:
Фоновое + диффузное
14 (27)
6.2.5 Достоинства и недостатки [3/4]

15. Пример расчета в лесу с водой (трассировка лучей)

1. Деревья:
каждый луч пересекается с массой мелких веточек, листвой,…
2. Вода:
Из-за кривизны придется пускать много лучей через пиксель
3. Освещение:
нельзя провести луч к Солнцу и проверить на затенение
масса отражений/рассеиваний/преломлений от деревьев и воды
15 (27)
6.2.5 Достоинства и недостатки [4/4]

16. Пример сглаживания SSAA

1 луч на пиксел
FPS = 75
16 (27)
4 луча на пиксел
FPS = 24
6.2.6 Примеры использования [1/3]

17. Пример расчета отражения

17 (27)
6.2.6 Примеры использования [2/3]

18. Пример расчета отражения (Луиджи из м/ф «Тачки»)

Студия Pixar использует гибридный движок
(карты окружения + трассировка лучей)
для учета отражения глаз на капоте и т.п.
18 (27)
6.2.6 Примеры использования [3/3]

19. Трассировка первичных лучей (ray casting vs ray tracing)

трассировка только первичных лучей
(пришедших напрямую от источника)
19 (27)
трассировка и вторичных лучей
(отраженных и преломленных)
6.2.7 Варианты трассировки [1/6]

20. Трассировка путей (path tracing)

При попадании луча на поверхность испускается 2 новых луча:
1) напрямую к источнику света
2) в случайном направлении (не факт, что достигнет источника света)
20 (27)
6.2.7 Варианты трассировки [2/6]

21. Трассировка путей (BDPT и MLT)

Bidirectional Path Tracing (испускает лучи одновременно от источника и из камеры
Metropolis Light Transport (учитывает значимость луча)
21 (27)
6.2.7 Варианты трассировки [3/6]

22. Излучательность (radiosity )

Ограничения:
1. весь свет – диффузионный
2. система – замкнута (суммарная энергия – константа)
Алгоритм:
1. все поверхности сцены делятся на патчи
(фрагменты, элементарные единицы)
2. для каждого патча итерационно вычисляется доля
излученной и поглощенной энергии
22 (27)
6.2.7 Варианты трассировки [4/6]

23. Окружающие помехи (ambient occlusion)

Лучи пускаются во всех направлениях по сфере:
1) Лучи, достигнувшие фона («неба»), увеличивают яркость на поверхности
2) Лучи, пересекающие другие объекты, не добавляют яркости
23 (27)
6.2.7 Варианты трассировки [5/6]

24. Фотонные карты (Photon Mapping)

1. Испускаются лучи (фотоны) от источника
• при столкновении с поверхностями, фотоны отдают часть своей энергии
и отражаются в некотором направлении
• информация об энергии сохраняется в фотонной карте
2. Испускаются лучи из камеры
• при попадании луча на поверхность интенсивность рассчитывается
через ближайших значений в фотонной карте
24 (27)
6.2.7 Варианты трассировки [6/6]

25. Примеры в режиме реального времени (от NVidia)

Примеры в режиме реального времени
только один автомобиль (Bugatti)
(от NVidia)
Демонстрация в 2009 г. от Nvidia в режиме real-time на совокупности
нескольких четырёхпроцессорных профессиональных карт
25 (27)
6.2.8 Примеры в режиме реального времени [1/3]

26. Примеры в режиме реального времени (от Intel)

Примеры в режиме реального времени
Демонстрация в 2010 г. от Intel в режиме real-time
на совокупности систем большой мощности
26 (27)
6.2.8 Примеры в режиме реального времени [2/3]
рассеивание в приповерхностном слое кожи
+
неровность колжи
+
волоски
(от Intel)

27. Примеры в режиме реального времени (AntiPlanet2 - мир сфер)

Динамические:
освещение
тени
прозрачность
2х ядерный процессор + GeForce GTX + Nvidia CUDA
27 (27)
6.2.8 Примеры в режиме реального времени [3/3]
English     Русский Правила