Skills Up School
Меню

Нажмите ESC для закрытия

Арт окружения30 сентября 2025 г.

Разбор.

Во второй части Фернандо Агилера Рейес рассказал нам о шейдерах в своём проекте «Утренняя ведьма», объяснил настройки освещения и рендеринга и показал, как сделать светящихся котов.

Разбор.

Настройка затенения и рендеринга

Этот проект разделён на 5 различных слоёв цветного рендеринга, каждый со своим шейдером. Я делаю это, чтобы потом иметь максимальный контроль при компоновке. Некоторые из моих элементов (например, aiToon и displacement) имеют много случайностей, и иногда проще удалить или исправить их позже во время компоновки.

Breakdown: - изображение 1

Для затенения я дублирую свою серую систему освещения на случай, если мне нужно будет настроить интенсивность или изменить положение определённых источников света. Я также дублирую свои геометрии для каждого слоя рендеринга. Эти геометрии никогда не рендерятся вместе в одно и то же время. У меня низкие технические характеристики, и это позволяет избежать катастрофических ошибок, когда внутри сложных слоёв происходят большие изменения материалов. В профессиональной настройке с использованием Gaffer или Katana такой рабочий процесс намного проще, и мне не понадобился бы этот обходной путь. Но сейчас я адаптируюсь к имеющимся у меня инструментам.

Breakdown: - изображение 2

Базовый слой

Это самый простой проход в проекте. Шейдер использует чистые наборы текстур без больших корректировок. Единственная хитрость здесь заключается в том, что диффузная текстура также подключена к атрибуту излучения. Это делает изображение немного более плоским, чем обычно, и помогает избежать появления тёмных пятен без добавления дополнительных непрямых источников света.

Breakdown: - изображение 3
Breakdown: - изображение 4

Трипланарные текстуры

Breakdown: - изображение 5
Breakdown: - изображение 6
Breakdown: - изображение 7

Здесь вы можете увидеть проекционную текстуру, подключённую к моему ID1 (который позже я назвал «placeBase»). Обычно я использую это для модификации смещения в моих материалах. В этом проекте я не использовал это для основы, но я всё равно экспортировал это как AOV на случай, если это пригодится позже в Nuke.

Я группирую проекционный узел с небольшой анимацией цикла, чтобы позже добавить другие проекционные узлы в ту же группу.

Breakdown: - изображение 8

Точки

Breakdown: - изображение 9

Здесь я начинаю накладывать стилизацию, используя полный набор текстур. Я не сильно изменил вклад в зеркальное отражение или диффузию, но немного поиграл со значением излучения. Незначительное его увеличение делает материал более плоским, чем базовый слой.

В этом проходе я также начинаю работать с масками для непрозрачности и трипланарами для нормалей и смещения.

Breakdown: - изображение 10
Breakdown: - изображение 11

Маски и непрозрачность

Breakdown: - изображение 12

На изображении выше показано, что подключено к атрибуту непрозрачности этого шейдера. Узел файла содержит нашу mask01, которая выглядит так:

Breakdown: - изображение 13
  • Красный → информация о светлых точках
  • Зелёный → информация о тёмных точках
  • Синий → информация о краях

Затем я выделяю каналы с помощью aiShuffles. Таким образом, я могу разделить информацию о красном, зелёном и синем цветах на разные узлы.

Breakdown: - изображение 14

Затем я подключаю эту альфа-информацию к aiLayer, который управляет непрозрачностью:

Breakdown: - изображение 15

Наш слой 1 — это просто чисто чёрный цвет, поскольку нам нужно только нести информацию о непрозрачности для точек. Слои 2 и 3 содержат фактические данные о точках, поэтому я подключу их соответствующие aishuffles к смеси, установлю операцию на перезапись и подключу чисто белый цвет. Если я хочу, чтобы один из слоёв точек был менее заметным, я могу заменить белый цвет на более тёмный, что сделает этот слой более прозрачным.

Слой 4 пока отключён, поскольку его синий канал несёт информацию о краях, которую мы пока не используем. Я всё равно оставляю его подключённым; это облегчит задачу позже, если я захочу продублировать эту настройку и настроить её дополнительно.

Маски и смещение

Теперь мы собираемся использовать анимированную трёхплоскостную текстуру, чтобы повлиять на наше displacement geo. Для трёхплоскостной текстуры я выбрал размер, который вы можете увидеть на изображении ниже.

Breakdown: - изображение 16

Как и раньше, я соединяю текстуры в aiShuffles, разделяю их на слои, затем подключаю к aiLayerRGB, чтобы изменить интенсивность моего displacement.

Breakdown: - изображение 17

И теперь мы собираемся подключить наши aiShuffles к нашему aiLayerRgb.

Breakdown: - изображение 18
Breakdown: - изображение 19

Одно большое отличие здесь: базовый цвет установлен на 0,500 серого. Это потому, что моё значение скаляра смещения равно 0,500, что позволяет движение как вверх, так и вниз. Оттуда каждый слой добавляет или вычитает небольшое количество информации RGB, создавая приятные случайные неровности поверхности.

Breakdown: - изображение 20

Маски и нормали

Настройка нормалей почти идентична настройке displacement, но с небольшими корректировками.

