Текстурирование реалистичной бутылки с ядовитой настойкой, вдохновлённой культурой Карпат.
Андрей Сопилюк подробно рассказал о своей настройке шейдеров и процессе рендеринга в Blender для бутылки, принадлежавшей карпатскому разбойнику XIX века, который варил смертельные настойки и собирал зубы своих жертв.


Введение
Здравствуйте! Я Андрей Сопилюк, 3D-художник-самоучка из Украины. Недавно я прошёл интенсивный курс по текстурированию в Varto School, и это был мой первый опыт участия в структурированном мастер-классе. В этой статье я хотел бы рассказать о рендеринге и постобработке моего последнего произведения — «Зелье Змея».
Первое, что стоит упомянуть, — модель, включая моделирование, скульптинг, UV-развёртку и запекание, была создана моим наставником Дмитрием Михайликом. Моя задача заключалась в том, чтобы наложить текстуры и выполнить рендеринг.
Все участники работали с одной и той же 3D-моделью, но каждый студент создал свою уникальную версию, применив собственные текстуры и рассказав свою историю с помощью ассета. Сейчас вы можете найти множество творческих вариаций этой бутылки, опубликованных другими студентами. Я был бы благодарен, если бы вы нашли время изучить их на странице Varto School ArtStation.
Эта статья будет посвящена исключительно техническим аспектам моего проекта. Я не буду рассказывать о сборе референсов, источниках вдохновения или творческой концепции ассета. Также не буду вдаваться в процесс текстурирования или советы по рендерингу, которые уже были освещены во время курса. Вместо этого я выделю личные штрихи, которые добавил, части, которыми я больше всего рад поделиться. Основное внимание здесь уделено рабочему процессу рендеринга, настройке шейдеров и постобработке. Моя основная цель на этапе рендеринга заключалась в том, чтобы добиться реалистичного вида, сохраняя при этом некоторый художественный контроль над конечным результатом. Стоит отметить, что я ни в коем случае не эксперт в работе с узлами или рендеринге, всё, чем я делюсь здесь, — результат бесчисленных часов проб и ошибок.




Настройка сцены окружения в Blender
Я начал работать над этапом рендеринга параллельно с текстурированием, чтобы убедиться, что окружение и текстуры будут органично сочетаться. Первое, что я сделал, — привязал все объекты бутылки к пустому. Это позволило мне экспериментировать с разными положениями реквизита и использовать ключевые кадры для сохранения местоположения и поворота.
HDRI
Для фона окружения и базового освещения я использовал Day Environment HDRI 050 от ambientCG.
Что касается настроек, я разделил интенсивность видимого фона и света, который рассеивается на сетках, с помощью быстрой настройки узла:


Что это мне дало? Лучший контроль над отделением основного объекта от фона. Посмотрите на это сравнение. Как видите, второе изображение выглядит более приятно для глаз, а силуэт бутылки выделяется гораздо чётче.
Солнечный свет и тени
Если присмотреться, можно заметить, что тени имеют мягкие края с тёплым оттенком. Я добился этого, используя два источника солнечного света. Второй источник света привязан к первому, поэтому они всегда имеют одинаковое местоположение и поворот. Основной свет создаёт резкие тени из-за своего узкого угла в 0,15 градуса и цветовой температуры 6000К. Второй солнечный свет имеет более широкий угол в 1 градус и температуру 4500К, что помогает смягчить тени и добавить теплоты.
В зависимости от ситуации интенсивность второго света делится на 2 или 3.
Тени были созданы с помощью моделей деревьев. Одна важная деталь — варьировать расстояние между листьями и землёй, это помогает создавать как резкие, так и мягкие тени. В реальной жизни вы часто можете заметить этот эффект под деревьями: чем ближе листья к земле, тем резче тень, а более высокие листья создают более мягкие, рассеянные тени.
Листья видны и на фоне, что придаёт немного больше глубины HDRI и приятное боке при взаимодействии со светом.

