Запікання карт освітлення (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
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • 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 = light zones 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.