Breakdown: - изображение 21
Breakdown: - изображение 22

Я добавил дополнительный слой между сплошным цветом (слой 1) и трёхплоскостными текстурами (слои 3–5). Слой 1 — это просто базовый цвет нормали (R.5, G.5, B1). Слой 2 — это исходная текстура нормали Substance 3D Painter. Это даёт мне возможность сохранить или полностью отключить исходные значения.

Кроме того, я смешиваю несколько серых цветов, чтобы мягко сдвинуть значения нормалей. В реалистичном затенении вы никогда не коснётесь синего канала, но в NPR я могу немного поэкспериментировать.

Для этого проекта работа с нормалями выполнена тонко. Я использовал общую интенсивность нормалей всего 0,200.

Breakdown: - изображение 23

Основные моменты

Breakdown: - изображение 24
Breakdown: - изображение 25
Breakdown: - изображение 26

Этот проход следует той же логике, что и слой рендеринга точек, с небольшими изменениями параметров. Ключевое отличие состоит в том, что здесь я использую mask02 и mask03 для прозрачности, а также другой размер трёхплоскостной текстуры для нормалей и displacement.

Breakdown: - изображение 27

Края

Breakdown: - изображение 28

Опять же, тот же общий процесс. Для прозрачности я использую синий канал mask01. Для displacement и нормалей я использую анимированную трёхплоскостную текстуру.

Этот проход имеет самые высокие значения эмиссии и самый низкий вклад зеркального отражения.

Туманные края

Breakdown: - изображение 29

Это единственный проход, который использует aiToon, и он рендерится отдельно со специальными настройками.

Сначала я изменяю тип фильтра на контурный и увеличиваю ширину до 3,00. Это заставляет рендер использовать ширину краёв для альфа вместо альфа геометрии.

Breakdown: - изображение 30

Для затенения я подключаю диффузный цвет из All Texture Set к атрибуту цвета края. Для displacement я повторно использую ту же трёхплоскостную текстуру, что и в шейдере Edges, чтобы всё соответствовало, но с меньшей интенсивностью, поскольку aiToon более деликатен.

Breakdown: - изображение 31
Breakdown: - изображение 32

Слои рендеринга

Breakdown: - изображение 33

В конце я разделил свою сцену на семь различных слоёв рендеринга. Первые два — это серый рендер и каркасный проход для моих разбивок, а последние пять — это мои цветовые слои. Слой выделения изначально назывался «specs». Как только всё было настроено, я перешёл к компоновке в Nuke.

Nuke

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

После этого я добавляю небольшие края в Nuke и объединяю все слои рендера.

Световые проходы

Breakdown: - изображение 34

Теперь, когда у меня есть прочная основа, пора добавить несколько интересных эффектов в Nuke. Самый важный эффект здесь — это световые проходы. Я применяю тот же метод изоляции моих RGB-каналов, но на этот раз переключаюсь между тремя каждые 4 кадра. Это придаёт текстуре едва заметную анимацию.

Breakdown: - изображение 35

Текстура разделена на перестановки и переключается с помощью разных узлов переключения каждые 4 кадра.

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

Свечение (или как сделать часть с кошками)

Здесь мы наконец-то поговорим о звёздах шоу: кошках. Сначала мои контурные края, сделанные с помощью aiToon, не работали, поэтому мне пришлось создавать их для кошек напрямую в Nuke. Изначально это был просто placeholder, но контуры получились настолько хорошо, что я решил оставить их.

Для кошек я использовал Cryptomatte, чтобы выделить геометрии, для которых я хотел сделать контур (B). Затем я использовал узел расширения (dilate node), чтобы расширить их альфы (C), и вычел из него исходную альфу, получив внешний контур (D). Вот как узлы выглядели бы в Nuke (A).

Breakdown: - изображение 36

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

Breakdown: - изображение 37
Breakdown: - изображение 38

Теперь, когда у меня был контур с некоторым цветом, я выделил эту часть, добавил эффект свечения и объединил обратно в композит. Узлы выглядели примерно так:

Breakdown: - изображение 39
Breakdown: - изображение 40
Breakdown: - изображение 41

Я применил этот эффект и к другим объектам в моём композите: волосам, блёсткам, фальшивым световым проходам и т. д.

И после всего этого я сделал последний проход цветокоррекции и балансировки, и вуаля: рендер наконец-то готов!

Заключение

Работать над этой статьёй было непросто. У меня ушло около полутора месяцев, разбитых на разные отдельные интервалы, чтобы наконец закончить её.

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

Мой совет начинающим художникам: работайте над несколькими проектами одновременно и с разным уровнем сложности. Думайте о своём портфолио в целом, а не как о единственном шедевре, который изменит вашу жизнь. Я вижу, как много людей пытаются создать тот самый идеальный проект сразу, а затем разочаровываются, когда он оказывается не безупречным или на его завершение уходит целая вечность. Вместо этого относитесь к проектам так, как вы относитесь к тренировкам: не влюбляйтесь в результаты, влюбляйтесь в процесс практики и развития своих навыков. Результаты придут естественным образом.

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

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

Спасибо вам!

Фернандо Агилера Рейес, 3D-артист

Интервью проведено Глорией Левин

Автор: Fernando Aguilera Reyes

Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.