Улучшение текстур модели Megascans
Я использовал модель бочки из Quixel Megascans в качестве пола для сцены. Однако мне понадобились более резкие текстуры для некоторых крупных планов. Поэтому я отделил только верхнюю часть бочки, переупаковал UV-развёртку и запек текстуры с оригинальной модели, используя Marmoset Toolbag.
Текстуры уже выглядели более чёткими после запекания, но я немного улучшил их в Substance 3D Painter. Как видите, нижняя часть бочки выглядит более размытой по сравнению с верхней.

Другие детали сцены окружения
Мелкие детали, такие как обломки, листья, сосновые иголки, ветки и паутина, способствуют созданию более естественной и правдоподобной лесной сцены. Я много экспериментировал с различными настройками освещения, HDRI и элементами сцены, например, пробовал камни или пни вместо бочки. Если вы работаете над окружением и вам не нравится, как оно выглядит, не бойтесь переделывать. Каждая новая итерация, скорее всего, будет улучшением. Просто не забывайте сохранять резервные копии версий, которые вам понравились, на этом пути.
Настройка сцены студии
Очень простая сцена с HDRI студии в качестве основного источника света, но с некоторыми дополнительными настройками. Оба узла Multiply Mix добавляют больше глубины сцене, увеличивая глянцевость, а также добавляя немного синего оттенка.

Видимый пол — это просто простая плоскость с плавным изгибом. Обязательно добавьте потолок, это сильно меняет дело, создавая больше теней и не позволяя фону выглядеть просто белым. И это, в принципе, всё о настройке сцены. Она довольно проста, так что теперь давайте перейдём к более сложной части: настройкам шейдера.
Настройки шейдера
Ткань
Я хотел подчеркнуть силуэт, не добавляя в сцену фактический краевой свет. Поэтому я создал краевой эффект непосредственно в шейдере, используя излучательный шейдер с альбедо в качестве цвета, затем смешав его с текстурами ткани и используя маску Френеля для управления видимостью.

Бумага
Бумага, как и многие другие материалы, пропускает свет. Самый простой подход — смешать Principled BSDF шейдер с Translucent BSDF, но я хотел больше художественного контроля, поэтому применил эффект только к краям. Применение полупрозрачности по всей поверхности привело к тому, что некоторые мелкие детали, например, текст на бумаге, стали слишком размытыми, чего я хотел избежать.
Чтобы выделить края, я использовал комбинацию узла Vector Math, настроенного на Dot Product, и узла Bevel. Затем я смешал этот результат с текстурой альбедо, чтобы помочь сохранить самые яркие детали поверхности. Для цвета полупрозрачности я использовал альбедо с высоким значением интенсивности 15, что делает эффект гораздо более ярким на финальном рендере.

Минералы
Настройка узлов для этого материала довольно плотная, так что давайте разберёмся.
Я начал со смешивания Glass BSDF и Refraction BSDF, убедившись, что вход Roughness подключён, и настроил яркость и насыщенность альбедо, чтобы получить желаемый вид.
Затем я добавил едва заметный эффект краевого света, аналогичный тому, что использовал в шейдере ткани. Чтобы добавить немного пыли поверх минералов, я использовал чёрно-белую маску, созданную в Substance 3D Painter, ничего особенного, просто комбинация позиционной маски и нескольких текстур граунжа.
Финальная часть шейдера отвечает за цветные тени. Хотя Blender может их рендерить, эффект получается крайне слабым, а рендеринг — очень медленным. Чтобы подделать его, я использовал дополнительные узлы для более эффективной имитации эффекта цветных теней. В качестве завершающего штриха я добавил объём внутри минералов, чтобы придать им дополнительную глубину. Если вы делаете подобную настройку, убедитесь, что в настройках Light Paths включён Volume (обычно достаточно 2–3 образцов).

