Оптимизация V-ray. Часть 1

Опубликовано by Simply_Better . Размещено в 3D сцены, 3Ds Max, Maya, Статьи, Уроки

Как сделать максимально качественный рендер при меньшем времени просчета?

Сегодня очень подробная статья в двух частях о том, как получить качественное изображение при помощи V-ray.

vray_optimization_header

Часто можно увидеть 3d-artist, у которых есть универсальные настройки для своих визуализаций, где в свитке Image Sampler (Anti-Aliasing) значение Max Subdivs устанавливают очень высоким (50-100), затем добиваются снижения шума (Noise Parameters), пока визуализация не станет достаточно чистой. Но если заглянуть вглубь V-ray, то можно управлять параметрами более осознано и ускорить просчет в 3-13 раза.

Сначала мы рассмотрим некоторые из основных концепций, как работает raytracing (трассировка лучей) и VRay sampling. Затем мы рассмотрим в качестве примера сцену, чтобы на примере увидеть, как именно оптимизировать визуализацию. Дальше мы узнаем, как выявить различные источники шума. И, наконец, я дам инструкцию шаг за шагом, как оптимизировать любую сцену, чтобы найти гармонию между идеальным балансом качества и скорости.


Трассировка лучей (raytracing)

Визуализация начинается с того, что лучи (rays) сначала направляются из нашей камеры в сцену, чтобы собрать информацию о геометрии, которая будет видна в окончательном изображении. Лучи, которые исходят из камеры называются Primary Samples (также их называют Camera Rays или Eye Rays) и управляются они с помощью V-Ray Sampler Image (также известный как Anti-Aliasing или AA).

Всякий раз, когда первичный луч пересекается с геометрией в сцене, дополнительные лучи будут посланы от этой точки пересечения в остальную части сцены, чтобы собрать информацию о таких параметрах, как Shadows (тени), Lighting (освещение), Global Illumination (глобальное освещение), Reflection (отражение), Refraction (преломление), Sub-surface Scattering (SSS) (подповерхностное рассеивание) и т.д. Эти дополнительные лучи называются вторичными лучами и контролируются V-Ray DMC Sampler.

Упрощенная схема трассировки лучей:

vray_optimization_figure_01 Primary Samples (первичные лучи) направляются из камеры в сцену, пересекаются с геометрией, и отправляют Secondary Samples (вторичные лучи), чтобы взять еще сэмплов (образцов) в сцене.

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

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

Количество первичных сэмплов, которые направлены в сцену в основном контролируется Min Subdivs, Max Subdivs и Color Threshold. Вторичные образцы в основном контролируется настройками Subdivs от отдельных Lights (светильников), Global Illumination (глобального освещения), материалов в сцене, а также настройки Noise Threshold, которые находятся во вкладке DMC Sampler (Noise Threshold называется Adaptive Threshold в V-Ray для Maya).

Основные понятия:

Ray (луч) — Sample (образец);

Primary Samples (первичные образцы) — контролируются V-Ray Image Sampler (также известны как Anti-Aliasing или AA); они собирают информацию в сцене о Geometry (геометрии), Textures (текстурах), Depth of Field (глубины резкости) и Motion Blur (степени размытия).

Secondary Samples (вторичные образцы) — контролируются V-Ray DMC Sampler; собирают такую информацию, как Lighting (освещение), Global Illumination (GI) (глобальное освещение), Shadows (тени), Material Reflection & Refraction (отражения и преломления) и Sub-Surface Scattering (SSS) (подповерхностное рассеивания).

Noise (шум) — отсутствие информации.

Subdivs (сабдивы) — квадратный корень из фактического числа лучей. Например: 8 Subdivs = 64 луча.


Понятие samplerate render element

Samplerate render element один из наиболее важных инструментов, которые помогают в оптимизации визуализации. Это способ V-Ray показать нам именно то, что Image Sampler (AA) делает в каждом пикселе. Данный инструмент делает это путем присвоения цвета для каждого пикселя и вида сэмплов. Он делает это, помечая каждый пиксель цветом, соответствующим количеству Primary Samples (AA) в нём. Это изображение можно глянуть в SampleRate render element.

*Голубой цвет означает небольшое количество Primary Samples (AA) в этом пикселе.

*Зелёный цвет означает среднее количество Primary Samples (AA) в этом пикселе.

*Красный цвет означает большое количество Primary Samples (AA) в этом пикселе.

