Мы сталкиваемся с LOD-проблемами на каждом втором проекте. Неправильно настроенный LOD Group в Unity даёт обратный эффект: LOD0 переключается на LOD1 слишком рано, игрок видит резкий pop, и это воспринимается как баг. Или переходы настроены по Screen Relative Height без учёта реального расстояния — на ортографической камере LOD вообще не работает. Наша задача — сделать LOD незаметным, но эффективным.
Суть в том, что LOD — это система управления сложностью сцены в зависимости от видимости объекта. Она работает правильно только когда учтены: тип камеры, скорость движения игрока, освещение (отбрасываемые тени у LOD1 часто хуже, чем у LOD0), и то, как движок считает расстояние.
Как возникает LOD pop и что с ним делать?
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 от деревьев на горизонте. Оценим ваш проект за 1–2 дня.
Почему LOD-политика должна отличаться для разных типов объектов?
Под каждую категорию объектов (персонажи, здания, пропсы, растительность) устанавливаем отдельную LOD-политику. Пример из практики — мобильная RPG, открытый мир 2×2 км. Деревья: LOD0 (500 полигонов) до 15 метров, LOD1 (80 полигонов) до 50 метров, LOD2 (billboard cross) до 150 метров, Culled за 150 метров. Здания: LOD0 до 30 метров, LOD1 до 80 метров, LOD2 до 200 метров. Такая настройка дала снижение Draw Calls с 680 до 210 в центре города.
Для Unreal Engine работаем с Nanite там, где это применимо — на статичных мешах с высоким poly count. Но Nanite не заменяет LOD для движущихся объектов и не работает с полупрозрачными материалами. HLOD в UE5 настраиваем через World Partition HLOD Layer. Согласно документации Unreal Engine, Nanite best practice требует отключать LOD для Nanite-мешей.
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 за 5 шагов?
- Профилирование GPU: откройте Profiler → GPU Usage и Frame Debugger с фильтром по Draw Calls. Определите, сколько объектов рендерится с избыточной детализацией.
- Анализ Overdraw: в Scene View включите Overdraw mode — найдите объекты с высоким overdraw без LOD.
- Классификация: разделите объекты на категории и для каждой установите количество уровней и пороговые дистанции по таблице ниже.
- Генерация LOD: используйте Simplygon или встроенный генератор. Для критичных мешей — ручная доработка.
- Тестирование на целевой платформе: проверьте отсутствие pop и прирост FPS.
| Категория объектов | Уровни | Пороги (м) | Тени |
|---|---|---|---|
| Персонажи | LOD0, LOD1, LOD2 | 0–10, 10–25, 25–50 | On до LOD1 |
| Здания | LOD0, LOD1, LOD2 | 0–30, 30–80, 80–200 | On до LOD0 |
| Пропсы (мелкие) | LOD0, LOD1 + Culled | 0–5, 5–15 | Off на LOD1 |
| Растительность (деревья) | LOD0, LOD1, Billboard, Culled | 0–15, 15–50, 50–150 | Off на LOD2 |
Процесс работы над LOD
Аудит начинается с Profiler → GPU Usage и Frame Debugger. Смотрим, сколько объектов рендерится за пределами видимой детализации. После аудита готовим LOD-спецификацию: таблица с категориями объектов, количеством уровней, пороговыми дистанциями, политикой теней для каждого уровня. Это артефакт, который согласовываем с командой художников.
Реализация: либо настройка существующих LOD Group, либо создание LOD-ассетов (если их нет), либо автоматическая генерация с последующей ручной правкой критичных объектов.
—
После аудита мы выявили 450 объектов без LOD. Создали LOD-ассеты с 2–3 уровнями, применили cross-fade для зданий и instant для пропса. Результат: FPS вырос с 28 до 55 на Samsung Galaxy S10. Экономия Draw Calls составила 40%.
Что входит в работу
| Deliverable | Описание |
|---|---|
| LOD-спецификация | Документ с порогами, уровнями и настройками теней для каждой категории |
| Настроенные LOD Group | Все ассеты с правильной конфигурацией |
| Оптимизированные меши | Сгенерированные или вручную доработанные LOD-копии |
| Рекомендации по баджену | Инструкции для художников по подготовке исходников |
| Поддержка при внедрении | Консультации на этапе интеграции и тестирования (1 месяц) |
| Масштаб задачи | Ориентировочные сроки |
|---|---|
| Аудит LOD-настроек + отчёт | 1–3 дня |
| Настройка LOD для одной сцены (до 200 типов объектов) | 1–2 недели |
| Разработка LOD-политики + реализация для open-world | 3–6 недель |
| Интеграция HLOD/Nanite в существующий проект | 2–4 недели |
Свяжитесь с нами для консультации — мы подготовим предложение под ваш проект. Наши инженеры имеют опыт настройки LOD для AAA-проектов и мобильных игр. Пишите, оценим задачу за 1–2 дня без обязательств.






