Substance 3D Painter
Substance 3D Painter — стандарт текстурной живописи для игр: слои, маски и генераторы позволяют рисовать PBR-материалы быстро и неразрушающе.
1. Что такое PBR и Substance
PBR (Physically Based Rendering) — модель рендеринга, где материал задаётся наборами текстур: Base Color (цвет), Metallic (металл), Roughness (шершавость), Normal (карта нормалей), Height/AO (высота и окклюзия).
Substance 3D Painter — инструмент рисования прямо на модели: результат всегда совпадает с тем, что ты увидишь в Unreal/Unity (одинаковый PBR-пайплайн).
2. Интерфейс
- Viewport — 3D-просмотр с материалами.
- Layers panel — слои и маски (как в Photoshop).
- Shelf — библиотека материалов и кистей.
- Properties — параметры выбранного слоя/инструмента.
Панели можно перетаскивать и менять раскладку (пункт меню Window → Workspace).
3. PBR-карты
| Карта | Что описывает |
|---|---|
| Base Color | точный цвет поверхности |
| Metallic | металл (белый) или диэлектрик (чёрный) |
| Roughness | микрогеометрия: гладкая (тёмная) или шершавая (светлая) |
| Normal | направление нормалей без геометрии |
| Height | высота для параллакса/дисплейса |
| AO | тени в углах и щелях |
В реальном проекте чаще всего настраивают только Color и Roughness: остальное отдают генераторы.
4. Импорт модели
Начни новый проект: File → New. Поддерживаются FBX, OBJ, Alembic.
- Импортируй модель из Blender/Maya с верными нормалями и UV.
- Рабочий документ: задай разрешение текстур (Standard: 2048/4096).
- Ширина текселя (Texel Density) выставляется на этапе развёртки — см. RizomUV.
5. Запекание (Baking)
Baking генерирует Normal, AO, Curvature, Position и др. карты с высокой модели (High-poly) на низкую (Low-poly):
- Проект с низкополигональной моделью; в окне Baking укажи High Definition Mesh и Cage.
- Галочки на нужных картах: Normal (Tangent), AO, Curvature (для вариативности), Thickness.
- Увеличь Samples и края (Padding) для чистых результатов.
6. Слои, маски и кисти
Слои работают как в Photoshop: сверху верхний имеет приоритет. Маски ограничивают площадь слоя.
- Fill layer — сплошной материал поверх объекта.
- Paint layer — кисть рисует цвет/эффекты на слое.
- Маски: Чёрный скрывает, белый показывает зону.
Кисть: выбор из Shelf, настройки Symmetry (зеркальное рисование) и радиус по стриму мыши «pressure» (если есть планшет).
7. Материалы и Smart Materials
Material — набор PBR-карт. Smart Material — «живой» материал, привязанный к маскам/генераторам: растащи «грязь» по AO или накатай ржавчину по толщине.
8. Генераторы
Генераторы добавляют эффекты автоматически через маски:
- AO — затемнение щелей по запечённой карте.
- Dirt/Dust — скопление в низинах.
- Shape — маскированые паттерны.
Каждый генератор имеет параметры: радиус, слой, шум: меняя их, получаешь естественность без ручной кисти.
9. Высокопольное текстурирование и кастом
Добавь «жизнь» материалам:
- Краска по краям: рисование кистью по Curvature-маске (выпуклости).
- Щербины/царапины: Layer с нормальной картой поверх, маска из случайного шума.
- Грязь/патина: генератор по Thickness + Roughness ° немного выше.
10. Экспорт текстур
Экспорт: File → Export Textures. Готовые шаблоны для движков:
- Unreal Engine 5 — соединяет карты в пакеты (Metallic-Roughness-AO в один канал).
- Unity (URP/HDRP) — ggb материал под современный конвейер.
Форматы: PNG/TGA без сжатия, JPEG с потерями. Заспакуй в записи репозитория GitLab с Git LFS.
11. Финальная проверка и презентация
- Прогони модель в честном свете (вертикальный солнца, HDRI низкой яркости).
- Сравни базовые цвета: Base Color не должен содержать полос/артефактов.
- Импортируй в Marmoset Toolbag для финальной шоу-картинки (турнтейбл).
12. Оптимизация текстур и тайлинг
Разрешение текстур напрямую влияет на производительность: пара наборов по 4K на сцену — это сотни мегабайт видеопамяти. До старта текстурирования реши, для чего нужен ассет: пропу хватает 2K, а персонажу на крупных планах — 4K.
# Параметры, которые стоит проверить перед экспортом
Tile size: 2048 x 2048
Texel density: 10.24 px/cm (game) / 20.48 px/cm (cinematic)
Padding: 16
Max MIP level: 3| Тип объекта | Плотность текселя |
|---|---|
| Проп в комнате | 10.24 px/cm |
| Персонаж, крупные планы | 20.48 px/cm |
| Фон и дальний план | 5.12 px/cm |
Тайлинг: для больших плоскостей увеличь Tile U и Tile V — материал начнёт повторяться, а плотность текселя останется нужной. Этим удобно пользоваться на полах, заборах и стенах.
13. UDIM и большие ассеты
UDIM — это несколько UV-тайлов на одной модели (1001, 1002 и так далее). Каждый тайл получает собственные текстуры, поэтому суммарная детализация ассета растёт без снижения плотности текселя.
- Разверни модель в RizomUV на несколько UDIM-тайлов, не собирая всё в «кучу» на одном листе.
- В Painter импортируй FBX с несколькими UV-тайлами и переключай текущий UDIM в верхней панели.
- При экспорте каждый тайл получает суффикс в имени:
armor_1001.jpg,armor_1002.jpg.
# Пример структуры экспорта UDIM
vehicle_1001_BaseColor.png
vehicle_1001_Roughness.png
vehicle_1002_BaseColor.png
vehicle_1002_Roughness.pngПомните, что UDIM повышает и требования: каждая плитка — свои текстуры, значит экспорт занимает память и время движка. Используйте тайлы там, где детализация реально нужна, а гладкие поверхности оставляйте на одном UV-листе.
14. Финальный чек-лист
Перед отправкой ассета в движок пройдись по пунктам — это сэкономит часы на переделки уже после импорта.
- Base Color без артефактов: в нейтральном освещении цвета не «горят» и нет полос.
- Normal в пространстве Tangent, а не Object — иначе свет будет «гулять» по объекту.
- Roughness и Metallic проверены в материале движка, а не только в превью Painter.
- Нет лишних карт: Height и AO упакованы в один канал или не экспортированы вовсе.
- UV без наложений, тайловые швы закрыты масками и генераторами.
textures/_src для исходников и экспортируй итог отдельно: восстановить сцену после правок будет проще, а ревьюи заметят разницу быстрее.15. Якоря Anchors и умная маскировка
Якорь (Anchor) — справочная точка, которая хранит то, что нарисовано ниже по стеку слоёв. На якорь ссылаются маски, генераторы и слои, поэтому «грязь» можно привязать к AO, а царапины — к карте высот, не перерисовывая ничего вручную.
- Создай якорь: ПКМ по слою → Add Anchor Point. Имя дай по смыслу:
ao,curvature,height. - В параметрах генератора укажи источник маски (Source) как этот якорь.
- Меняя нижележащие слои, ты автоматически обновляешь все маски, ссылающиеся на якорь.
# Схема стека
Paint layer (ржавчина) -> маска ссылается на Anchor:ao
Fill layer (металл) -> базовый материал
Anchor:ao # запечённая ambient occlusionЯкоря незаменимы, когда текстурный стек вырастает до десятков слоёв: вместо копирования маски между слоями ты один раз создаёшь живую ссылку. Это и скорость, и предсказуемость результата.
16. Практический кейс: sci-fi броня
Соберём классический кейс, чтобы увидеть все приёмы сразу: бронеплита со свежей краской, потёртостями и ржавчиной. Это уровень работ, на который выходят после первых экспортов.
- Запеки Normal, AO, Curvature и Thickness с высокой модели.
- Fill layer — базовый металл (Metallic белый, Roughness 0.2).
- Второй fill — краска: цвет, Roughness чуть выше, маска по Curvature (края).
- Генератор Dust по маске AO — затемнение в низинах.
- Царапины: кисть на нормальной карте по маске случайного шума.
Ключ к «правдоподобию» — порядок: краска поверх металла, а износ сверху. На каждом этапе включай превью Channel (Base Color, Roughness) и сравнивай с референсом.
17. Частые ошибки новичков
Большинство «косяков» в Painter повторяются из проекта в проект. Держи список под рукой — он сэкономит часы переделок.
- UV с перекосом: нормали «плывут», если тайлы растянуты. Чини развёртку до запекания.
- Не тот Tangent Space: Normal в Object Space ломает свет в движке. Всегда Tangent.
- Нулевой padding: чёрные швы на тайловых материалах. Padding 8–16 при запекании.
- Работа при 100% opacity: без полупрозрачности слои не смешиваются, и материал выглядит плоским.
- Экспорт «всего подряд»: лишние карты весят и путают. Экспортируй только те, что использует движок.
# Быстрая проверка перед экспортом
UV seams - закрыты масками?
Base Color - нет полос и артефактов?
Normal - tangent, не object
Padding - 16
Size - 2048/4096 по задачеЕщё один классический провал — рисовать галопом, не глядя на результат в честном освещении. Один свет сверху скрывает ошибки, которые видно в движке.
18. Смежные инструменты и альтернативы
Painter — стандарт индустрии, но не единственный способ текстурировать. Полезно знать соседей, чтобы выбирать инструмент под задачу.
| Инструмент | Когда удобен |
|---|---|
| Mari | кино и большие UDIM-наборы, сотни тайлов |
| Quixel Mixer | быстрый «фото» примерно реальности из сканов |
| Marmoset Materialize | генерация PBR-карт из простых плиток |
| Blender + процедуры | простое текстурирование без отдельной лицензии |
В реальном пайплайне стек часто выглядит так: Blender/Maya — моделинг, RizomUV — развёртка, Painter — текстуры, Marmoset Toolbag — презентация. Из Painter материалы уезжают в Unreal/Unity без потерь.
Перед выбором инструмента задай вопрос «что будет на каждом этапе?»: для игрового ассет-пайплайна Painter — лучший выбор, а для кинопроизводства со множеством UDIM-тайлов — Mari.
19. Сканы и фотограмметрия: работа с реальным миром
Фотограмметрия — восстановление текстуры и геометрии из десятков фотографий. Сканы дают «живой» результат: реальную грязь, микронеровности и цвет на материалах вроде камня, бетона или ржавого металла, которые вручную нарисовать дорого.
1. Снимите объект со всех сторон (50–200 фото)
2. Соберите меш в Reality Capture / Metashape
3. Импортируйте модель в Painter (раздел 4)
4. Запеките текстуры (раздел 5) и доучите вручную| Источник | Когда использовать |
|---|---|
| Свой скан (фотограмметрия) | уникальный объект клиента, сайт-специфика |
| Megascans / Quixel | природа и «мир» в стиле готовых библиотек |
| Poly Haven и стоки | быстрые тесты и базовые тайлы |
Сканы редко лежат «как есть»: в Painter их подчищают — убирают грязь с датчика, швы, выравнивают нормали (normalize) и поверх добавляют собственные слои.
20. Substance Designer и .sbsar в пайплайне
Substance Designer — «промышленный» способ делать материалы: вместо кистей пишутся графы нод, которые генерируют карты процедурно. Результат пакуется в файл .sbsar, который Painter читает как обычный источник текстур.
# Панель библиотеки Painter
1. Add resource → Designer (.sbsar)
2. Разместите на панели как источник
3. Настройте параметры (износ, масштаб, вариации)Разница с рисованием: изменение параметра в Designer перестраивает весь материал. Кирпич с «тьящими» случайными вариациями, металл с параметрической ржавчиной — без перерисовки слоёв вручную.
- граф = алгоритм, который повторяется на любых формах без правки;
- варианты (грязь, кондиция) — это слайдеры, а не отдельные копии карт;
- для команды: один .sbsar работает как «источник истины» вместо десятков папок.
21. Варианты и экземпляры: одна текстура на много состояний
Предмет в игре почти всегда существует в нескольких состояниях: чистый, грязный, сломанный, мокрый. Делать для каждого копию — расточительство. Решение — варианты материала и параметрические слои.
# Painter: Material Variants
1. Создайте variants на слое (иконка "variants")
2. Для каждого варианта — своя маска или параметры
3. Экспортируйте нужный набор карт под состояние- вариант хранит «дел-ту»: маску и значения, а не дублирует весь проект;
- минимальный шаг: один экспорт-пресет на состояние (Clean / Dirty / Broken);
- изменение базового слоя обновляет все варианты разом.
| Вариант | Что меняется |
|---|---|
| Clean | базовая чистая текстура |
| Dirty | маски грязи + пыли (параметрические слои) |
| Broken | маски царапин, сколов, смещение roughness |
В движке состояния переключаются через material instance / параметр — без нескольких загруженных текстур для одного объекта.
22. Командный пайплайн: стандарты и ревью ассетов
В одиночку ассет можно собрать «как душа пожелает». В команде это путь к хаосу: художники перезаписывают чужие слои, движок ломается на чужих пресетах, а ревью упирается в «мне так видно». Стандарты решают большую часть проблем.
# Правила на проект
- Разрешение: 2048/4096 (зависит от задачи)
- Формат карт: PNG (Base Color) / TGA или PNG (Normal)
- Packed-ключи: OC (R), Roughness (G), Metalness (B)
- Именование: ассет_тип_канала.png- единый пресет экспорта и папка-шаблон у каждого + чистка автосуффиксов;
- имя и структура проекта в Painter — зеркало структуры ассетов на диске;
- Git/Perforce для истории: кто и когда менял слой-стек.
Ревью ассета делается «насквозь»: сначала общий план (silhouette и игра света в движке), затем карты по каналам (нет ли замыленных нормалей, пересветов в roughness), потом экономика (память, разрешение).
Что дальше
Текстурирование — финал пайплайна: сначала ZBrush для скульптига, RizomUV для развёртки, затем Painter и презентация в Marmoset Toolbag. Платье на персонаже — Marvelous Designer.