Для чего нужен substance designer
Adobe Substance Designer. Процедурное текстурирование
Алексей Баукин, инструктор Substance Designer в Realtime School
В метафизической философии Субстанция — неизменная сущность вещей
Давайте поговорим о текстурировании. Качество и вау-эффект любой 3D-картинки, от простого рендера до киношных спецэффектов или виртуальных игровых миров, напрямую зависит от того, насколько хорошо сделаны, подобраны и наложены текстуры. С текстурами — как с ремонтом: хороший отделочник сделает конфетку из самого убитого помещения, плохой маляр с ведром зеленой или серой краски превратит любой шедевр архитектуры в унылое ничто — вспомните окружающий нас ЖКХ-арт. Поэтому говорить о важности текстурирования бессмысленно, а вот о методах и приемах — очень даже полезно.
Компания Adobe с недавних пор предлагает целый комплект дополняющих друг друга инструментов для текстурирования 3D-моделей под общим названием Adobe Substance. Substance? Да-да, где-то мы это слышали раньше… Oh wait! Это же известный еще с 2003 года Allegorithmic, в 2019 году влившийся в плеяду творческих инструментов компании Adobe.
Основная особенность всего этого инструментария — процедурность, делающая процесс текстурирования максимально гибким. В состав Adobe Substance входит:
Substance Designer создает материалы процедурно, что позволяет полностью контролировать и недеструктивно редактировать готовый материал на любом этапе рабочего процесса. Кроме этого, он умеет:
Как работает Substance Designer?
Те, кто пробовал текстурировать в Photoshop, знают, что там почти все построено на слоях и модификаторах их свойств. В нашем случае система слоев с модификаторами никуда не делась, преобразовавшись в ноды, связанные между собой в логические цепочки:
Узнаете Levels из фотошопа?
Ноды — это схематичное отображение всей последовательности действий для генерации текстуры. Каждая нода совершает какое-либо действие над проходящими через нее данными. Результат на выходе одной ноды подается на вход другой (или нескольких), и мы формируем логическую последовательность действий, приводящую нас к готовому результату. Система нод вовсе не такая жуткая, как может показаться на первый взгляд:
Главное качество нодовой системы — недеструктивное редактирование: текстура генерируется в реальном времени, и при изменении любого параметра любой ноды все последующие немедленно перестраиваются, исходя из изменившихся данных на входе. Таким образом, мы управляем процессом в real time, делая его невероятно гибким.
Ноды делятся на несколько видов:
Много нод — это хорошо, но как это поможет сделать материал?
Зная разновидность и «поведение» нод, можно вывести группы, из которых состоит наша структура:
С чего начать?
Для работы с Substance Designer понадобятся базовые знания о текстурных картах PBR, референсы того, что вы будете рисовать, и понимание инструментов управления нодами. Если текстурные карты и виды PBR можно коротко описать картинкой ниже, то на инструментах стоит остановиться подробнее.
Источник: www.substance3d.com/books/pbr-guide
Какие ноды понадобятся?
Первая в нашем списке — уже упомянутая нода Levels. Она дает контроль над контрастом.
Нода Transformation 2D позволяет передвигать узор/паттерн/текстуру.
Ноды Blur и Blur HQ Grayscale/Color позволяют «замылить» изображение, что очень полезно для создания фасок (blur+curve). Различия видны из названия: если достаточно банального «расфокуса», используйте обычный Blur, если же нужна тонкая настройка — без Blur HQ Grayscale/Color не обойтись. Нода Grayscale не работает с цветом! Для работы с полноцветными данными используйте Blur HQ Сolor.
Ноды Gradient и Uniform color. Первая позволяет красить карту высот в несколько цветов градиентами, а вторая создает сплошную заливку.
Ну а самый необходимый инструмент — нода Blend. Получая на входе данные из нескольких источников, она позволяет смешивать их по определенным алгоритмам, формируя ваши узоры и паттерны. Функционально она выполняет те же задачи, что и режимы наложения слоев в Photoshop.
Создание материала в Substance Designer
В первую очередь нужно определиться, какой метод генерации материала будет использоваться. В нашем случае мы выберем шаблон PBR (Metallic/Roughness):
После выбора шаблона в окне Graph появились ноды, которые отвечают за итоговый вид текстуры:
Наведя курсор на окно Graph и нажав TAB или «пробел», вы получите меню с инструментами и строкой поиска. Поищем в ней ноду Mesh 1: вводим имя и нажимаем Enter.
Выделив ноду Mesh 1 одинарным кликом, мы увидим ее параметры. Если щелкнуть дважды, нода отобразится в левой колонке в окне 2D-просмотра. Редактируем параметры: на вкладке instance parameters изменим tiling на 6 и rotate 45 degrees на true:
Добавим ноду Levels, чтобы сделать наш узор менее рельефным. Параметры ее настройки — на картинке ниже.
Мы получили паттерн текстурированного стального листа — новенького, как с завода. Стоит добавить немного ржавчины. Для этого понадобится маска, которая будет определять области коррозии. Сделаем ее с помощью нод Normal, Curvature smooth и Histogram scan.
Генерируем текстуру ржавчины, используя BnW Spots 2 и Directional Warp:
Маска почти готова. Осталось смешать ржавчину с окантовкой и увеличить контрастность. Добавляем ноды Blend и Histogram scan:
Разумеется, параметры расположения маски можно менять, перемещая пятна ржавчины по металлу.
Теперь раскрасим нашу маску, используя ноды Gradient Map и PBR Metal Reflectance (вместо нее можно использовать и обычный Uniform Color). В Gradient Color нажимаем Gradient editor — откроется окно с настройками. Цвет ржавчины, конечно, можно подобрать и вручную, но это медленно и нецелесообразно. Вместо этого найдите любую картинку с ржавым куском железа и, удерживая левую кнопку мыши, проведите инструментом Pick gradient по картинке — вы получите идеальный градиент ржавчины, на создание которого руками ушли бы часы.
Далее смешиваем окраску ржавчины с текстурой с помощью ноды Blend (режим смешивания Copy) и выводим результат в ноду Base color.
Остается лишь добавить несколько деталей, чтобы наш металл смотрелся реалистичнее. Карту Roughness не трогаем, а вот Metallic немного подкорректируем: инвертируем нашу маску и втянем ее в Metallic, чтобы определить, где и как поверхность будет отражать свет. Теперь осталось лишь добавить немного теней. Для этого к ноде Levels добавляем HBAO и редактируем параметры:
Результирующая процедурная текстура — на картинке ниже. В любой момент мы можем изменить любой параметр текстуры и сразу увидеть, как изменится внешний вид. Готовый материал можно использовать как в Substance Painter, так и в других программах, поддерживающих форматы текстур Substance Designer.
Вы можете скачать файл Substance Designer с этой текстурой и поэкспериментировать с разными параметрами нод: смягчить или усилить контраст штамповки на стальном листе, изменить количество ржавчины, ее оттенок или даже добавить, например, слой облупившейся краски. Также вы можете посмотреть демо-ролик по созданию материала в Substance Designer.
Об авторе: Алексей Баукин – инструктор курса «Основы Substance Designer» в школе компьютерной графики Realtime.
Моделирование материалов: советы и трюки
Александр Глухачёв рассказал порталу 80.lv, как он работает над созданием невероятных материалов с помощью Substance Designer.
Перевод статьи с портала 80 level
Введение
Привет! Меня зовут Александр. С 3D графикой я познакомился в старшей школе. Шутки ради, я купил на рынке диск с пиратской версией программного обеспечения для 3D моделирования и фото редактирования. Удачно и безболезненно я установил несколько программ. Это были 3D max 5, Photoshope 7, Bryce 5 и, кажется, Maya, но не помню точно.
Тогда у нас не было нормального интернета, и я по сути не знал, что с этими прогами делать. Первый опыт в 3D не зашел дальше вращения каких-то базовых фигур в окне просмотра и парочки срендереных пиксельных строк, встроенных в 3D max.
Позже я заинтересовался графикой на 4-ом курсе университета. Тогда я занимался гео-моделированием для диплома и понятия не имел, что делал это в 3D.
Довелось как-то поработать с Blender. Я установил его, создал несколько моделей по обучалкам на форуме, и меня затянуло. За год-полтора 3D моделирование стало моим хобби, пока я не начал искать другую работу (по окончанию университета я работал в одной IT-компании) и меня взяли в небольшую дизайн-студию в качестве 3D-дизайнера. Студия работала со всякой всячиной по типу логотипов, макетов сайтов, фото суши для службы доставки японской еды. Долгое время я дизайнил кадры высоко полигональной окружающей среды для промо материалов.
Потом я ушел из студии, полгода проработал над проектом, который назывался Cyclop (Циклоп). Это должна была быть пост апокалиптическая онлайн стрелялка. Но, к сожаленью, по ряду причин проект заглох, так и не реализовавшись.
Несколько лет я работал в студии над разработкой пошаговой стратегии, и заполнял свое портфолио нерабочими проектами.
Знакомство с Substance Designer
Впервые с Substance Designer я познакомился в 2014 году, с его четвертой версией. Тогда меня обескуражил интерфейс, казалось, что проще создавать карты по-старинке, в Photoshop, чем пытаться сделать что-то толковое из той кучи точек. Проблема состояла в том, что я даже не представлял, на что способна программа. Тогда я делал среду в Unity 4, Designer использовал только чтобы сгенерировать шум, с которым потом создавал текстуры в Photoshop. Такое себе эффективное пользование программами.
В основном я начинал с Photoshop, запекал в xNormal, а текстуры брал с cgtextures.com. Всего год спустя я вплотную занялся Substance Designer, на тот момент с его пятой версией. Смотрел туториалы по моделированию кирпичной кладки, затем создавал своих поверхности.
По сути, если уметь работать со слоями, масками, режимами наложения в Photoshop, то не будет никаких сложностей в том, чтобы понять, как работает Substance Designer. И с системой узлов нодов разобраться просто на уровне интуиции. Хотя и выглядит это все поначалу устрашающе.
С нодами я уже был знаком, поскольку долгое время работал с Cycles, встроенным в Blender движком для рендера. Он использует узлы для конфигурации материалов и освещения.
Если сравнить его со старыми инструментами, то он как верстак в гараже, а новая версия больше похожа на стол для алхимии… посреди леса… с единорогами. Нужно просто смешать различные ингредиенты и получишь то, что хочешь.
К тому же, можно так же брать текстуры с сайтов, фотосканы и маски создавать в Photoshop или Illustrator. Или, как многие другие делают, запекать поверхности, созданные в Zbrush и более качественные материалы с помощью Substance Designer. Да, интерфейс совсем другой и подходы разные, но оно того стоит.
Создание
В моделировании материалов, как и в создании чего-либо, следует двигаться от простого к более сложному, от больших форм к формам поменьше.
Обычно я начинаю с простой карты. Создаю барельеф, потом альбедо и продвигаюсь к другим неровностям поверхности. Если потребуется, завершая карту, добавляю разные мелкие детали и микрорельеф.
Что касается структуры, то к созданию различных материалов нужны разные подходы. Если это грязь или штукатурка, все сводится к тому, что нужно смешать различные шумы, подогнать яркость и контраст. Если же это масштаб или более сложная поверхность, тут я обычно начинаю с базовых элементов, из которых состоит поверхность.
(процесс создания венозной системы)
В этом примере я использовал Форму (Shape node), добавил искривления основы, затем соединил все в ветвление с помощью двухмерных узлов.
(Структура одной ветки узлов)
Таким методом я смоделировал несколько венозных типов.
Потом продублировал их, используя Копирование фрагментов.
(Структура масок венозной системы)
В конечном результате, у меня получилась маска. Которую позже я использовал для создания рельефа венозной системы, а также чтобы отделить вены от поверхности мозга с альбедо и неровностями поверхности. Материал фактически обрамлял основную маску.
(конечный материал с венозной системой)
Органические вещества
Метод моделирования органических веществ не сильно отличается от создания любого другого материала. Главное – иметь как можно больше референсов под рукой и уметь их анализировать.
Однако же, я могу указать на некоторые нюансы.
Например, органические вещества очень часто имеют прозрачную или полупрозрачную поверхность. Такие как мукоза или различные жидкости.
Можно создать полупрозрачную оболочку, комбинируя два материала с помощью маски с гладким градиентным переходом, таким образом имитируя степень плотности просвечивающегося вещества на разных участках оболочки.
(вещество с полупрозрачной оболочкой)
На изображении высокого разрешения видно подкожный слой и оболочку мяса. Слева видно альбедо поверхности, которое создавалось наложением двух материалов. Заметны потемнения по краям неравномерного слоя маски, сымитировано утолщение оболочки, как если бы на месте деформации было повреждение оболочки.
– Можно также сделать видимость полупрозрачного слоя, снизив шероховатость оболочки или добавить размытость в альбедо. Получится якобы подсвечивающая пленка, с имитированным рассеиванием света. Еще можно добавить эффект тени в местах, где более прозрачные части поверхности соприкасаются с менее прозрачными.
– Моделируя поверхность слизистой оболочки, следует обращать внимание на поверхностное натяжение жидкостей. Когда жидкость обтекает какую-либо поверхность, она не соприкасается с ней под углом 90 градусов, создается гладкий переход.
У большинства органических материалов нет четкой и постоянной структуры. Кроме как на микроуровне, например, фасеточные глаза у насекомых. Но даже в таком случае существуют неровности, мелки и поврежденные грани. Следует разнообразить формы одного вида. Это касается, как органических веществ, так и других материалов. Чем больше неравномерностей, тем больше разнообразия в размере элементов, их форме и резкости.
– Из приятных бонусов процесса визуализации органических материалов – шейдер поверхностного рассеивания. Он позволяет придать материалу более реалистичный вид.
Детали
Сложно сказать, где заканчивается моделирование простого материала и начинается что-то реально крутое. Я вообще стараюсь, чтобы все материалы получались очень крутыми, но, увы, не всегда выходит. Как правило, такие детали заимствуются из рефренсов или добавляются чисто экспериментально, когда большинство материалов уже сделано и хочется, чтобы они выглядели интереснее.
Например, в Slime я изначально хотел использовать эффект простой пены с пузырьками. И первым референсом стало фото кваса. Таким образом, в ходе работы квас превратился в зеленую слизь.
Для имитации пены я создал разделенный генератор на два входа и четыре выхода.
(генератор пены и сгенерированные маски)
На вход генератора я добавил шум, создал форму пены, очертания формы пузырьков.
На выходах получил несколько типов пузырьков с контурами, созданными с помощью инструмента Карта градиента (Gradient map node), и толстый слой пены из маленьких пузырьков.
Разделение пузырьков на различные типы необходимо, чтобы настроить степень выпуклости слоев.
Генератор пены на самом деле очень прост и использует Копирование фрагментов. Форма пены – это совокупность входящего шума, переработанного и нанесенного на исходный слой маски Копирование фрагментов.
В той области, где маска белая, я создал множество маленьких пузырьков. Пузырьки побольше с маски для пузырьков маленьких инвертированы и удалены.
(Копирование фрагмента на исходный слой маски)
Таким образом, образуется пустая область среди маленьких пузырьков для больших.
(Структура генератора пены)
Маска, взятая из генератора пены, используется при формировке нормалей, цвета пены, альбедо, отделении пены от слизи. Еще я добавил эффект тени внутри пузырьков, чтобы пена выглядела «глубже», смешал базовый цвет слизи и инвертированную маску наложения с помощью Режима умножения и у меня получился такой легкий затенение внутри пузырьков.
(затенение внутри пузырей)
Кроме того, добавил затенения маленьким пузырька методом рассеивания тени снаружи-внутрь (AO map). А чтобы пена выглядела немного прозрачнее и не равномернее, добавил зеленый оттенок светло-бежевому цвету пены в альбедо.
(конечное альбедо пены)
В конечном итоге, неравномерное освещение маски, отделение слизи от мены и гладкий переход цвета внутри пузырьков имитируют полупрозрачность и рассеивание. Шейдинг создает впечатление, что слизистое вещество больше в размере и прозрачнее, чем есть.
И наконец, в нормаль вдоль кромки пены я также добавил гладкий скос дабы отобразить эффект натяженности воды снаружи между пеной и зеленой слизистой субстанцией.
Все эти мельчайшие детали едва можно заметить, но вместе они сильно влияют на то, каким же в итоге выглядит вещество. Как говорится, дьявол кроется в деталях.
(общая структура слизистого вещества)
Использование материалов в играх
Обычно в играх необходимо что-то попроще: плитка, штукатурка, бетон, земля, кирпичи и тому подобное – в общем то, из чего можно построит локации.
Когда же дело касается органических материалов, они довольно специфические и их используют только в определенных случаях. Например, в текстуре существ для хоррор игр или таких штук как Scorn.
Моей основной целью в моделировании таких материалов было научиться это делать. Мне хотелось создавать что-то необычное, приобрести дополнительный опыт работы в Substance Designer. Меня заинтересовала органика, и я начал работать именно в этом направлении.
В чем плюс веществ, так это в возможности их гибкого урегулирования; будь то рельеф или цветовая гамма – можно в любой момент быстро дожать любой элемент этого вещества.
Если вам, например, не нравится форма брусчатки, вам не нужно снова начинать все сначала: переделайте скульпт, запеките и сделайте новые маски. Всего-то нужно будет изменить исходную маску материала.
Или если, предположим, вам нужно два материала для раскрашивания вершин, такие как кусочки черепицы, нужно всего-то создать эти облицовочные плиты. Сохраните маски черепицы, поиграйтесь нодами, чтобы создать обломки или трещины, затем сохраните второй вариант – и готово.
Полезные советы
Не припомню какой-либо курс или видео по тематике, но рекомендую просмотреть курс Substance Academy на официальном сайте Allegorithmic. Еще если вбить в поисковик YouTube запрос ‘substance designer’, выдаст много видео-уроков по различным тематикам, можно любой из них смотреть. Новичкам в первую очередь надо понять общую логику работы и интерфейса, потом уже они сами смогут справиться.
Когда дело касается приобретенных навыков, то работа с масками в Substance Designer почти похожа на работу со слоями и режимами наложения в Photoshop. Вы просто комбинируете различные слои, добавляя или извлекая из них наполнение.
Между прочим, тем. Кто уже знаком с системой узлов, тем будет намного проще понять интерфейс самого редактора.
Самое важное, что обязательно нужно прочесть перед началом работы, – это материалы по PBR (Physically-Based Rendering), тонкости создания масок для PBR и все к этому относящееся. На сайте Allegorithmic размещен подробный гайд.
Делаем бетон в Substance Designer
Привет, это Антон Агеев, — преподаватель курса по процедурным текстурам «Процедурный трип». Подробнее о нём можно прочитать в анонсе. На курсе я учу работать в Substance Painter и Designer и рассказываю, как создавать реалистичные процедурные текстуры на уровне профессионалов игровой индустрии.
Это — обучающий текст по созданию процедурной текстуры бетона в Substance Designer. Бетон — материал на первый взгляд тривиальный, но грамотное его использование поможет выстроить стилистику целой игры. Как, например, в прошлогодней Control.
Я подробно распишу процесс для новичков — если хочешь на курс, но не уверен, подойдёт ли он тебе, попробуй повторить все шаги в статье. Начинать можно с нуля, в пробной версии Designer на месяц, — если не уверен, хочешь ли сразу тратиться на профессиональные программы.
В каждом шаге я буду указывать точные значения параметров, которые использовал я, но это не значит, что тебе нужно повторять всё за мной — экспериментируй!
Повторяй за мной, создай собственную текстуру и выложи её в комментарии под этой статьёй. Автор работы, которая соберёт больше всего лайков, получит приз от XYZ — любой артбук стоимостью до 2 тысяч рублей.
Заходим на Artstation, Behance, Google и ищем подходящие образы.
Первая приглянулась мне трещинами, со второй я взял цвет и поры. В третьей понравился общий шум: штукатурка, светотень, и микродетализация.
Интерфейс Substance Designer выглядит так:
Интерфейс делится на несколько рабочих областей: панель эффектов справа, 3D вьюпорт — отображение материала на 3D модели, 2D вьюпорт — показывает содержимое выбранной ноды. Снизу — рабочее место, которое называется Graph View, в котором мы создаем материал с помощью нод.
Нода — это блок кода или операция, которая создаёт или обрабатывает изображение
У нод есть исходящие порты — аутпуты, а у некоторых ещё и входящие — инпуты. Информация подаётся в инпуты, обрабатывается нодой и выходит из аутпута в следующую ноду.
Ноды связываются в цепочку действий, которая приводит к результату — текстуре или её отдельному элементу.
Например, нода Blur принимает на вход изображение, а на выходе отдаёт его более размытым:
Такой подход к созданию текстур и материалов называют процедурным.
Одна из его особенностей — недеструктивный пайплайн. Это значит, что на любом этапе создания материала можно вернуться к любому действию и внести в него изменения и повлиять на результат.
К примеру, я могу вернуться к ноде Blur через полчаса работы и настроить её заново, скорректировав степень размытия. В Photoshop для той же операции пришлось бы откатывать все действия назад до нужного изменения.
В библиотеке Designer более двухсот нод. Они делятся на группы по задачам.
К примеру, группа Noises содержит процедурные текстуры, которые используют для создания шума. У них нет инпутов, только аутпуты и параметры, с помощью которых можно настроить внешний вид этих текстур.
Существуют и другие группы: паттерны, операции и эффекты.
Вот, как выглядит исходная схема в Graph View. Я оставлю её в хорошем качестве на гугл-диске, чтобы ты мог обращаться к итоговому варианту, если запутаетесь.
Первым делом создаём и настраиваем новый проект.
В окне нового проекта даём название будущему графику, устанавливаем разрешение — 2048х2048 точек, разрядность документа — 16 бит и в качестве шаблона из левого списка выбираем PBR(Metallic\Roughness).
Благодаря шаблонам можно быстро создать и настроить специальные ноды — аутпуты. Эти точки выхода информации из графика, и к ним подключаются текстуры, которые мы будем создавать в процессе работы над материалом.
Если забыли выбрать нужный шаблон или случайно удалили аутпуты в процессе работы, — не переживайте, их можно создать и настроить вручную.
Наша задача — грамотно построить карту высот (Height).
Height это чёрно-белая текстура, в которой яркость пикселя задаёт высоту точки в 2D пространстве.
Чем темнее пиксель, тем глубже. А чем ярче, тем, наоборот, выше точка относительно плоскости, на которой находится текстура.
Таким образом, работая над картой высот мы создаём рельеф будущего материала, но только в одном измерении.
Карта высот занимает 80% работы.
Она также оказывает влияние на все остальные текстуры материала — цвет, микрорельеф (roughness), затенения (AO) и так далее.
Когда я начинаю работу над картой высот, я сначала анализирую референс и подмечаю схожие элементы материала. Думаю, как это можно реализовать в Designer.
К примеру трещины на первом референсе имеют схожую форму и характер. Бетон на второй фотографии покрыт мелкими глубокими порами.
Элементы которые мне приглянулись я создаю по отдельности, а затем смешиваю вместе, создавая сложную структуру комплексного материала.
Первый элемент — текстура, которую я сделал на основе процедурного шума Fractal Sum Base.
Её задача — добавить небольшие неровности и фактуру бетона, для того чтобы материала не был идеально ровным.
Я собрал эту текстуру из четырёх нод, начал с процедурного шума Fractal Sum Base.
Дальше экспериментируем. Я не знаю, как сделать элемент, поэтому прорабатываю несколько идей, пока не достигну результата.
Попробую объяснить ход мыслей в процессе создания текстуры.
Я начал с Fractal Sum Base потому что мне показалось что она похожа на однородную поверхность камня. Но в дефолтном состоянии она слишком сильно «шумит».
Поэтому добавилась нода Slope Blur для понижения детализации.
Slope Blur одновременно размывает и искажает текстуру, что привело меня к результату:
Следующий шаг — нода Blur HQ с помощью которой я смягчаю получившуюся фактуру.
Последняя нода — Histogram Range. В ней с помощью параметра Range я управляю интенсивностью элемента: