Создаём материал стекла в Substance Painter и Marmoset

Всем привет, это Антон Агеев — автор курса «Процедурный трип». На нём я учу создавать процедурные текстуры на профессиональном уровне.

Один из самых популярных вопросов от студентов — как создать и настроить материал прозрачного стекла?

В прошлый раз я рассказал о создании материала бетона в Substance Designer, а в этом гайде покажу, как делать стекло в Substance Painter — на примере модели будильника.

Создаём материал стекла в Substance Painter и Marmoset

Стекло — непростой материал, потому что единого способа его сделать нет. В каждой программе оно настраивается по-разному, и поэтому часто возникает путаница.

В статье два раздела: о создании текстуры в Substance Painter, и о её импорте и настройке в Marmoset. Методику из второго раздела я частично заимствую из материала художника Ognyan Zahariev.

Substance Painter

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

Создаём материал стекла в Substance Painter и Marmoset

Создание шейдера

Чтобы создать новый шейдер текстурного сета стекла, нажимаем на Main Shader в Texture Set List:

Переименуем его в разделе Shader Settings:

Сменим типа шейдера на pbr—metal—rough—alpha blending:

В SP 2 типа прозрачности: alpha-blending и alpha-test.

  • В Alpha-test нет градаций. Пиксель либо полностью прозрачный, либо нет. Этот тип подходит, когда нужна жёсткая маска, — например, текстура листьев. Это более «дешёвая» альфа с точки зрения производительности.
  • Alpha-blending более «тяжёлый», он поддерживает степень прозрачности и подойдёт для стекла.

Канал Opacity

После настройки шейдера добавим новый канал — opacity — в текстурный сет стекла.

Он управляет прозрачностью в материале с помощью чёрно-белой текстуры. Чем темнее пиксель, тем он прозрачнее на модели, и наоборот.

Для оптимизации процесса уберём каналы Metallic, Normal и AO из текстурного сета.

Создаём материал стекла в Substance Painter и Marmoset

Базовый слой

Создадим первый слой — обычный Fill Layer с базовым значением Roughness и цветом непрозрачности.

По мере загрязнения, ближе к краям, стекло будет становиться непрозрачным. Цвет в канале BaseColor в этом слое позволит настроить его оттенок.

Roughness

Создаём детализацию в канале Roughness, отключаем все остальные. Значение Roughness в слое выставляем на 1.

Создаём материал стекла в Substance Painter и Marmoset

Теперь добавляем маску для слоя.

1. Создаем процедурную текстуру Scratches generator.

Создаём материал стекла в Substance Painter и Marmoset

Настраиваем её так, чтобы было похоже на царапины на стекле — тонкие и прямые. Уменьшим их количество, чтобы они не были слишком навязчивыми. И понижаем прозрачность слоя на 50%.

Создаём материал стекла в Substance Painter и Marmoset

2. Создаём якорь над царапинами чтобы копировать эффект в другие слои. Позже добавим эти царапины в normal другого слоя.

Создаём материал стекла в Substance Painter и Marmoset

3. Следующие три слоя — микс из гранж-текстур, с помощью которых мы добавляем разные интересные детали: отпечатки пальцев, разводы и пыль.

Создаём материал стекла в Substance Painter и Marmoset
Создаём материал стекла в Substance Painter и Marmoset

4. Делаем маску более интенсивной по краям и прозрачной в центре.

Создаём материал стекла в Substance Painter и Marmoset

Дублируем слой и используем разные бленды для настройки интенсивности.

Создаём материал стекла в Substance Painter и Marmoset

5. Повышаем резкость маски с помощью Sharpen.

Создаём материал стекла в Substance Painter и Marmoset

6. И создаём якорь для маски целиком.

Создаём материал стекла в Substance Painter и Marmoset

Он понадобится в следующем слое — из него же мы создадим маску прозрачности.

Готово! Финальный стэк эффектов Roughness выглядит так:

Создаём материал стекла в Substance Painter и Marmoset

Детали в нём намного проще создавать и настраивать до того, как мы сделаем стекло прозрачным, — поэтому мы и создаём материал в таком порядке.

Opacity

В следующем слое создаём маску прозрачности.

Создаём материал стекла в Substance Painter и Marmoset

На этом слое отключаем все каналы кроме opacity, а значение прозрачности устанавливаем на 0,15—0,18.

Создаём материал стекла в Substance Painter и Marmoset

Этот параметр задаёт максимальную прозрачность стекла. В реальной жизни оно всегда немного непрозрачное, поэтому не стоит устанавливать параметр на 0.

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