Взгляните на сравнение только смеси Glass и Refraction с завершённым шейдером:
Стекло
Шейдер начинается с простого смешивания Glass BSDF и Refraction BSDF, но с отдельным узлом Glass, используемым для задних граней, чтобы помочь уменьшить артефакты карты нормалей. После этого я ещё раз добавил эффект краевого света, используя Emission. В этом случае эффект довольно заметен, вы можете увидеть сравнение на GIF ниже.
Затем я всё смешал с Principled BSDF, чтобы убрать шейдер стекла в областях, покрытых пылью.
Для маски пыли я использовал альбедо самого стекла, поскольку пыльные участки выглядят гораздо темнее по альбедо. Я просто ограничил значения, чтобы выделить их.
Кроме того, я экспериментировал с настройкой прозрачных теней. Хотя на финальных рендерах это не имело большого значения, поскольку бутылка обмотана тканью, это сработало на удивление хорошо в качестве теста имитации стеклянных теней. Идея заключается в том, чтобы устранить внутренние стеклянные тени, сохранив только внешний контур, имитируя поведение реального стекла (но без сложности каустик). Я обнаружил это случайно во время экспериментов с настройками узлов и обязательно буду использовать в будущих проектах.

Верёвка
Не только настройки шейдера, но и геометрия. Я создал небольшие волокна и свободные нити на верёвке с помощью инструмента Quick Fur в Blender. Затем я улучшил результат с помощью нескольких модификаторов: Trim, Set Hair Curve Profile, Interpolate, Noise, Frizz и Shrinkwrap. Для материала я использовал смесь Transparent BSDF и Hair BSDF, установив цвет в соответствии с верёвкой. Эта тонкая деталь помогла сделать материал более осязаемым и правдоподобным, особенно в крупных планах.
Создание реалистичной камеры
Одно из моих увлечений в реальной жизни — фотография, и я всегда хотел иметь более реалистичное управление линзами в 3D. Со временем я экспериментировал с разными методами, включая моделирование самой линзы с точными значениями IOR для стекла. Хотя этот подход технически работал, им было невероятно сложно управлять, и он был слишком требовательным к производительности для практического использования в реальном проекте.
Недавно, благодаря рекомендации друга, я обнаружил дополнение Lens Sim для Blender. Дополнение предлагает полностью настраиваемые настройки объектива, хроматическую аберрацию, виньетирование, искажения, мягкость объектива и многое другое. Хотя оно всё ещё находится в разработке и имеет некоторые недостатки, это уже очень мощный инструмент, и теперь я не могу представить работу над рендером без него. Для рендеринга окружения я использовал пресет Helios-44. Это объектив, которым я владею, и он мне очень нравится за его уникальный характер в реальной жизни.
Дополнение включает в себя широкий спектр настроек, но для этого проекта я добавил грязь на линзе, небольшое количество размытия (0,01) и бликов (0,1), чтобы внести незначительные несовершенства. В интернете не так много технических данных о моём конкретном варианте Helios-44, это довольно старый объектив, поэтому я не стал настраивать отдельные элементы стекла. Однако я немного изменил значения Аббе, чтобы воспроизвести искажённый вид хроматической аберрации. В предыдущем личном проекте на ArtStation я также пытался воссоздать тот же эффект хроматической аберрации, но вместо изменения значений Аббе я использовал настройки Custom Ramp.
Как и в реальной жизни, хроматическая аберрация в 3D слегка размывает изображение, ведь это несовершенство линзы. Однако я всё равно хотел показать созданные мной текстуры без этого размытия. После множества настроек и тестовых рендеров я в итоге остановился на простом решении: рендеринг двух отдельных версий кадра, одной с включенной хроматической аберрацией и одной без неё. Это не самый физически точный метод, но, как я уже говорил в начале, я люблю сохранять некоторый художественный контроль в своих рендерах, и это был один из таких случаев.
Единственный минус — фокус немного смещается между двумя версиями, но это не будет заметно в итоговом результате. Осталось объединить эти рендеры, о чём я расскажу позже.
Рендеринг и настройки
Как я уже говорил, я рендерю две версии каждого кадра. Основная версия — без хроматической аберрации, чтобы сохранить как можно больше деталей.

