Отслеживание пути
Трассировка пути — это компьютерный графический метод Монте-Карло, позволяющий визуализировать изображения трехмерных сцен таким образом, чтобы глобальное освещение соответствовало реальности. По сути, алгоритм интегрирует всю освещенность , поступающую в одну точку на поверхности объекта. Затем эта освещенность уменьшается с помощью функции отражения поверхности ( 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. Освещение, исходящее от поверхностей, должно рассеиваться в определенном направлении, которое является некоторой функцией входящего направления приходящего освещения и исходящего направления, в котором производится выборка.
Уравнение Каджии представляет собой полное изложение этих трех принципов, и трассировка пути, которая аппроксимирует решение уравнения, остается верной им в своей реализации. Существуют и другие принципы оптики, которые не являются предметом уравнения Каджии и поэтому часто сложно или неправильно моделируются алгоритмом. Отслеживание пути затруднено оптическими явлениями, не содержащимися в трех принципах. Например,
- Яркая, резкая каустика ; Яркость масштабируется по плотности освещенности в пространстве.
- Подповерхностное рассеяние ; нарушение Принципа 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 оказывается ).
Есть и другие соображения, которые следует учитывать для обеспечения сбережения энергии. В частности, в наивном случае коэффициент отражения диффузного BRDF не должен превышать или объект будет отражать больше света, чем получает (однако это зависит от используемой схемы выборки и может быть сложно сделать правильный выбор).
Двунаправленная трассировка пути
[ редактировать ]Выборку интеграла можно выполнить любым из следующих двух различных подходов:
- Обратная трассировка пути , при которой пути генерируются, начиная с камеры и перемещаясь по сцене, пока не встретятся с источником света. Это называется «обратным», потому что пути начала от камеры и движения к источнику света противоположны направлению фактического движения света. Он по-прежнему дает тот же результат, поскольку все оптические системы обратимы.
- Трассировка света (или прямая трассировка пути ), при которой пути генерируются, начиная с источников света и перемещаясь по сцене, пока не встретятся с камерой.
метод, называемый оценкой следующего события В обоих случаях для уменьшения дисперсии можно использовать . Это работает путем непосредственной выборки важной функции (камеры в случае отслеживания света или источника света в случае обратной трассировки пути ) вместо того, чтобы ждать, пока путь случайно попадет в нее. Этот метод обычно эффективен, но становится менее полезным при наличии зеркальных или почти зеркальных BRDF. При обратной трассировке пути это создает высокую дисперсию для каустических путей, которые взаимодействуют с диффузной поверхностью, а затем отражаются от зеркальной поверхности, прежде чем попасть в источник света. Оценку следующего события нельзя использовать для выборки этих путей непосредственно с диффузной поверхности, поскольку зеркальное взаимодействие находится посередине. Аналогично, его нельзя использовать для выборки путей от зеркальной поверхности, поскольку свет может отражаться только в одном направлении. Трассировка света имеет аналогичную проблему, когда пути взаимодействуют с зеркальной поверхностью, прежде чем попасть в камеру. Потому что такая ситуация встречается значительно чаще, а шумные (или полностью черные) стеклянные предметы очень сильно отвлекают внимание, обратная трассировка пути — единственный метод, который на практике используется для однонаправленной трассировки пути.
Двунаправленная трассировка пути представляет собой алгоритм, который сочетает в себе два подхода и может обеспечить меньшую дисперсию, чем любой из методов по отдельности. Для каждого образца независимо прослеживаются два пути: один от источника света и один от камеры. Это создает набор возможных стратегий выборки, в которых каждая вершина одного пути может быть напрямую связана с каждой вершиной другого. Исходные алгоритмы отслеживания света и обратного пути являются частными случаями этих стратегий. При трассировке света вершины пути камеры соединяются непосредственно с первой вершиной пути света. Для обратной трассировки пути он соединяет вершины пути света с первой вершиной пути камеры. Кроме того, существует несколько совершенно новых стратегий выборки, в которых промежуточные вершины соединяются. Взвешивание всех этих стратегий выборки с использованием выборки с множественной важностью создает новый сэмплер, который может сходиться быстрее, чем однонаправленная трассировка пути, хотя для каждой выборки требуется больше работы. Это особенно хорошо работает для каустиков или сцен, освещенных преимущественно непрямым освещением.
Производительность
[ редактировать ]Трассировщик пути непрерывно производит пикселей изображения выборку . Изображение начинает становиться узнаваемым уже после нескольких сэмплов на пиксель, возможно, 100. Однако для того, чтобы изображение «сошлось» и уменьшило шум до приемлемого уровня, обычно требуется около 5000 семплов для большинства изображений и гораздо больше для патологических случаев. Шум представляет собой особую проблему для анимации, придавая ей обычно нежелательное качество «зернистости пленки» в виде случайных пятен.
Главным узким местом производительности трассировки пути является сложный геометрический расчет направления луча. Выборка по важности — это метод, целью которого является пропускание меньшего количества лучей через сцену, при этом правильно сходясь с исходящей яркостью в точке поверхности. Это достигается за счет направления большего количества лучей в направлениях, в которых яркость в любом случае была бы выше. Если плотность лучей, брошенных в определенных направлениях, соответствует силе излучения в этих направлениях, результат будет идентичен, но на самом деле было выпущено гораздо меньше лучей. Выборка по важности используется для сопоставления плотности лучей с законом косинуса Ламберта , а также для сопоставления BRDF.
Легкий транспорт в Метрополисе может привести к получению изображения с меньшим уровнем шума и меньшим количеством образцов. Этот алгоритм был создан для более быстрой сходимости в сценах, в которых свет должен проходить через нечетные коридоры или небольшие отверстия, чтобы достичь той части сцены, которую просматривает камера. Он также показал многообещающую способность правильно отображать патологические ситуации с помощью каустики. Вместо генерации случайных путей новые пути выборки создаются как небольшие мутации существующих. В этом смысле алгоритм «запоминает» успешные пути от источников света до камеры.
Функции распределения рассеяния
[ редактировать ]Отражающие свойства (количество, направление и цвет) поверхностей моделируются с использованием BRDF . Эквивалентом проходящего света (света, проходящего через объект) являются BSDF . Трассировщик пути может в полной мере использовать преимущества сложных, тщательно смоделированных или измеренных функций распределения, которые управляют внешним видом («материалом», «текстурой» или «затенением» в терминах компьютерной графики) объекта.
См. также
[ редактировать ]- Арнольд (программное обеспечение)
- Blender (программное обеспечение) — 3D-программа, включающая Cycles , движок рендеринга с ускорением на графическом процессоре.
- Октановый рендер
- Pixar Рендерман
- LuxCoreRenderer
Примечания
[ редактировать ]- ^ Каджия, Дж. Т. (1986). «Уравнение рендеринга». Материалы 13-й ежегодной конференции «Компьютерная графика и интерактивные технологии» . АКМ. CiteSeerX 10.1.1.63.1402 .
- ^ Лафортюн, Э., Математические модели и алгоритмы Монте-Карло для физически обоснованного рендеринга , (докторская диссертация), 1996.
- ^ Перселл, Ти Джей; Бак, я; Марк, Вт; и Ханрахан, П., «Трассировка лучей на программируемом графическом оборудовании», Proc. SIGGRAPH 2002 , 703–712. См. также Перселл, Т., Трассировка лучей в потоковом процессоре (докторская диссертация), 2004.
- ^ Робисон, Остин, «Обзор интерактивной трассировки лучей на графическом процессоре и NVIRT» , слайд 37, I3D 2009.
- ^ Демо Vray ; Другие примеры включают Octane Render, Arion и Luxrender.
- ^ Сеймур, Майк. «Новый производственный рендерер Disney 'Hyperion' — да, Дисней!» . fxguide . Проверено 16 сентября 2017 г.
- ^ Вич, Э., и Гибас, Л. Дж. Легкий транспорт Метрополиса . В SIGGRAPH'97 (август 1997 г.), стр. 65–76.
- SmallPt — это программа отслеживания образовательных путей Кевина Бисона. Он использует 99 строк C++ (включая описание сцены). На этой странице есть хороший набор примеров шума, возникающего в результате этой техники.