vray_optimization_figure_02 Samplerate показывает сколько пикселей было в каждом пикселе рендера.

Если Image Sampler (AA) = 1 min и 10 max Subdivs (1 min и 100max Primary Samples):

*Голубой цвет означает 1 Primary Samples (AA) в одном пикселе.

*Зелёный цвет означает 50 Primary Samples (AA) в одном пикселе.

*Красный цвет означает 100 Primary Samples (AA) в одном пикселе.

Если Image Sampler (AA) = 1 min и 100 max Subdivs (1 min и 10000max Primary Samples):

*Голубой цвет означает 1 Primary Samples (AA) в одном пикселе.

*Зелёный цвет означает 5000 Primary Samples (AA) в одном пикселе.

*Красный цвет означает 10000 Primary Samples (AA) в одном пикселе.


Пример сцены. Понимание, как работает V-Ray

В этом уроке мы будем работать с простой сценой. В неё я поместил плоскости с несколькими сферами, назначил простые материалы на них (включая diffuse, glossy reflection, glossy refraction, и SSS), добавил два объёмных источника света (area light) и domelight с HDRI. GI включено в режиме Brute Force + Light Cache. Этот файл вы можете скачать здесь.

Начнём с простых настроек рендера со следующими значениями:

Image Sampler (AA) = 1min & 8max Subdivs.

Lights, GI, и Materials все 8 Subdivs.

Noise Threshold s= 0.01.

Все остальные настройки оставляем по умолчанию.

vray_optimization_figure_03 Базовый рендер. 1min & 8max Subdivs = Image Sampler (AA) 8 Subdivs = Lights, GI и все материалы

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

«Я позволяю тебе использовать до 64 (8 Subdivs) Primary Samples (AA) в каждом пикселе, чтобы ты понял, что происходит в сцене и не наворачивал много шума, насколько noise threshold сможет позволить тебе это сделать. Но для каждого из Primary Samples, ты можешь создать только один Secondary Sample чтобы понять, что происходит в сцене касательно света, тени, GI и материалам.»

Возможно, у вас возникает внутреннее противоречие: «Эй, всего один Secondary Sample для света, GI и всех материалов? Да ладно! Должно же быть 64 Samples (8 Subdivs), мы же столько указывали?».

Важно отметить, что источники света, GI и материалы имеют значение 64 Samples (8 Subdives) каждый — V-Ray делит это значение на AA Max Samples в сцене. Несмотря на значение в 64 Samples для света и материалов, вы должны иметь ввиду, что это значение делится на значение AA Max = 64 Samples (8 Subdivs), в результате, мы имеем всего один Secondary Sample для света, GI и материалов. (64 Secondary Samples / 64 Primary Samples = 1 Secondary Sample).

Причина, по которой V-Ray это делает — внутренняя формула, установленная для удержания баланса этих двух значений. Изначальная логика заключалась в следующем: чем больше Primary Samples, тем пропорционально меньше Secondary Samples требуется чтобы понять, что происходит в сцене (скоро мы убедимся, что это не всегда справедливо). Этот баланс между Image Sampler и DMC Sampler, может быть не понятен вначале, но главное вынести следующее: когда вы увеличиваете значение Image Sampler (AA), V-Ray старается компенсировать пропорциональным уменьшением значение DMC Sampler.

Вернемся к визуализации:

V-Ray заканчивает рендеринг, но мне совершенно не нравится большое количество красных пикселей в SampleRate render element. Это говорит о следующем:

«Я не смог выяснить, что же происходит в сцене, так ты меня сильно ограничил в noise threshold. Я долго использовал Primary Samples со всего одним Secondary Sample но это не дало мне достаточно информации об этих областях.»

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

* Вариант 1 — увеличить AA Max Subdivs — чтобы V-Ray лучше увидел сцену, но снова со всего одним Secondary Sample для света, GI и материалов.

* Вариант 2 — увеличить количество Subdivs в материалах, свете и GI. Сказать V-Ray, чтобы он оставил количество Primary Samples, но вместо этого, позволить ему использовать больше Secondary Samples.


Пример сцены (вариант 1): увеличение значения AA MAX SUBDIVS

Что ж, давайте сначала попробуем сделать рендер с «универсальными настройками», которые многие так любят. Цель — получить менее шумный рендер.

- увеличиваем Image Sampler (AA) 1min & 100max Subdivs;

- оставляем источники сцета, GI и материалы по 8 Subdivs;

