stringtranslate.com

Фотонное картирование

В компьютерной графике фотонное картирование — это двухпроходный алгоритм рендеринга глобального освещения , разработанный Хенриком Ванном Йенсеном в период с 1995 по 2001 год [1] , который приблизительно решает уравнение рендеринга для интегрирования светового излучения в заданной точке пространства. Лучи от источника света (например, фотоны ) и лучи от камеры трассируются независимо, пока не будет выполнен некоторый критерий завершения, затем они соединяются на втором этапе для получения значения светового излучения. Алгоритм используется для реалистичного моделирования взаимодействия света с различными типами объектов (аналогично другим фотореалистичным методам рендеринга ). В частности, он способен моделировать преломление света через прозрачное вещество, такое как стекло или вода (включая каустики ), диффузное взаимное отражение между освещенными объектами, подповерхностное рассеяние света в полупрозрачных материалах и некоторые эффекты, вызванные твердыми частицами, такими как дым или водяной пар . Фотонное картирование также может быть расширено для более точного моделирования света, такого как спектральный рендеринг . Прогрессивное фотонное картирование (PPM) начинается с трассировки лучей, а затем добавляет все больше и больше проходов фотонного картирования для обеспечения все более точного рендеринга.

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

Эффекты

Каустики

Модель бокала для вина , трассированная с помощью фотонного картирования для отображения каустики

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

Диффузное взаимное отражение

Диффузное взаимоотражение очевидно, когда свет от одного диффузного объекта отражается на другой. Фотонное картирование особенно искусно справляется с этим эффектом, поскольку алгоритм отражает фотоны от одной поверхности к другой на основе двунаправленной функции распределения отражательной способности этой поверхности (BRDF), и, таким образом, свет от одного объекта, падающий на другой, является естественным результатом метода. Диффузное взаимоотражение впервые было смоделировано с использованием решений излучательности . Фотонное картирование отличается тем, что оно отделяет перенос света от природы геометрии в сцене. Цветовая утечка является примером диффузного взаимоотражения.

Подповерхностное рассеяние

Подповерхностное рассеяние — это эффект, очевидный, когда свет проникает в материал и рассеивается, прежде чем поглотиться или отразиться в другом направлении. Подповерхностное рассеяние можно точно смоделировать с помощью фотонного картирования. Это был оригинальный способ, которым его реализовал Дженсен; однако метод становится медленным для сильно рассеивающих материалов, и двунаправленные функции распределения отражательной способности поверхностного рассеяния (BSSRDF) более эффективны в этих ситуациях.

Использование

Построение фотонной карты (1-й проход)

При картировании фотонов световые пакеты, называемые фотонами, отправляются в сцену из источников света. Всякий раз, когда фотон пересекается с поверхностью, точка пересечения и входящее направление сохраняются в кэше, называемом картой фотонов . Обычно для сцены создаются две карты фотонов: одна специально для каустик и глобальная для другого света. После пересечения поверхности материалом задается вероятность отражения, поглощения или передачи/преломления. Для выбора одного из этих действий используется метод Монте-Карло, называемый русской рулеткой . Если фотон поглощается, новое направление не задается, и трассировка для этого фотона заканчивается. Если фотон отражается, для определения отношения отраженной яркости используется функция распределения двунаправленной отражательной способности поверхности . Наконец, если фотон передает, задается функция его направления в зависимости от характера передачи.

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

Рендеринг (2-й проход)

На этом этапе алгоритма фотонная карта, созданная на первом проходе, используется для оценки яркости каждого пикселя выходного изображения. Для каждого пикселя сцена трассируется лучом до тех пор, пока не будет найдена ближайшая поверхность пересечения.

На этом этапе уравнение рендеринга используется для расчета поверхностной яркости, выходящей из точки пересечения в направлении луча, который на нее попал. Для повышения эффективности уравнение разлагается на четыре отдельных фактора: прямое освещение, зеркальное отражение, каустика и мягкое непрямое освещение.

Для точной оценки прямого освещения луч прослеживается от точки пересечения до каждого источника света. Пока луч не пересекает другой объект, источник света используется для расчета прямого освещения. Для приблизительной оценки непрямого освещения карта фотонов используется для расчета вклада яркости.

Зеркальное отражение в большинстве случаев можно рассчитать с помощью процедур трассировки лучей (поскольку они хорошо справляются с отражениями).

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

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

Расчет яркости с использованием фотонной карты

Для расчета поверхностной яркости в точке пересечения используется одна из кэшированных фотонных карт. Шаги следующие:

  1. Соберите N ближайших фотонов, используя функцию поиска ближайшего соседа на карте фотонов.
  2. Пусть S — сфера, содержащая эти N фотонов.
  3. Для каждого фотона разделите величину потока (реальных фотонов), который представляет фотон, на площадь S и умножьте на BRDF, примененный к этому фотону.
  4. Сумма этих результатов для каждого фотона представляет собой общую яркость поверхности, возвращаемую пересечением поверхности в направлении падающего на нее луча.

Оптимизации

Вариации

Ссылки

  1. ^ Дженсен, Х. (1996). Глобальное освещение с использованием фотонных карт . [онлайн] Доступно по адресу: http://graphics.stanford.edu/~henrik/papers/ewr7/egwr96.pdf

Внешние ссылки