Вкладка «Рендеринг» (Render tab), настройки варьируются в зависимости от кадра, но обычно я начинаю с конфигурации, показанной выше, и корректирую её.
Я понижаю значение Noise Threshold до 0,025, когда мне нужно больше деталей или если рендер кажется слишком шумным. Аналогично я могу увеличить количество сэмплов до 1000 для кадров, содержащих мелкие детали, требующие большего количества сэмплов, но в этом случае убедитесь, что Noise Threshold не установлен слишком низко, иначе время рендеринга резко увеличится.
Для второго рендера с хроматической аберрацией Noise Threshold 0,1 и 200 сэмплов более чем достаточно. Я также включаю Fast GI Approximation для этого рендера, чтобы ускорить процесс. Это вносит некоторые различия, но они незаметны на итоговом изображении после постобработки.
В разделе Light Paths я устанавливаю диффузное и глянцевое отражение на 3–4, что в целом достаточно. Объёмные отскоки установлены на 3, что необходимо для правильной глубины и освещения в шейдере минералов.
Для ограничения, установив значение Indirect Light равным 15, помогает сохранить немного больше информации о бликах, но имейте в виду, что это может привести к появлению большего количества «светлячков». Во вкладке Film я уменьшаю ширину пиксельного фильтра до 0,7, чтобы получить более резкие рендеры. Я экспортирую как шумную, так и шумоподавленную версии изображения в формате TIFF. Кроме того, я генерирую чёрно-белые маски Cryptomatte для ключевых элементов, таких как бутылка, бочка и паутина, которые используются на этапе постобработки.
Постобработка в Photoshop
Этап, который, к сожалению, многие художники склонны упускать из виду. Вот мой алгоритм для окончательной доработки рендеров:
- Смешивание шумных и шумоподавленных изображений;
- Добавление хроматической аберрации;
- Небольшие корректировки температуры и калибровки с помощью Camera Raw;
- Добавление резкости;
- Незначительные цветовые настройки с помощью Color Balance и Color Lookup для обеспечения согласованности цветов на кадрах;
- Добавление зернистости.
Я сильно полагаюсь на Smart Filters для многих слоёв, это очень мощный инструмент. По какой-то причине многие люди либо боятся их использовать, либо просто не знают, как они работают. Если это так, я настоятельно рекомендую узнать больше о Smart Filters, они дадут вам гораздо больший контроль над вашими слоями.
Для первых двух слоёв я размещаю очищенное от шума изображение поверх зашумлённого примерно с прозрачностью 80%. Затем, используя маски, я выборочно убираю эффект шумоподавления там, где он становится слишком сильным и размытым, сохраняя оригинальные детали.
Хроматическая аберрация
Как упоминалось ранее, я рендерю второе изображение с хроматической аберрацией в более низком качестве, чтобы сократить время рендеринга. Чтобы исправить неточности фокусировки и сохранить детали, я дублирую слой с хроматической аберрацией и группирую обе копии вместе, устанавливая прозрачность группы на 80%.
Режим наложения цвета для первого слоя установлен на «Цвет», в то время как для второго слоя используется «Яркость» со сниженной прозрачностью до 20%. Затем я применяю чёрно-белую маску бутылки к группе, чтобы убрать хроматическую аберрацию с поверхности бутылки, сохраняя текстуры чёткими. Однако я сохраняю небольшое количество эффекта на краях объекта и в ярких пятнах, где хроматическая аберрация наиболее заметна, чтобы бутылка не выделялась неестественно на фоне.
Посмотрите на сравнение между изображением, очищенным от шума, и завершённым изображением с хроматической аберрацией.
Базовая цветовая калибровка
Я применяю небольшие правки с помощью Camera Raw, чтобы настроить температуру и точно настроить цветовую калибровку. Поскольку моя сцена почти полностью заполнена листвой, финальные рендеры имеют тенденцию выглядеть слишком зелёными. Это мой обычный способ балансировки общего цвета.
Резкость
Резкость — это очень мощный инструмент, который нужно использовать осторожно, так как при чрезмерном использовании он может легко испортить рендер. Есть несколько способов добавить резкость, включая настройки Camera Raw, фильтр «Резкость» или «High Pass», который является моим предпочтительным методом. Почему «High Pass»? Потому что он предлагает лёгкий контроль над прозрачностью, режимом наложения и, что наиболее важно, радиусом резкости, который можно настроить в любое время при использовании с «Умными фильтрами».
Обычно я работаю с тремя слоями резкости, настроенными примерно на 70% прозрачности:
- Первый слой имеет радиус, установленный на 1, и влияет на всё изображение;
- Второй слой использует радиус 3, с применением маски к краям основного объекта и другим областям, которые я хочу выделить;
- Третий слой имеет радиус от 7 до 15, в зависимости от кадра, и замаскирован так, чтобы воздействовать только на определённые детали, такие как минералы, металлические провода, резьба по дереву, а также края некоторых тканей и бумаги.
Маскирование
Маски могут кардинально изменить вид рендера. Они позволяют отделить основной объект от фона и добавить глубины за счёт выборочного увеличения или уменьшения яркости в определённых областях. Мой любимый способ использования масок — это добавление слоёв настройки кривых и настройка только средней части кривой, либо поднимая её, либо опуская. После этого я рисую маску слоя, чтобы точно контролировать, где применяется эффект. Я также использую маски, экспортированные из Blender после рендеринга.
Цвета
Следующий шаг — добавление окончательной цветовой коррекции. Я использую несколько слоёв «Цветовой баланс», чтобы добиться желаемого вида, а также настройку «Поиск цвета», установленную на «Убрать синий», но с низкой прозрачностью.
Финальный слой «Цветовой баланс» помогает согласовать все рендеры между собой. Поскольку в каждом кадре используются разные позиции солнца и HDRI, цвета различаются на изображениях. Чтобы обеспечить согласованность, я открываю все рендеры в Photoshop рядом, используя «Окно» > «Макет» > «Плитка». Таким образом, я могу работать над всеми ними одновременно и убедиться, что цвета идеально совпадают.

