Фотонные карты


Фотонные карты – один из самых универсальных и реалистичных алгоритмов, решающих задачу вычисления интеграла освещенности в самом общем случае. Фотонные карты сложны как в реализации, так и в вычислительном плане. Алгоритм состоит из трех частей: трассировка фотонов, построение фотонной карты и сбор освещенности [7].

Трассировка фотонов

Фотоны в данном методе – это частицы, переносящие некоторую небольшую порцию световой энергии. На начальном этапе фотоны испускаются из источника света в соответствие с распределением световой энергии у данного источника. Например известно, что точечный или сферический источник света (такой как солнце) испускают свет равномерно во всех направлениях. Площадные источники света (такие как на рис. 14) имеют косинусоидальное распределение, имеющее максимум по направлению, совпадающему с нормалью к плоскости источника и нуль по направлениям, лежащим в этой плоскости [7].

Рисунок 1. Процесс трассировки фотонов.

В процессе трассировки фотоны ударяются о различные поверхности. В зависимости от свойств материала, с ними могут происходить разные события: фотон может отразиться диффузно (то есть в случайном направлении), зеркально, пройти через поверхность или полностью поглотиться. При диффузном отражении и поглощении, запись о фотоне сохраняется (просто в списке или массиве), причем решение о том, какое из событий происходит с фотоном, принимается на основании “Русской рулетки” [7].

Построение фотонной карты

После того, как трассировка фотонов завершена, производится построение фотонной карты в виде некоторой структуры пространственного разбиения. Этот этап вспомогательный и служит для того, чтобы на следующем шаге в произвольной точке пространства можно было найти k ближайших фотонов. Если бы фотоны просто сохранялись в массиве, то k ближайших каждый раз пришлось бы вычислять перебором, что очень медленно.

Авторы [7] использовали специализированный вариант kd дерева для хранения фотонов. Kd дерево – это бинарное дерево, разбивающее пространство плоскостями, параллельными осям координат. Детали построения, балансировки и поиска в kd деревьях описаны в соответствущем разделе.

Сбор освещенности

После того, как фотонная карта построена и мы имеем возможность выполнять быстрый поиск в ней, начинается этап сбора освещенности. Здесь возможны различные варианты. Вопрос в том, в каких точках собирать освещенность. Самый реалистичный метод: использовать распределенную трассировку лучей с тем отличием, что каждый раз при ударе луча о поверхность, необходимо выполнить сбор освещенности в этой точке, найдя k ближайших фотонов, суммировав их энергию (в самом простом случае) и поделив полученную энергию на площадь поверхности сферы, радиус которой равен расстоянию до самого дальнего фотона [7]. Алгоритм, таким образом, динамически выбирает радиус сбора: там где фотонов много, радиус сбора маленький, где мало - большой. Поэтому уровень шума одинаков для всего изображения.

Рисунок 2. Сбор k ближайших фотонов динамически выбирает радиус сферы.

Можно использовать константный радиус сбора и искать не k ближайших фотонов, а собирать освещение со всех фотонов, попавших в сферу заданного радиуса. Но такой метод дает больший шум. На практике фотонные карты применяют для вычисления каустиков и вторичной освещенности с использованием КЭШа излучения и финального сбора.

Рисунок 3. Спектральные каустики, вычисленные с помощью фотонных карт. На скриншоте вместо поиска k ближайших используется сбор со всех фотонов попавших в сферу заданного радиуса.

Для вычисления интеграла освещенности непосредственно их обычно не применяют, так как это дорого по вычислительным ресурсам (нужно очень много фотонов для получения приемлемого результата – как минимум несколько миллионов), изображение получается шумное и наблюдается характерный артефакт – потемнение краев. Потемнение краев наблюдается потому что на границах поверхности сбор освещенности происходит только с половины сферы, а результат делится на площадь поверхности всей сферы. Чтобы устранить шум и убрать темные края, необходимо применять метод финального сбора или алгоритм “convex hull”, который еще в несколько раз замедляет скорость фотонных карт [10].

 Рисунок 4. Интеграл освещенности посчитан непосредственно с помощью фотонных карт (Визуализация фтонной карты напрямую). Характерен низкочастотный шум и потемнение краев. Также использован упрощенный метод сбора (радиус сферы сбора константный).

Финальный сбор

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

Рисунок 2. Final gathering.

Это позволяет значительно снизить шум. Как правило нужно трассировать меньше лучей, чем в Монте-Карло трассировке (расределенной трассировке лучей или трассировке путей).

Ссылки

[7] Christensen N. J., Jensen H.W. A Practical Guide to Global illumination and Photon Maps. Siggraph 2000 Cource 8. July 23. 2000.

[10] Kato, T. and Saito, J. 2002. "Kilauea": parallel global illumination renderer. In Proceedings of the Fourth Eurographics Workshop on Parallel Graphics and Visualization (Blaubeuren, Germany, September 09 - 10, 2002). Eurographics Symposium on Parallel Graphics and Visualization, vol. 29. Eurographics Association, Aire-la-Ville, Switzerland, 7-16.




<< Вернуться назад

Статьи и обзоры

Поиск пересечений

Обратная трассировка лучей

Быстрая трассировка лучей

Индустриальная основа

Фотореалистичная визуализация

GPU ray tracing

Сферические гармоники

Дружественные проекты:

OpenSource RTRT

Siberian renderer

Наши разработки

Hydra renderer

AdaRT

Публикации

Загрузить

Скриншоты и видео

ССЫЛКИ

© Copyright 2007 Владимир Фролов, Александр Фролов

При поддержке Лаборатории компьтерной графики и мультимедия ф-та ВМК МГУ
Создание сайта: Александр Фролов