Трассировка пути - Path tracing

Изображение, созданное с использованием трассировки пути, демонстрирующее известные особенности этой техники.

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

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

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

История

В уравнение рендеринга и его использование в компьютерной графике было представлено Джеймс Каджиа в 1986 г.[1] Трассировка пути была представлена ​​тогда как алгоритм поиска численное решение интегралу уравнения рендеринга. Десять лет спустя Лафортюн предложил множество усовершенствований, включая двунаправленную трассировку пути.[2]

Легковой транспорт Метрополис, метод изменения ранее найденных путей для повышения производительности в сложных сценах, был представлен в 1997 году Эриком Вичем и Леонидас Дж. Гибас.

В последнее время, Процессоры и GPU стали достаточно мощными для более быстрой визуализации изображений, что вызвало более широкий интерес к алгоритмам трассировки пути. Тим Перселл первым представил глобальное освещение алгоритм, работающий на графическом процессоре в 2002 году.[3] В феврале 2009 г. Остин Робисон из Nvidia продемонстрировал первую коммерческую реализацию трассировщика пути, работающего на графическом процессоре [4], и другие реализации, такие как Владимир Койлазов в августе 2009 года. [5] Этому способствовало созревание ГПГПУ инструменты программирования, такие как CUDA и OpenCL и пакеты SDK для трассировки лучей на GPU, такие как OptiX.

Трассировка пути сыграла важную роль в киноиндустрии. Предыдущие фильмы полагались на средства рендеринга развертки для создания визуальных эффектов и анимации компьютерной графики. В 1998 г. Blue Sky Studios оказал Академическая награда короткометражный фильм-победитель Кролик с их запатентованным средством визуализации трассировки пути CGI Studio с мягкими тенями и эффектами непрямого освещения. Sony Pictures Imageworks ' Дом монстров был в 2006 году первым полнометражным анимационным фильмом, полностью созданным с использованием трассировки пути с использованием рекламы Арнольд рендерер. Также, Анимационные студии Уолта Диснея использует собственный оптимизированный трассировщик пути, известный как Hyperion, с момента производства Большой герой 6 в 2014.[6] Pixar Animation Studios также использует отслеживание пути для своих коммерческих RenderMan рендерер.

Описание

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

В реальном мире объекты и поверхности видны благодаря тому, что они отражают свет. Этот отраженный свет затем по очереди освещает другие объекты. Из этого простого наблюдения следуют два принципа.

Я. Для данной внутренней сцены каждый объект в комнате должен освещать все остальные объекты.

II. Во-вторых, не следует делать различия между освещением, излучаемым источником света, и освещением, отраженным от поверхности.

Изобретенный в 1984 году, совсем другой метод под названием лучезарность был верен обоим принципам. Однако излучение связывает общую освещенность, падающую на поверхность, с равномерным яркость что покидает поверхность. Это заставило все поверхности быть Ламбертианский, или «идеально рассеянный». В то время как излучение привлекло много внимания при его обращении, идеально рассеянные поверхности не существуют в реальном мире. Осознание того, что рассеяние от поверхности зависит как от входящего, так и от исходящего направления, является ключевым принципом, лежащим в основе Двунаправленная функция распределения отражательной способности (BRDF). Эта зависимость от направления была предметом исследования, в результате чего публикация важных идей на протяжении 1990-х годов, поскольку учет направления всегда требовал резкого увеличения времени расчета на настольных компьютерах. Принцип III следует.

III. Освещение, исходящее от поверхностей, должно рассеиваться в определенном направлении, которое является некоторой функцией входящего направления входящего освещения и исходящего направления, в котором производится выборка.

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

Алгоритм