- понижаем Noise Threshold до 0.005 чтобы сказать V-Ray что мы хотим чистый рендер без шума.

vray_optimization_figure_04

При таких настройках мы говорим V-Ray:

«Я разрешаю тебе использовать до 10 000 (100 сабдивов) Primary Samples (AA) на пиксель чтобы понять, что происходит в сцене и минимизировать шум, на сколько это возможно при заданном Noise Threshold. Но, для каждого Primary Samples, ты можешь создать только по одному Secondary Sample для того что бы понять, что в сцене со светом, GI и материалами.»

Как уже было сказано ранее, что так как каждый источник света, материал и GI имеют по 64 Samples (8 Subdivs), V-Ray делит это значение на AA Max Samples. Несмотря на значение в 64 Samples, оно делится на AA Max 10 000 сэмплов (100 сабдивов), в результате, мы имеем минимальное количество — всего по одному Secondary Sample для света, GI и материалов. (64 Secondary Samples / 10000 Primary Samples = 1 Secondary Sample).

V-ray заканчивает рендеринг картинки и говорит:

«Я в состоянии был выяснить всё, что происходит в сцене для того качества и чистоты картинки, который ты указал. Но, чтобы изучить сцену, мне пришлось местами использовать все 10000 Primary Samples с 1 Secondary Samples на свет, GI и материалы.»

Смотрим на Вариант 1 и видим, что результат значительно лучше, чем был на базовом рендере. Время рендера заметно увеличилось до 11 минут 44 секунд (в 9,8 раз дольше). Шума практически нет. Большинство людей на этом этом посчитают что этого достаточно для финального просчета.

Давайте сравним с вариантом 2, о котором говорили ранее. Посмотрим, что произойдёт, если вместо увеличение AA Max Subdivs, увеличим значения сабдивов в источниках света, GI и материалах.


Пример сцены (вариант 2): увеличение количества сабдивов в источниках света, GI и материалах

На этот раз попробуем подойти к визуализации по-другому — поставим значение Primary Samples таким, каким оно было в базовых настройках, но добавим Secondary Samples, чтобы получить больше информации со всей сцены.

- оставляем Image Sampler (AA) на базовых параметрах 1min & 8max Subdivs;

- увеличиваем количество сабдивов в ИС, GI и материалах до 80 Subdivs каждый;

- оставляем Noise Threshold 0.01 (по умолчанию).

vray_optimization_figure_05

Что же происходит во втором варианте? При таких параметрах мы говорим V-Ray:

«Я разрешаю тебе использовать до 64 (8 subdivs) Primary Samples (AA) на пиксель, чтобы выяснить, что происходит в сцене и уменьшить шум, чтобы попасть в заданный порог шума. Также ты получаешь до 100 Secondary Samples, чтобы собрать информацию о свете, GI и материале каждого объекта».

Вспоминаем, что GI, материалы и свет в общей сумме сейчас имеют 64000 семплов (80 сабдивов) каждый. V-Ray автоматически делит каждое это значение исходя из AA Max Samples, установленного в вашей сцене. И несмотря на 6400 семплов, оно делится AA Max 64 семпла (8 сабдивов), и только 100 для Secondary Samples для света, GI и материалов (для каждого). (6400 Secondary Samples / 64 Primary Samples = 100 Secondary Sample).

V-Ray заканчивает рендер так хорошо как может, говоря таким образом:

«Я был в состоянии понять, что происходит в сцене исходя их уровня качества noise threshold, который вы установили. По факту, большую часть времени, я должен был использовать все 64 Primary Samples на пиксель. И 100 Secondary Samples для света, материалов и GI.

Мы видим, что шумы ушли, но время рендера увеличилось в 4,5 раза (4 минуты 38 секунд) в сравнении с базовым рендером.

Но если мы сравним с вариантом 1, мы увидим, что вариант 2 дал нам результата чище и отрендерил в 2,2 раза быстрее. vray_optimization_figure_06

Почему так? Почему увеличение настроек в разделе DMC Sampler (светильники/GI/сабдивы материалов), а не увеличения настроек сэмплов изображения (AA) приводит к более чистому и аккуратному рендерингу для этой сцены? Мы даже можем установить на варианте # 1 более низкий порог шума, но она по-прежнему оказалась более шумной, чем вариант # 2! Ответ в разделе о базовом рендере…


Как работает оптимизация

