Метод фотонных карт () — один из самых универсальных и распространённых алгоритмов рендеринга, решающих задачу интегрирования уравнения рендеринга. Алгоритм состоит из трёх частей: трассировка фотонов, построение фотонной карты и сбор освещённости..
Трассировка фотонов Фотоны в данном методе — это частицы, переносящие некоторую дискретную порцию световой энергии. На начальном этапе фотоны испускаются из источника света в соответствии с функцией распределения световой энергии у данного источника. Например известно, что точечный или сферический источник света (например, Солнце) испускают свет изотропно во всех направлениях. Площадные источники света имеют косинусоидальное распределение, имеющее максимум по направлению, совпадающему с нормалью к плоскости источника и нуль по направлениям, лежащим в этой плоскости.
В процессе трассировки фотоны ударяются о различные поверхности модели (сцены). В зависимости от свойств материала, с ними могут происходить разные события: фотон может отразиться рассеянно (то есть в случайном направлении), зеркально, преломиться через поверхность или поглотиться. Решение о том, какое из событий происходит с фотоном, принимается на основании свойств материала поверхности и статистического метода «Русской рулетки». Лишь при рассеянном отражении запись о фотоне сохраняется в список.
Построение фотонной карты На основе списка фотонов, полученного после этапа трассировки фотонов, производится построение фотонной карты в виде некоторой структуры пространственного разбиения. Этот этап вспомогательный и служит для того, чтобы на следующем шаге в произвольной точке пространства можно было найти k ближайших фотонов. Если бы фотоны просто оставались в списке, то k ближайших каждый раз пришлось бы вычислять перебором, что часто нецелесообразно. Для хранения фотонов как правило используется специализированный вариант k-мерного дерева (kD-tree).
Сбор освещённости После того, как фотонная карта построена, и мы имеем возможность выполнять быстрый поиск в ней, начинается этап сбора освещённости в тех точках сцены, которые вносят вклад в синтезируемое изображение. Вопрос в том, в каких точках собирать освещённость. Здесь возможны различные варианты. Самый реалистичный метод: использовать распределённую трассировку лучей из виртуальной камеры с тем отличием, что каждый раз при ударе луча о поверхность необходимо выполнить сбор освещённости в этой точке: найти k ближайших фотонов, суммировать их энергию (в простом случае) и поделить полученную энергию на площадь поверхности сферы сбора (радиус которой равен расстоянию до самого дальнего фотона). Алгоритм, таким образом, динамически выбирает радиус сбора: там где фотонов много, радиус сбора маленький, где мало — большой. Таким образом уменьшается уровень шума для всего изображения.
Можно использовать постоянный радиус сбора и искать не k ближайших фотонов, а собирать освещение со всех фотонов, попавших в сферу заданного радиуса. Однако такой метод даёт больший шум изображения. На практике фотонные карты применяют для вычисления каустик и глобального освещения, часто с использованием кэша излучения () и финального сбора (см. ниже).
Для вычисления уравнения рендеринга непосредственно метод фотонных карт обычно не применяют, так как это ресурсоёмко (обычно необходимо как минимум несколько миллионов фотонов для получения приемлемого результата), изображение получается шумное и наблюдается характерный артефакт — потемнение краёв. Потемнение краёв наблюдается из-за того, что на границах поверхности сбор освещённости происходит только с половины сферы, а результат делится на площадь поверхности всей сферы. Чтобы устранить шум и убрать тёмные края, необходимо применять метод финального сбора или алгоритм построения выпуклой оболочки, который ещё в несколько раз замедляет скорость фотонных карт..
Финальный сбор При использовании этого метода сами фотонные карты задействуются только для вычисления непрямой освещённости. Тени, отражения и другие эффекты (кроме каустик, для которых финальный сбор не обязателен) рассчитываются при помощи какого-либо другого метода, например распределённой трассировки лучей. Вместо непосредственного сбора освещённости с фотонов, в методе финального сбора из заданной точки испускается некоторое число лучей по полусфере, и освещённость собирается уже в тех местах, куда попали лучи. Это позволяет значительно снизить уровень шума. Как правило нужно трассировать меньше лучей, чем в трассировке путей.
Примечания
Ссылки
Global Illumination using Photon Maps Realistic Image Synthesis Using Photon Mapping ISBN 1-56881-147-0
Категория:Освещение в трёхмерной графике