Запекание карт нормалей (Normal Map) для моделей игр

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

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

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Запекание карт нормалей (Normal Map) для моделей игр
Средняя
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • 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

Запекание карт нормалей (Normal Map) для моделей игр

Normal map — это иллюзия. Она убеждает движок, что на поверхности 3000-полигонного low-poly меча есть выгравированные руны и текстура металла. Хорошая нормал-карта работает незаметно. Плохая — видна сразу: тёмные полосы по граням, шов посередине рукоятки, «плоское» лицо персонажа под боковым освещением.

Технически normal map запекается за минуты. Запекается правильно — это уже вопрос знания конкретных настроек, понимания tangent space и умения предвидеть артефакты до их появления.

Три источника артефактов и как их устранять

Tangent space mismatch. Это, пожалуй, самая неочевидная причина «правильной» нормал-карты, которая выглядит неправильно в движке. Marmoset Toolbag, xNormal, Substance Painter и каждый движок используют свои конвенции tangent space. Unity (Standard и URP/HDRP) — MikkTSpace. Unreal Engine — тоже MikkTSpace, но с особенностями обработки hard edges в UE4 vs UE5. Godot — MikkTSpace. Если карта запечена в одном tangent space и импортирована в движок с другим, получим некорректное освещение: вместо рельефа — странные блики не в тех местах.

Решение: в Marmoset Toolbag 4 выставляем Tangent Space → MikkTSpace (Blender/Unity/UE). В Substance Painter это настройка при импорте меша (Compute Tangent Space Per Fragment). Проверяем результат в самом движке, не только в preview инструмента.

Hard edge + UV seam несовпадение. Стандартная геометрия hard-surface имеет hard edges (smoothing group breaks) на конструктивных рёбрах. Если UV seam не совпадает с этими рёбрами, baker будет интерполировать нормали через seam — результат: тёмная или светлая полоса вдоль ребра. Правило одно: каждый hard edge должен быть UV seam, каждый UV seam на hard-surface — hard edge. Это не рекомендация, это обязательное условие.

В Blender это делается через Edge → Mark Sharp + Mark Seam на одних и тех же рёбрах. В Maya — через Mesh Display → Soften/Harden Edge и UV Seam на совпадающих рёбрах. В 3ds Max — Smoothing Groups + UV seam по той же логике.

Cage и projection misses. Для сложной геометрии с вогнутыми формами, флоатинг деталями (отдельные объекты поверх основной геометрии) или с большим расхождением между HP и LP в Marmoset Toolbag необходимо работать с Bake Groups. Каждая флоатинг деталь — отдельная группа с индивидуальным cage offset. Без этого baker cast лучи через неправильную геометрию и получает чёрные пятна или инвертированные нормали в зонах пересечения.

Настройки запекания в Marmoset Toolbag 4

Marmoset Toolbag 4 — основной инструмент для production bake. Настройки для финального запекания:

  • Samples: 512 для 4096 карт, 256 для 2048. Ниже — noise на сложных переходах.
  • Dilation: 32px для 4096, 16px для 2048. Критично для mip-map bleeding.
  • Tangent Space: MikkTSpace (для большинства движков).
  • Max Frontal / Rear Distance: индивидуально под каждый ассет. Слишком большой rear distance — baker захватывает geometry с обратной стороны. Слишком маленький — misses на деталях с большим offset от LP.

Для флоатинг geometry (заклёпки, накладки, декоративные элементы): отдельный Bake Group для каждой группы флоатинга. Max Frontal Distance = чуть больше расстояния от LP поверхности до дальней точки флоатинг объекта. Rear Distance = минимальный.

В xNormal используем тот же подход, но через .hnmap файл настроек cage для каждого ассета. xNormal быстрее на больших сценах и полезен для batch bake когда нужно запечь 50+ объектов одновременно.

QA нормал-карты до передачи в production

Запечённую карту обязательно проверяем в движке — не только в Marmoset. Причина: preview в Toolbag использует собственный PBR рендер, который может маскировать проблемы, незаметные при стандартном освещении в движке.

Чеклист проверки:

  • Освещение с трёх сторон: ключевой, боковой, backlight
  • Extreme angles: камера почти параллельно поверхности (grazing angle)
  • Проверка граней: нет ли тёмных полос вдоль hard edges
  • Проверка seam-ов: нет ли видимых швов по UV boundary

Если карта прошла проверку в движке — она готова.

Ориентиры по срокам

Ассет Карты Сроки
Простой проп (оружие, инструмент) Normal + AO 2–6 часов
Среднесложный объект (техника, детали) Full PBR 4–10 часов
Персонаж (один UV tile) Full PBR 1–3 дня
Сложный ассет с флоатингом Full PBR 2–4 дня
UDIM персонаж (4–6 тайлов) Full PBR per tile 3–6 дней

Стоимость рассчитывается индивидуально. На входе нужны: high-poly (FBX/OBJ), low-poly с готовым UV, информация о целевом движке.