Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.
Что такое уровень детализации (LOD)?
Уровень детализации (LOD) — это техника 3D-рендеринга, которая заменяет более простые версии модели по мере того, как она занимает меньше места на экране, снижая геометрическую сложность и, в зависимости от того, как созданы ассеты, материалы или вызовы отрисовки, при этом визуальное различие остается незаметным.
Игры, VR впечатления и другие приложения в реальном времени 3D используют LOD для поддержания стабильной частоты кадров в сценах с тысячами объектов.
Как работает уровень детализации?
Уровень детализации работает путем подготовки нескольких версий одного и того же объекта, каждая из которых имеет меньшую детализацию, чем предыдущая, и выбора соответствующей версии в зависимости от того, насколько большим объект выглядит на экране. Unity и большинство других движков нумеруют эти версии как LOD0, LOD1, LOD2 и так далее, при этом LOD0 является наиболее детализированным.
Количество треугольников обычно уменьшается с каждым уровнем LOD.
Переключение между уровнями может вызывать видимый всплеск. Перекрестное затухание смешивает исходящий и входящий уровни на короткое время, чтобы изменение было менее заметным.
Какие бывают уровни детализации?
Уровень детализации проявляется в нескольких формах, и многие проекты сочетают эти методы:
- Дискретный LOD: Двигатель переключается между фиксированным набором заранее созданных мешей с разным уровнем детализации. Это распространенный подход в играх.
- Непрерывный LOD: Меш упрощается или уточняется постепенно по мере изменения его размера в экранном пространстве, а не переключается на фиксированных уровнях LOD.
- Иерархический LOD (HLOD): Группы удаленных объектов объединяются в упрощенное представление, что снижает количество вызовов отрисовки и геометрическую сложность.
- Текстурный LOD (мипмаппинг): GPU сэмплирует прогрессивно уменьшающиеся, предварительно отфильтрованные версии текстуры по мере того, как поверхности становятся дальше или занимают меньше места на экране.
- Билборды и самозванцы: Удаленная 3D-модель заменяется упрощенным представлением, часто плоским изображением, обращенным к камере.
Уровень детализации и Unity
Unity предоставляет несколько способов реализации уровня детализации, включая Mesh LOD и компонент LOD Group. Mesh LOD может генерировать LOD во время импорта ассетов и предназначен для уменьшения геометрии и обработки вершин GPU с минимальным дополнительным использованием памяти. Группа LOD позволяет настраивать отдельные уровни LOD и переключаться между ними в зависимости от размера экрана.
В чем разница между LOD и отсечением?
Уровень детализации и отсечение оба уменьшают объем рендеринга, но они действуют на объекты по-разному:
Большинство проектов в реальном времени могут использовать все три вместе. Отсечение удаляет объекты, которые не нужно отображать, в то время как LOD упрощает объекты, которые остаются видимыми.
Каковы преимущества использования уровня детализации?
- Более высокая частота кадров: Рендеринг меньшего количества треугольников для удаленных объектов снижает нагрузку на GPU, что может помочь проекту поддерживать целевую частоту кадров.
- Более крупные, плотные сцены: Открытые миры, леса и городские пейзажи могут отображать гораздо больше объектов одновременно.
- Масштабируемая производительность: LOD может помочь одному и тому же контенту масштабироваться на платформах с различными возможностями производительности, включая мобильные устройства и автономные VR-гарнитуры.
Каковы проблемы использования уровня детализации?
- Видимое всплывание: Резкий переход между уровнями может быть заметен, если переходы не скомбинированы (cross-faded) или пороги не настроены.
- Дополнительная память и хранилище: Каждая дополнительная сетка LOD может добавить данные сетки, увеличивая использование памяти и потенциально размер сборки.
- Время создания: Ручные уровни требуют времени художника, а автоматически сгенерированные уровни все еще нуждаются в проверке на визуальные артефакты.
Часто задаваемые вопросы (FAQ)
Сколько уровней LOD должен иметь модель?
Нет фиксированного количества уровней LOD для каждой модели. Правильное число зависит от размера экрана объекта, расстояния просмотра, визуальной сложности, платформы и целевых показателей производительности. Дополнительные уровни могут обеспечить более постепенные изменения в деталях, но они также требуют дополнительного авторского труда или обработки. Советы по оптимизации мобильной графики в Unity предполагают сокращение количества треугольников примерно вдвое между уровнями LOD.
Применяется ли уровень детализации к текстурам, а также к сеткам?
Да. Мипмаппинг — это техника детализации текстур на основе уровней, при которой графический процессор сэмплирует меньшие, предварительно отфильтрованные копии текстуры, когда поверхности кажутся более удаленными или занимают меньше места на экране. Это может снизить пропускную способность памяти текстур и визуальные артефакты, такие как мерцание. Меш LOD также может использовать разные материалы или шейдеры на более низких уровнях, в зависимости от того, как были созданы LOD.