Создание карт кривизны (Curvature) и толщины (Thickness)
Curvature и Thickness — не самые очевидные текстуры в PBR-пайплайне, но именно они отвечают за тот «живой» материал, который отличает AAA-арт от технически грамотного, но плоского ассета. Проблема возникает не при запекании — Baker в Marmoset Toolbag или Substance Painter справляется за секунды. Проблема в том, что запечённые карты оказываются мусором: шум на плоских поверхностях, артефакты на скруглениях, неверный bias в зонах контакта между мешами.
Почему Curvature Map получается с артефактами
Самая частая ситуация: художник запекает Curvature в Marmoset Toolbag 4 с настройками по умолчанию и получает карту, где все острые углы выглядят правильно, зато на плоских гранях — белый шум. Причина — параметр Ray Distance выставлен слишком высоко, лучи задевают соседние острова UV и дают ложные выпуклости.
Исправляется за счёт снижения Ray Distance до значений, при которых луч едва достигает high-poly. Для персонажного меша с разбивкой на Baker Groups — отдельный cage для каждой группы. В Substance Painter та же проблема решается через bake per material с явно заданным Max Frontal Distance.
Второй источник боли — seam bleeding. Если UV-развёртка сделана без отступа 2–4 пикселя по краям каждого острова, кривизна с соседних островов затекает в шов. На 2K-текстуре для мобильного ассета это заметно сразу; на 4K для PC — при определённом угле камеры.
Thickness Map — история отдельная. Она запекается через AO с инвертированными нормалями: лучи уходят внутрь меша и фиксируют расстояние до противоположной стенки. Для тонких деталей — ушей персонажа, лепестков, краёв накидки — эта карта даёт Subsurface Scattering корректный ввод. Без неё SSS работает равномерно, и ткань выглядит как пластик.
Инструменты и подход к запеканию
Для производственного пайплайна используем три варианта в зависимости от задачи:
Marmoset Toolbag 4 — предпочтительный инструмент, когда нужен контроль над cage и Baker Groups. Позволяет настраивать Curvature через Curvature Intensity, Curvature Bias и Curvature Smooth Angle. Smooth Angle критичен: при 180° карта захватывает все нормали как кривые, при 0° — только геометрические рёбра.
Substance Painter 9 — удобен, когда запекание идёт прямо в рабочем слое. Curvature здесь генерируется из нормальной карты, а не из геометрии, что быстрее, но менее точно на low-poly с острыми углами без сглаживания.
Blender + BakeMaster addon — для инди-проектов, где нет лицензий на Marmoset. Настраивается через Cycles с кастомным нодграфом: Geometry Node → Pointiness → Color Ramp → Image Texture. Thickness запекается через AO с Local Space и инвертированной нормалью.
Независимо от инструмента, перед запеканием меш должен пройти несколько проверок:
- Нормали high-poly усреднены корректно — без перевёрнутых фейсов
- Smooth Groups на low-poly совпадают с UV-швами
- Cage не пересекает сам себя в зонах вогнутостей
- UV-острова имеют одинаковый texel density по всему ассету
Как Curvature используется в материале
Запечённая Curvature Map в чистом виде — промежуточный результат. В Substance Painter она подаётся в Generator Metal Edge Wear как маска для edge highlighting. В ShaderGraph Unity её используют как вход для lerp между двумя материалами: на выпуклостях металл стёрт до блеска, во впадинах — накопилась грязь.
Правильный workflow: Curvature → Color Ramp (настроить конкретные диапазоны) → маска на слой. Без Color Ramp карта даёт слишком широкую маску, и эффект выглядит размыто.
Для Thickness — подключение к параметру Thickness в Lit Shader с включённым Subsurface Scattering. В URP/HDRP это Subsurface Mask Map в канале A. В кастомном шейдере — отдельная текстура, семплируемая в фрагментном шейдере для расчёта глубины рассеивания.
Типичные ошибки, которые дорого обходятся
Запекание без Baker Groups. Если у персонажа рука перекрывает торс при позе A-Pose, Marmoset запечёт кривизну торса с учётом тени от руки. Разделение на группы решает это — каждая часть тела запекается изолированно.
Curvature с неправильным Smooth Angle. Значение 90° подходит для hard-surface. Для органики — 160–180°, иначе все мышечные переходы выглядят как граффити из белых пятен.
Thickness на открытой геометрии. Если меш не замкнут (открытый цилиндр, например), лучи уходят в бесконечность и возвращают 0. Нужно либо закрыть геометрию временными заглушками, либо ограничить Ray Distance до предполагаемой максимальной толщины объекта.
Использование 8-bit для Curvature. Карта кривизны — градиентные данные. На 8-bit появляется banding на плавных переходах. Для финального материала Curvature хранят в 16-bit, конвертируя в 8-bit только при необходимости экономии памяти на мобильных платформах.
Процесс работы над картами
На практике запекание Curvature и Thickness занимает небольшую часть от общего времени, но ошибка здесь тянет за собой переделку нескольких слоёв материала. Поэтому начинаем с аудита меша: проверяем UV-острова, Baker Groups, правильность Smooth Groups.
| Масштаб задачи | Ориентировочный срок |
|---|---|
| Один hero-ассет, до 5 UV-сетов | от 4 до 8 часов |
| Персонаж с полным набором LOD | от 1 до 2 дней |
| Окружение (пропсы + модульные тайлы) | от 3 до 7 дней |
| Запекание для существующего пайплайна (интеграция в команду) | по согласованию |
После запекания — проверка на тестовой сфере со стандартным материалом, где Curvature подаётся напрямую как Albedo. Быстрый способ увидеть все артефакты до того, как они спрятались под слоями грязи и царапин.
Стоимость определяется после просмотра меша и технического задания — количество UV-сетов, целевое разрешение текстур и требования к движку влияют на трудозатраты напрямую.





