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

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Запікання карт нормалей (Normal Map) для моделей ігор
Середня
~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
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • 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, інформація про цільовий рушій.