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

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

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

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

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

Настройка уровней детализации (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 недели

Стоимость определяется после анализа сцены и требований к целевым платформам.