Создание карт кривизны (Curvature) и толщины (Thickness)

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Создание карт кривизны (Curvature) и толщины (Thickness)
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Создание карт кривизны (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-сетов, целевое разрешение текстур и требования к движку влияют на трудозатраты напрямую.