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

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

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

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

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

История

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

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

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

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

Описание

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

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

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

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

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

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

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

Алгоритм

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

  Color TracePath(Ray ray, count depth) {
    if (depth >= MaxDepth) {
      return Black;  // Bounced enough times.
    }

    ray.FindNearestObject();
    if (ray.hitSomething == false) {
      return Black;  // Nothing was hit.
    }

    Material material = ray.thingHit->material;
    Color emittance = material.emittance;

    // Pick a random direction from here and keep going.
    Ray newRay;
    newRay.origin = ray.pointWhereObjWasHit;

    // This is NOT a cosine-weighted distribution!
    newRay.direction = RandomUnitVectorInHemisphereOf(ray.normalWhereObjWasHit);

    // Probability of the newRay
    const float p = 1 / (2 * PI);

    // Compute the BRDF for this ray (assuming Lambertian reflection)
    float cos_theta = DotProduct(newRay.direction, ray.normalWhereObjWasHit);
    Color BRDF = material.reflectance / PI;

    // Recursively trace reflected light sources.
    Color incoming = TracePath(newRay, depth + 1);

    // Apply the Rendering Equation here.
    return emittance + (BRDF * incoming * cos_theta / p);
  }

  void Render(Image finalImage, count numSamples) {
    foreach (pixel in finalImage) {
      foreach (i in numSamples) {
        Ray r = camera.generateRay(pixel);
        pixel.color += TracePath(r, 0);
      }
      pixel.color /= numSamples;  // Average samples.
    }
  }

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

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

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

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

  • Обратное отслеживание пути , при котором пути генерируются, начиная с камеры и прыгая по сцене, пока не встретят источник света. Это называется «назад», потому что начальный путь от камеры до источника света противоположен направлению, по которому свет действительно движется. Он по-прежнему дает тот же результат, потому что все оптические системы обратимы.
  • Light Tracing (или Forward Path Tracing ), где пути генерируются, начиная от источников света и прыгая по сцене, пока не встретят камеру.

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

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

Представление

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

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

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

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

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

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

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

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

Примечания

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