Запекание карт освещения (Lightmaps) для графики

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

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

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Запекание карт освещения (Lightmaps) для графики
Средняя
от 4 часов до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • 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

Запекание карт освещения (Lightmaps) для графики

Lightmap-запекание — это технология, которую принято считать «устаревшей» на фоне Lumen и real-time GI. На практике она остаётся основным способом получить качественное, производительное освещение на мобильных платформах и бюджетных PC. Даже в Unreal Engine 5-проектах многие студии используют baked lighting для статичных интерьеров, потому что Lumen при всех преимуществах не даёт той же чёткости теней и той же производительности на слабом железе.

Качество запечённого освещения зависит от десятка параметров, и большинство проблем с «плохими» lightmaps — следствие неправильно выставленных именно этих параметров.

Главная причина артефактов: UV2 и texel density

Lightmap в Unity или Unreal запекается в отдельный UV-канал — UV2 (или Lightmap UV в Unreal). Это не та же развёртка, что используется для albedo. Lightmap UV имеет жёсткие требования:

  • Никаких перекрытий (overlapping): каждый треугольник меша — на своём уникальном месте в UV2
  • Минимальный отступ между островами (padding): не менее 2 texels при целевом разрешении lightmap. Если lightmap 512px и padding 2px — это ~0.4% от текстуры на каждый шов. При 2048px — 0.1%. Недостаточный padding = bleeding светлых зон в тёмные через смежные острова UV
  • Все острова должны быть развёрнуты без зеркальных отражений (no mirrored UVs): зеркалирование даёт корректный albedo, но в lightmap вызывает двойное освещение на симметричных частях

Unity автоматически генерирует Lightmap UV при импорте (Generate Lightmap UVs в Import Settings). Для простой геометрии это работает. Для сложных мешей с острыми углами или тонкими деталями — автогенерация создаёт некорректные острова, которые при запекании дают видимые seams на lightmap. В таких случаях UV2 делается вручную в DCC-инструменте (Blender, Maya, 3ds Max) и импортируется уже готовым.

Texel density в Lightmap UV — это сколько пикселей lightmap приходится на единицу площади поверхности. Для больших плоских поверхностей (пол, стены) — нужен больший участок в UV2. Для мелких деталей (плинтус, дверная ручка) — меньший. Unity и Unreal позволяют контролировать это через Scale in Lightmap (Unity) и Lightmap Resolution Scale (Unreal) на каждом объекте отдельно. Одинаковый Scale для всех объектов сцены — типичная ошибка: мелкие объекты получают избыточное разрешение, крупные — недостаточное.

Progressive Lightmapper: параметры, которые действительно важны

В Unity главный инструмент для запекания — Progressive Lightmapper (с версии 2018.3, GPU-ускоренная версия с 2020.1). Это путь к пониманию большинства проблем с качеством.

Indirect Bounces. Количество переотражений света. При Bounces=0 — только прямое освещение, без GI. При Bounces=2 — свет отражается от поверхностей дважды, заполняя тени мягким ambient. Для тёмных помещений Bounces=2–3 — минимум для достоверного вида. Для ярких outdoor часто достаточно 1–2.

Indirect Intensity и Albedo Boost. Indirect Intensity масштабирует яркость GI глобально. Albedo Boost усиливает влияние цвета поверхностей на переотражённый свет — при значении 1.0 поверхность с ярко-красным albedo создаёт красноватый ambient на соседних поверхностях (colour bleeding). При Albedo Boost > 1 эффект усиливается, при < 1 — цвета поверхностей меньше влияют на GI. Для реалистичного рендера Albedo Boost = 1, для менее «грязного» ambient — 0.5–0.8.

Prioritize View и Progressive Updates. При запекании Progressive Lightmapper начинает с пикселей, видимых в Scene View — это удобно для итеративной работы, но при финальном запекании лучше отключить для равномерного качества по всей сцене.

Типичная проблема на крупных сценах — light leaking: свет проникает сквозь тонкие стены. Причина — shadow rays в path-tracer проходят через геометрию тоньше определённого порога. Решение: сделать стены и полы не менее 0.2–0.3 unit толщиной (зависит от масштаба сцены) и убедиться, что нет дыр в геометрии. Альтернатива — Shadow Bias в настройках источника света, но он решает проблему только частично.

Unreal Engine: Lightmass и его специфика

В Unreal для запекания используется Lightmass — Global Illumination система со своими параметрами в World Settings → Lightmass.

Static Lighting Level Scale. Глобальный масштаб для качества запекания — чем меньше значение, тем выше детализация lightmaps, но дольше запекание. По умолчанию 1.0 — для production-качества снижают до 0.5–0.75.

Num Indirect Lighting Bounces. Аналог Bounces в Unity. Для тёмных интерьеров — 4–6, для outdoor — 3–4.

Indirect Lighting Quality. Множитель количества семплов для indirect lighting. Default = 1.0, для чистого production — 2.0–4.0. При высоком значении резко возрастает время запекания.

В Unreal Lightmass запекание происходит через Swarm — распределённую систему, которая может использовать несколько компьютеров в сети одновременно. Для больших уровней с большим разрешением lightmaps (4096+) без Swarm запекание может занимать 8–24 часа; с несколькими машинами в Swarm — в 4–8 раз быстрее.

Volumetric Lightmap в Unreal — аналог Light Probes в Unity. Автоматически строится при запекании и обеспечивает ambient для динамических объектов. Параметр Volumetric Lightmap Detail Cell Size в World Settings контролирует плотность решётки. Меньше значение — точнее ambient для динамических объектов, больше объём данных.

Распространённые проблемы при запекании

Seams на lightmap. Видимые границы между UV-островами на освещённой поверхности. Причина: недостаточный padding в UV2. Решение — увеличить padding или пересмотреть разбивку UV-островов.

Тёмные пятна в углах. Не всегда artistically correct AO — иногда это недостаточное количество Indirect Samples. Проверить: увеличить Indirect Samples вдвое и посмотреть, изменились ли тёмные зоны. Если шум уменьшился — samples были занижены.

Жёлтый или красный tint на серых поверхностях. Colour bleeding от соседних окрашенных поверхностей с высоким Albedo Boost. Снизить Albedo Boost или проверить, нет ли соседних ярко окрашенных объектов без Cast Shadows = Off.

Lightmap слишком размыт. Слишком низкий Scale in Lightmap для данного объекта — не хватает texels. Увеличить Scale или пересмотреть приоритеты распределения texel density по сцене.

Масштаб задачи Ориентировочный срок
Запекание одного небольшого помещения (до 20 объектов) 1–2 дня
Interior-уровень среднего размера 3–6 дней
Outdoor-уровень с лесом, terrain и prop-ами 5–12 дней
Исправление артефактов в готовом проекте 2–4 дня
Настройка UV2 + запекание с нуля (весь уровень) 2–6 недель

Сначала аудит UV2-развёрток и настроек Import Settings, потом проектирование распределения texel density, итеративное запекание с увеличением качества, финальная проверка артефактов и сдача.

Стоимость рассчитывается индивидуально после анализа проекта: размер сцены, количество источников, целевая платформа и существующее состояние UV2.