stringtranslate.com

Отслеживание пути

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

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

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

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

История

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

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

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

Отслеживание пути сыграло важную роль в киноиндустрии. Более ранние фильмы полагались на рендеринг строк развертки для создания визуальных эффектов и анимации компьютерной графики. В 1998 году Blue Sky Studios выполнила рендеринг короткометражного фильма « Кролик» , получившего премию «Оскар» , с помощью своего собственного средства визуализации трассировки пути CGI Studio, включающего мягкие тени и эффекты непрямого освещения. « Дом монстров » Sony Pictures Imageworks в 2006 году стал первым полнометражным анимационным фильмом, полностью рендеринг которого осуществлялся с помощью трассировщика пути с использованием коммерческого рендерера Arnold . Кроме того, Walt Disney Animation Studios использует собственную оптимизированную трассировку пути, известную как Hyperion, с момента выхода Big Hero 6 в 2014 году . [6] Pixar Animation Studios также внедрила трассировку пути для своего коммерческого средства визуализации RenderMan .

Описание

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

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

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

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

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

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

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

Алгоритм

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

Color TracePath ( Ray ray , глубина отсчета ) {      if ( глубина >= MaxDepth ) {     вернуть Блэка ; // Отскочило достаточное количество раз.   } луч . НайтиБлижайшийОбъект (); если ( луч . hitSomething == ложь ) {     вернуть Блэка ; // Ничего не пострадало.   } Материал материал = луч . thingHit -> материал ;    Цветовое излучение = материал . эмиттанс ;    // Отсюда выбираем случайное направление и продолжаем движение. Рэй newRay ;  новыйРэй . начало = луч . точкаWhereObjWasHit ;   // Это НЕ косинусно-взвешенное распределение! новыйРэй . направление = RandomUnitVectorInHemisphereOf ( ray.normalWhereObjWasHit ) ; _   // Вероятность нового луча const float p = 1 / ( 2 * PI );         // Вычисляем BRDF для этого луча (предполагая ламбертово отражение) float cos_theta = DotProduct ( newRay.direction , ray.normalWhereObjWasHit ) ; _ _ _     Цвет BRDF = материал . отражательная способность / ПИ ;      // Рекурсивно отслеживаем источники отраженного света. Входящий цвет = TracePath ( newRay , глубина + 1 );       // Примените здесь уравнение рендеринга. обратный эмиттанс + ( BRDF * incoming * cos_theta / p );         }void Render ( Image FinalImage , count numSamples ) {      foreach ( пиксель в FinalImage ) {     Еогеасп ( я в numSamples ) {     Рэй р = камера . генерироватьRay ( пиксель );    пиксель . цвет += TracePath ( r , 0 );    } пиксель . цвет /= numSamples ; // Средние выборки.    }}

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

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

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

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

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

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

Производительность

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

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

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

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

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

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

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

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

Примечания

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