Следующее псевдокод это процедура для выполнения наивной трассировки пути. Функция TracePath вычисляет одну выборку пикселя, в которой учитывается только путь сбора.

 1   Цвет TracePath(Рэй луч, считать глубина) { 2     если (глубина >= Максимальная глубина) { 3       вернуть Чернить;  // Отскакивал достаточно раз. 4     } 5  6     луч.FindNearestObject(); 7     если (луч.hitSomething == ложный) { 8       вернуть Чернить;  // Ничего не произошло. 9     }10 11     Материал материал = луч.вещь->материал;12     Цвет эмиссия = материал.эмиссия;13 14     // Выбираем случайное направление отсюда и продолжаем идти.15     Рэй newRay;16     newRay.происхождение = луч.pointWhereObjWasHit;17 18     // Это НЕ взвешенное по косинусу распределение!19     newRay.направление = RandomUnitVectorInHemisphereOf(луч.normalWhereObjWasHit);20 21     // Вероятность нового луча22     const плавать п = 1/(2*M_PI);23 24     // Вычислить BRDF для этого луча (предполагая ламбертовское отражение)25     плавать cos_theta = Скалярное произведение(newRay.направление, луч.normalWhereObjWasHit);26     Цвет BRDF = материал.отражательная способность / M_PI ;27 28     // Рекурсивно отслеживать источники отраженного света.29     Цвет входящий = TracePath(newRay, глубина + 1);30 31     // Применяем здесь уравнение рендеринга.32     вернуть эмиссия + (BRDF * входящий * cos_theta / п);33   }34 35   пустота Визуализировать(Изображение finalImage, считать numSamples) {36     для каждого (пиксель в finalImage) {37       для каждого (я в numSamples) {38         Рэй р = камера.generateRay(пиксель);39         пиксель.цвет += TracePath(р, 0);40       }41       пиксель.цвет /= numSamples;  // Средние выборки.42     }43   }

Затем все образцы усредненный чтобы получить выходной цвет. Обратите внимание, что этот метод всегда выборки случайного луча в полушарии нормали хорошо работает только для идеально рассеянных поверхностей. Для других материалов обычно необходимо использовать выборку по важности, то есть вероятностно выбрать новый луч в соответствии с распределением BRDF. Например, идеально зеркальный (зеркальный) материал не будет работать с описанным выше методом, поскольку вероятность того, что новый луч будет правильным отраженным лучом - а это единственный луч, через который будет отражено любое излучение - равна нулю. В этих ситуациях необходимо разделить коэффициент отражения на функция плотности вероятности схемы выборки согласно интеграции Монте-Карло (в приведенном выше наивном случае нет конкретной схемы выборки, поэтому PDF оказывается равным 1).

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

Двунаправленная трассировка пути

Выборка интеграла для точки может выполняться любым из следующих двух подходов:

  • Стреляющие лучи от источников света и создания путей в сцене. Путь обрезается случайным числом шагов отражения, и полученный свет проходит через проецируемый пиксель на выходном изображении. Во время рендеринга создаются миллиарды путей, а выходное изображение - это среднее значение каждого пикселя, получившего некоторый вклад.
  • Сбор лучей из точки на поверхности. Луч проецируется с поверхности на сцену по траектории отскока, которая заканчивается при пересечении источника света. Затем свет направляется назад по пути к выходному пикселю. Создание единого пути называется «образцом». Для одной точки на поверхности берутся сотни или тысячи образцов. Конечный результат пикселя - это среднее арифметическое всех этих образцов, а не их суммы.

Двунаправленная трассировка пути сочетает в себе оба Стрельба и Встреча в том же алгоритме, чтобы получить более быструю сходимость интеграла. Траектория стрельбы и траектория сбора трассируются независимо, а затем начальная часть трассы стрельбы соединяется с хвостовой частью траектории сбора. Затем свет ослабляется при каждом отражении и возвращается обратно в пиксель. Эта техника на первый взгляд кажется парадоксальной медленнее, так как для каждой собираемой выборки мы дополнительно отслеживаем весь путь стрельбы. Однако на практике дополнительная скорость конвергенции намного перевешивает любую потерю производительности из-за дополнительных лучей на стороне стрельбы.

Спектакль

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

Трассировщик пути непрерывно делает выборку пиксели из изображение. Изображение начинает становиться узнаваемым после нескольких отсчетов на пиксель, возможно, 100. Однако для того, чтобы изображение «сходилось» и уменьшало шум до приемлемых уровней, обычно требуется около 5000 отсчетов для большинства изображений и еще много для патологический случаи. Шум представляет собой особую проблему для анимаций, придавая им обычно нежелательную "зернистость пленки" случайных пятен.

Центральным узким местом в производительности Path Tracing является сложный геометрический расчет построения луча. Выборка по важности - это техника, которая направлена ​​на то, чтобы пропускать через сцену меньше лучей, но при этом правильно сходиться к исходящей яркости в точке поверхности. Это достигается путем направления большего количества лучей в направлениях, в которых яркость в любом случае была бы больше. Если плотность лучей, излучаемых в определенных направлениях, соответствует силе вкладов в этих направлениях, результат будет идентичным, но на самом деле было брошено гораздо меньше лучей. Выборка по важности используется для согласования плотности лучей с Закон косинуса Ламберта, а также используется для сопоставления BRDF.

Легковой транспорт Метрополис может привести к изображению с меньшим шумом и меньшим количеством отсчетов. Этот алгоритм был создан для более быстрой сходимости в сценах, в которых свет должен проходить через необычные коридоры или небольшие отверстия, чтобы достичь той части сцены, которую видит камера. Он также показал себя многообещающим в правильной визуализации патологических ситуаций с помощью каустиков. Вместо того, чтобы генерировать случайные пути, новые пути выборки создаются как небольшие изменения существующих. В этом смысле алгоритм «запоминает» успешные пути от источников света до камеры.

Функции распределения рассеяния

Функции распределения рассеяния

Отражающие свойства (количество, направление и цвет) поверхностей моделируются с использованием BRDF. Эквивалент проходящего света (свет, проходящий через объект): BSDF. Трассировщик пути может в полной мере использовать сложные, тщательно смоделированные или измеренные функции распределения, которые контролируют внешний вид («материал», «текстура» или «затенение» в терминах компьютерной графики) объекта.

Смотрите также

Примечания

  1. ^ Каджи, Дж. Т. (1986). «Уравнение рендеринга». Материалы 13-й ежегодной конференции по компьютерной графике и интерактивным техникам.. ACM. CiteSeerX  10.1.1.63.1402.
  2. ^ Лафортюн, E, Математические модели и алгоритмы Монте-Карло для физического рендеринга, (Кандидатская диссертация), 1996.
  3. ^ Перселл, Т. Дж .; Бак, я; Марк, Вт; и Ханрахан, П., «Трассировка лучей на программируемом графическом оборудовании», Proc. СИГГРАФ 2002, 703 - 712. См. Также Purcell, T, Трассировка лучей на потоковом процессоре (Кандидатская диссертация), 2004 г.
  4. ^ Робисон, Остин, «Интерактивная трассировка лучей на графическом процессоре и обзор NVIRT», слайд 37, I3D 2009.
  5. ^ Демо Vray; Другие примеры включают Octane Render, Arion и Luxrender.
  6. ^ Сеймур, Майк. «Новый производственный рендерер Disney« Hyperion »- да, Дисней!». fxguide. Получено 16 сентября 2017.
  7. ^ Вич, Э., Гибас, Л. Дж. Легковой транспорт Метрополис. В СИГГРАФ’97 (август 1997 г.), стр. 65–76.
  8. SmallPt - трассировщик образовательного пути Кевина Бисона. Он использует 99 строк C ++ (включая описание сцены). На этой странице есть хороший набор примеров шума, возникающего в результате этой техники.