Налаштування рівнів деталізації (LOD) для графіки

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

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

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Налаштування рівнів деталізації (LOD) для графіки
Середня
від 1 робочого дня до 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

Настройка рівнів деталізації (LOD) для графіки

LOD — не просто «зробити три версії моделі». Неправильно налаштований LOD Group у Unity може дати зворотний ефект: LOD0 перемикається на LOD1 занадто рано, гравець бачить різкий pop, це сприймається як баґ. Або переходи налаштовані за Screen Relative Height без обліку реальної дистанції, та на ортографічній камері LOD взагалі не працює.

Суть у тому, що LOD — це система управління складністю сцени залежно від видимості об'єкту. І вона працює правильно тільки коли враховані: тип камери, швидкість руху гравця, освітлення (відкидані тіні у LOD1 часто гірше, ніж у LOD0), та як движок рахує дистанцію.

Реальні проблеми, які ломають LOD у продакшені

LOD Pop — головна візуальна проблема. Відбувається, коли геометрія та/або текстури між рівнями відрізняються занадто сильно. Класичний випадок: художник зробив LOD1 з на 60% меншою кількістю полігонів, але UV-розгортка поїхала, та нормал-карта не компенсує втрату форми. Перехід з 10 метрів — помітен неозброєним оком. Вирішується через правильний LOD-генератор (Simplygon, Unity LOD Generator) з збереженням UV-seam'ів та перевіркою normal projection.

Тіні не слідують за LOD-переходами. У Unity Shadow Caster Culling працює незалежно від LOD Group. Якщо у вас LOD2 — плоский billboard з 2 полігонами, але тінь все ще рахується від LOD0 mesh (тому що Force Shadow Casting = On), ви платите за рендер тіней від повної геометрії об'єкту, якого візуально нема. Це легко пропустити — Frame Debugger показує Shadow Pass з повним Draw Call-бюджетом.

HLOD (Hierarchical LOD) не настроєний для великих сцен. У open-world проектах стандартний LOD Group не працює на дистанції понад 500 метрів — об'єкти просто culled, але Scene не вивантажується. Unity HLOD (через HLOD Creator пакет) об'єднує дальні об'єкти в один mesh автоматично. Без цього у вас може бути 3000 Draw Calls від дерев на горизонті.

Як налаштовуємо LOD у проектах

Починаємо з профілю ігрової камери: FOV, типова дистанція до об'єктів, швидкість перемощення. Для шутера від першої особи з FOV 90° та швидкістю руху 6 м/с пороги LOD будуть принципово іншими, ніж для RTS з ізометричною камерою.

Під кожну категорію об'єктів (персонажі, будівлі, пропси, рослинність) встановлюємо окрему LOD-політику. Приклад з практики — мобільна RPG, відкритий світ 2×2 км. Дерева: LOD0 (500 полігонів) до 15 метрів, LOD1 (80 полігонів) до 50 метрів, LOD2 (billboard cross) до 150 метрів, Culled за 150 метрів. Будівлі: LOD0 до 30 метрів, LOD1 до 80 метрів, LOD2 до 200 метрів. Така настройка дала перехід з 680 Draw Calls у центрі міста до 210.

Для Unreal Engine працюємо з Nanite там, де це застосовно — на статичних мешах з високим poly count. Але Nanite не заміняє LOD для рухомих об'єктів та не працює з напівпрозорими матеріалами. HLOD у UE5 настроюємо через World Partition HLOD Layer.

Cross-фейдинг замість hard pop. Unity LOD Group підтримує Cross Fade mode — дітерінг-перехід між рівнями. Працює через Dither Fade шейдерне ключове слово. На мобільних платформах дітерінг дешевіше, ніж здається — Adreno добре його паралелить. Включаємо для крупних об'єктів на передньому плані, залишаємо instant-перехід для дрібного пропса вдалеке.

Рослинність — окремо історія. SpeedTree LOD інтегрується у Unity через окремий pipeline. Головна ловушка — billboard LOD SpeedTree рендерится через окремий BatchRendererGroup, та його потрібно профілювати окремо від основного Draw Call счетчика. Бачили проекти, де 40% GPU time йшло на 2000 billboard-дерев, які здавались «вже оптимізованими».

Процес настройки LOD

Аудит починається з Profiler → GPU Usage та Frame Debugger з фільтром по Draw Calls. Дивимось, скільки об'єктів рендерится за межами видимої деталізації. Потім — Scene View у Overdraw mode, щоб знайти об'єкти з високим overdraw без LOD.

Після аудиту готуємо LOD-специфікацію: таблиця з категоріями об'єктів, кількістю рівнів, пороговими дистанціями, політикою тіней для кожного рівня. Це артефакт, який узгоджуємо з командою художників — їм важливо розуміти, до якої дистанції потрібно робити «красиву» геометрію.

Реалізація: либо настройка існуючих LOD Group, либо створення LOD-ассетів (якщо їх немає), либо автоматична генерація через Simplygon з подальшою ручною правкою критичних об'єктів.

Масштаб завдання Орієнтовні строки
Аудит LOD-настроїв + звіт 1–3 дні
Настройка LOD для однієї сцени (до 200 типів об'єктів) 1–2 тижні
Розробка LOD-політики + реалізація для open-world 3–6 тижнів
Інтеграція HLOD/Nanite у існуючий проект 2–4 тижні

Вартість визначається після аналізу сцени та вимог до цільових платформ.