Для того, чтобы материал по краям циферблата был непрозрачным, добавим в слой opacity чёрную маску и скопируем в неё информацию из слоя Roughness с помощью якоря:

Создаём материал стекла в Substance Painter и Marmoset

С помощью levels в якоре инвертируем её и увеличиваем контрастность маски, чтобы уменьшить площадь загрязнения.

Создаём материал стекла в Substance Painter и Marmoset

Финальная маска слоя и канал Opacity выглядят так:

Добавление текстуры в канал Opacity делает края непрозрачными
Добавление текстуры в канал Opacity делает края непрозрачными

Добавляя текстуру в канал Opacity делаем края непрозрачными.

Цвет непрозрачности задаём в нижнем слое, Glass BM:

Height

В этом слое настроим Height по маске царапин, чтобы на блике они смотрелись объёмнее.

Создаём материал стекла в Substance Painter и Marmoset

Стекло готово!

Экспорт

Создадим новый шаблон, потому что у нас в модели нестандартный набор текстур. Стекло в Marmoset настраивается иначе, поэтому мне понадобятся не все каналы.

В проекте оставим только Normal, Roughness и маску Opacity.

Обратите внимание: используем альфу из канала, а не сам канал.
Обратите внимание: используем альфу из канала, а не сам канал.
Создаём материал стекла в Substance Painter и Marmoset
Создаём материал стекла в Substance Painter и Marmoset

Информация из альфа-канала идентична маске слоя, она понадобится в Marmoset для настройки материала. Но есть загвоздка: в Marmoset обратная логика маски прозрачности.

Прозрачный пиксель — черный, непрозрачный — белый

Чтобы прозрачность в SP отображалась корректно, отключим на время этот эффект. Обратно его можно включить во время экспорта, чтобы в результате маска прозрачности была правильной.

Создаём материал стекла в Substance Painter и Marmoset

Marmoset

В стандартном шейдере Marmoset прозрачность подключается в разделе Transparency.

Создаём материал стекла в Substance Painter и Marmoset

На выбор есть несколько типов прозрачности. Ни один из них не работает так же, как в Substance Painter.

Единственный способ добиться схожего результата — использовать два типа прозрачности — один поверх другого — на разных геометриях.

Поэтому при экспорте модели в Marmoset создаём два стекла и смещаем их друг относительно друга, чтобы избежать пересечений геометрии.

В Marmoset создаём 2 материала для обоих стёкол
В Marmoset создаём 2 материала для обоих стёкол

Первый будет использовать тип прозрачности add, а второй — dither.

Создаём материал стекла в Substance Painter и Marmoset

Add

Тип Add игнорирует канал цвета Albedo — он делает цвет полностью прозрачным. Отражения при этом рендерятся поверх задней геометрии.

В результате детализация в Roughness и в Normal будет видна на блике, но маску прозрачности использовать не получится. Параметр Alpha в настройках Transparency делает прозрачнее только отражения.

В этом материале используем только карту нормалей и Roughness
В этом материале используем только карту нормалей и Roughness

Dither

Прозрачность Dither рендерит Roughness, Normal и Albedo. Для каждого из каналов степень прозрачности пикселя задаётся чёрно-белой маской. Для всех каналов она одинаковая.

Это значит, что если в Albedo пиксель прозрачный, то отражений тоже не будет видно.

В материале glass_dither используем текстуру Roughness и маску прозрачности
В материале glass_dither используем текстуру Roughness и маску прозрачности

Регулируем оттенок грязи цветом Albedo, так же, как в SP. Там мы делали это через слой, а здесь настроим цвет в самом материале.

Готово!

Можно включить видимость всех слоёв и посмотреть, как они выглядят вместе:

Создаём материал стекла в Substance Painter и Marmoset

Если хочешь научиться текстурированию на профессиональном уровне, записывайся на наш курс по процедурным текстурам — он стартует 29 июля.

Узнать все подробности и зарегистрироваться можно на нашем сайте: https://www.school-xyz.com/texture

Успехов!

Материал подготовлен командой XYZ Media.

Наши каналы в Telegram и на YouTube.

8181
5 комментариев

Забавное совпадение :) На прошлой неделе, как раз делал книжный шкаф, и задумался как делается прозрачность в SP, пришлось гуглить.
Вышла бы эта статья пару недель назад, сэкономили бы мне время :)
В любом случае, спасибо!

3
Ответить
Комментарий удалён модератором