В базовом рендере мы видим, что грани объекта выглядят хорошо, шум присутствует в отражениях и тенях. Как вы помните, Primary Samples (AA) служат для вычислений основной геометрии сцены, текстур, глубины резкости и motion blur в сцене. Тогда как Secondary Samples отвечают за GI, свет, материалы и тени.

Чтобы избавиться от шума, необходимо сделать выбор между вариантом 1 и 2. Зачем использовать отвертку, чтобы сделать работу молотка? Image Sampler (AA) уже сделал то, для чего он был создан — сделать детализацию геометрии (край объектов) чистой и бесшумной. Таким образом, вместо того, вместо того, чтобы запускать кучу дополнительных Primary Samples (AA) в сцену, чтобы убрать шум, лучше добавить сэмплов в DMC Sampler (свет / GI / Материалы), пусть он делает то, для чего он был разработан — убирает шум в тени, освещении, GI, отражениях и преломлениях. Вот наш ответ!

А теперь мы можем понять, почему «универсальные V Ray-Настройки» не будут наиболее эффективным методом для рендеринга. На самом деле, он никогда не был предназначен, чтобы быть достаточно эффективным! Универсальные настройки V-Ray были разработаны, чтобы сделать V-Ray доступным и легким для пользователей, которые не заботятся об оптимизации и не смотрят глубже в работу V-Ray. Это простой способ поставить V-Ray на автопилоте. При регулировании Primary Samples пользователю достаточно для контроля визуализации одного параметра — noise threshold. Если слишком много шума в визуализации, просто понижаем noise threshold, и V-Ray будет посылать лучи Primary Samples (AA) пока ему будет разрешать значение noise threshold.

Но мы можем ещё больше оптимизировать вариант 2! От 5 минут 58 секунд до 4 минут 53 секунд при незначительном увеличении шума.

vray_optimization_figure_07

Вариант № 1. Cлева, и Вариант № 2 Рендер оптимизирован еще больше — справа. Скорость рендеринга увеличена в 2.7x!

Вот еще один пример оптимизации, на этот раз более ориентированный на производительность сцены.

Оптимизированная визуализация (справа) считается почти на 35% быстрее, чем универсальные настройки рендеринга (слева) при одновременном снижении шума и улучшении качество рендеринга. Также отметим, как отражения стали более точными — заметно на полу к концу коридора.

vray_optimization_figure_08

«Универсальные V Ray-Настройки» слева, и оптимизированный рендер справа.


Определяем источники шума

Ключ к правильной оптимизации визуализации заключается в том, чтобы правильно определить, какие аспекты сцены вызывают шум, затем поиск источника шума и его исправление. Некоторые сцены потребуют больше лучей для Image Sampler, в то время как другие (например, те, которые показаны в приведенных выше примерах) потребуется большее количество лучей для DMC Sampler.

Общие принципы.

Условия, при которых изображение Sampler (AA) потребуют большего количества Image Sampler (AA) для устранения шума:

- точная геометрическая деталь, как волосы, трава, листва и т.д;

- очень тонкая детали на текстуре: переплетения, крошечные детали, карта рельефа и т.д;

- сцены с малой глубиной резкости или сильным Motion Blur.

Условия, где DMC Sampler потребуют большего количества вторичных проб для устранения шума:

- большие источники света, которые бросают мягкие тени;

- материалы с сильным глянцевым отражением и преломлением;

- сцены с видимым Global Illumination (особенно рендер в помещении).

Шум, вызванный Image Sampler (AA) виден сразу невооруженным глазом. Он проявляется в неровных или неясных краях объекта, неопределенной детализации текстуры или эффекты такие, как «moiré patterns», зернистой глубины резкости или размытия движения. Шум, вызванный DMC Sampler найти немного сложнее. К счастью, мы можем разобраться с V-Ray — элементами: освещение, глобальное освещение, зеркальность, отражение и преломление. Просматривая эти различные элементы визуализации, вы можете быстро управлять ими и проверять уровень шума.

vray_optimization_figure_09

Глядя на отражение визуализации элемента, мы можем видеть количество шума, вызванного только отражениями материалов.


Читайте вторую часть Оптимизация V-ray.

Хотите знать больше? Приходите на наши курсы 3D-моделирования, скульптинга, композитинга и анимации.

 

Перевод: Simply_Better

ИСТОЧНИК

Вас могут также заинтересовать:

Тэги: , , , , , , , , , ,


Присоединяйтесь к нашему сообществу вКонтакте и читайте свежие новости и статьи о мире 3D