Зерно
Наконец, один из самых важных шагов — добавление зерна. И нет, не шум прямо из Blender или другого программного обеспечения для рендеринга. Каждая реальная камера, будь то профессиональная или дешёвая телефонная, вносит некоторое зерно в свои изображения. Часто это зерно содержит цветовые артефакты, но я предпочитаю добавлять только монохроматический вариант, чтобы не испортить текстуры.
Я начинаю с 50% серого заливного слоя и добавляю зерно с помощью Camera Raw. Затем я дублирую этот слой, применяю немного другие настройки зерна, регулируя «Размер» и «Шероховатость», и смешиваю оба слоя, используя текстуру «Гранж». Финальный эффект — неровный узор зерна, который я устанавливаю в режиме наложения «Overlay».
После анализа некоторых реальных фотографий я заметил, что зерно имеет тенденцию быть гораздо более заметным в тенях, чем в светах. Чтобы воспроизвести это, я снова дублировал слой зерна, изменил режим наложения на «Мягкий свет» и замаскировал теневые области изображения с помощью «Выделение» > «Цветовой диапазон». В настройках я переключил «Выделение» на «Тени» и снизил «Диапазон» до 0, контролируя плавность перехода между светом и тенью с помощью ползунка «Нечёткость».
Заключение
Вот и всё, полный разбор моего процесса рендеринга и затенения. Многие детали пришлось опустить, чтобы статья была краткой, но я надеюсь, что это даст вам чёткое представление о моём подходе и техниках.
К сожалению, из-за ограничений формата .gif многие детали теряются на сравнительных изображениях. Если вы хотите рассмотреть их поближе, я загрузил все исходные изображения на Google Drive. В папке вы также найдёте несколько сравнений рендеров в полном качестве, как необработанных рендеров прямо из Blender, так и финальных, отредактированных версий. Не стесняйтесь изучать их более подробно.
Я не могу обсуждать эту тему. Давайте поговорим о чём-нибудь ещё.Автор: Andriy Sopyliuk
Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.