This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

Настройка уровней детализации

Использование уровней детализации (LODs) — это основной способ оптимизации вашего проекта. Суть в том, чтобы переключить модель с высокой детализацией на версию с меньшим количеством деталей, когда она находится далеко от камеры. Для этого вам нужно взять детальную модель и создать несколько ее версий, каждая с меньшим количеством полигонов.

В UNIGINE модель с LOD может быть представлена в виде одного объекта Mesh с несколькими поверхностями представляющими LOD-ы. Настройки LOD позволяют указать расстояние, на котором одна поверхность должна быть переключена на другую.

LOD можно настроить одним из следующих способов:

Смотрите также#

  • Глава Уровни детализации в статье об управлении мирами
  • Вкладка Surfaces инструмента Content Profiler для мониторинга уровней детализации поверхностей при помощи фильтров Min/Max Visibility и Min/Max Fade

Автоматическая настройка LOD#

Автоматическая настройка LOD подразумевает, что LOD для модели назначаются и настраиваются при ее импорте в UNIGINE.

Примечание

При импорте модели вы можете выбрать один из следующих вариантов:

  • Автоматическая генерация LOD, выполняемая UNIGINE. В этом случае вам нужна только ваша высокополигональная модель — все остальное сделает движок.
  • Использование постфиксов имени для указания LOD. В этом случае вам следует предварительно подготовить отдельные меши для разных уровней детализации вашей модели в стороннем ПО.

Автоматическая генерация LOD#

UNIGINE позволяет автоматически генерировать уровни детализации для вашей высокополигональной модели прямо при ее импорте, экономя ваше время, поскольку в этом случае вам не нужно вручную готовить уровни детализации, используя какое-либо стороннее программное обеспечение. Функционал основан на использовании библиотеки meshoptimizer.

Для автоматической генерации LOD при импорте модели в UNIGINE, просто перетащите ее в Asset Browser и выполните следующие действия:

  1. В окне настроек импорта выберите Auto-Generated в выпадающем списке Use LODs.

  2. Установите необходимое количество LOD. Например, мы будем генерировать 3.
  3. Укажите значение Target Polycount (%) для каждого уровня детализации. Оно определяет степень упрощения геометрии для каждого уровня детализации.

    • Для LOD 0 оставьте значение по умолчанию 100 процентов.
    • Для LOD 1 установите 60 процентов от исходного количества полигонов.
    • Для LOD 2 установите 30 процентов от исходного количества полигонов.

  4. Укажите минимальное и максимальное расстояния видимости для каждого уровня детализации. Максимальная дальность видимости каждого LOD должна быть равна минимальной дальности видимости следующего LOD. Максимальное расстояние видимости последнего LOD должно быть равно inf.

    • Для LOD 0 оставьте расстояние по умолчанию Min и установите расстояние Max на 5 единиц. Это означает, что как бы близко камера не подходила к мешу, поверхности все равно будут видны.
    • Для LOD 1 установите расстояния Min и Max в единицах 5 и 30. Это означает, что когда камера находится на расстоянии 5 единиц от меша, первые поверхности LOD не будут видны, а поверхности второго LOD-а будут отображаться на расстоянии 30 единиц.
    • Для LOD 2 установите расстояние Min в 30 и оставьте значение по умолчанию Max. После 30 единиц поверхности второго LOD-а не будут видны, и будут отображаться поверхности третьего LOD-а.

  5. Укажите минимальное и максимальное расстояния fade для каждого уровня детализации:

    • Для LOD 1 оставьте расстояние по умолчанию Min и установите расстояние Max на 10 единиц. Это увеличит расстояние, на котором поверхности LOD все еще видны, и обеспечит плавный переход.
    • Для LOD 2 установите расстояние Min на 10 единиц. Через 5–15 единиц вторая поверхность LOD будет плавно проявляться. Расстояние Max установлено на 20 единиц. После 30 до 50 единиц второй уровень детализации плавно исчезнет.
    • Для LOD 3 установите расстояние Min на 20 единиц и оставьте значение по умолчанию Max. Поверхности третьих LOD начнут плавно исчезать с 30 до 50 единиц.
  6. Оставьте значение 0 для опции Normals Preserve, чтобы игнорировать нормали и упростить топологию меша.
  7. Оставьте значение по умолчанию 60 для параметра Recalculate Normals by Angle.

Движок автоматически сгенерирует и настроит все LOD, используя указанные параметры.

Объединение LOD по постфиксам#

Если вы готовите LOD в стороннем программном обеспечении, вы можете автоматически назначать и настраивать LOD модели на основе постфиксов имени.

Шаг 1. Экспорт модели из стороннего программного обеспечения#

В качестве примера мы будем использовать модель tubes_constructor_chrome_1120.fbx из демонстрации Oil Refinery (доступной в UNIGINE SDK Browser). Этот FBX состоит из нескольких мешей, каждый из которых представляет собой элемент конструктора труб.

Выполните следующие действия в 3D-редакторе:

  1. Создайте несколько мешей для разных уровней детализации вашей модели: детальный меш для ближайшего уровня детализации и несколько менее подробных мешей для более дальних уровней детализации.

    Примечание
    При именовании мешей добавьте постфикс, чтобы указать LOD, который представляет каждый меш. Например: _lod_0 для 1-го LOD, _lod_1 для 2-го LOD и т. д.

    Например, для каждого меша, представляющего элемент конструктора труб (10 мешей), есть 3 меша, представляющих LOD:

  2. Экспортируйте меши как файл .fbx.

Шаг 2. Импорт модели в UNIGINE#

Чтобы импортировать модель в UNIGINE, перетащите ранее экспортированный файл FBX в Asset Browser и выполните следующие действия для автоматического создания LOD на основе постфиксов имени:

  1. Выберите Combine By Postfixes в раскрывающемся списке Use LODs.
  2. Укажите максимальное количество LOD, хранящихся в контейнере FBX (в нашем случае 3).
  3. Для каждого уровня детализации определите постфикс, который будет использоваться для группировки объектов в файле FBX в соответствующий уровень детализации.

    Примечание
    Постфикс должен быть таким же, как тот, который используется при создание объектов в 3D редакторе .

    Для модели конструктора труб необходимо указать следующие постфиксы:

    Имена сгенерированных поверхностей будут такими: material_name + LOD_postfix.
  4. Укажите минимальное и максимальное расстояние видимости для каждого уровня детализации. Максимальная дальность видимости каждого LOD должна быть равна минимальной дальности видимости следующего LOD. Максимальное расстояние видимости последнего LOD должно быть равно inf.

    • Для _lod_0 оставьте расстояние по умолчанию Min и установите расстояние Max в единицах 5. Это означает, что как бы близко камера не подходила к мешу, поверхности все равно будут видны.
    • Для _lod_1 установите расстояния Min и Max в единицах 5 и 30. Это означает, что когда камера находится на расстоянии 5 единиц от меша, первые поверхности LOD не будут видны, а поверхности второго LOD-а будут показаны на расстоянии 30 единиц.
    • Для _lod_2 установите расстояние Min в 30 и оставьте значение по умолчанию Max. После 30 единиц поверхности второго LOD-а не будут видны, и будут отображаться поверхности третьего LOD-а.

  5. Укажите минимальное и максимальное расстояние перехода для каждого уровня детализации:

    • Для _lod_0 оставьте расстояние по умолчанию Min и установите расстояние Max на 10 единиц. Это увеличит расстояние, на котором поверхности LOD все еще видны, и обеспечит плавный переход.
    • Для _lod_1 установите расстояние Min на 10 единиц. После 5 до 15 единиц вторая поверхность LOD будет плавно исчезать. Расстояние Max установлено на 20 единиц. После 30 до 50 юнитов вторая поверхность LOD будет плавно исчезать.
    • Для _lod_2 установите для расстояния Min значение 20 и оставьте значение по умолчанию Max. Поверхности третьих LOD начнут плавно исчезать с 30 до 50 единиц.

В результате будет импортирован контейнер FBX с 10 мешами. Каждый меш будет иметь 3 поверхности, представляющие уровни детализации.

Меши импортированного FBX
Примечание
При работе с большими сценами нельзя точно знать, сколько LOD будет у той или иной модели. Поэтому в импортере рекомендуется указывать большее число LOD: в этом случае вам не придется настраивать LOD вручную, если модель содержит больше LOD, чем ранее импортированная. Например, если вы настроили 10 уровней детализации в импортере, вы можете импортировать модели максимум с 10 уровнями детализации.

Шаг 3. Добавление модели в сцену#

Добавьте экспортированную модель в мир как описано здесь. Все LOD будут созданы и настроены в соответствии с указанными значениями импорта:

Конструктор импортированных труб с LOD

FBX добавлен в мир

При необходимости настройте поверхности LOD на вкладке Node окна Parameters:

  • Настройте параметры Min and Max Parent. В этом руководстве мы используем значения по умолчанию 1.

Попробуйте переместить камеру вперед/назад, чтобы проверить, как переключаются уровни детализации:

Переключение LOD

Ручная настройка LOD#

Ручная настройка LOD подразумевает, что LOD для модели создаются в стороннем 3D-редакторе, а параметры LOD настраиваются, когда модель уже импортирована и добавлена в сцену.

Примечание
Ручная настройка LOD также показана в видеоуроке Оптимизация контента.

Шаг 1. Экспорт LOD#

Чтобы экспортировать меш с LOD, сделайте следующее:

  1. В своем 3D-редакторе создайте детальную модель и ряд моделей с небольшим количеством полигонов. Например, можно просто скопировать существующую детальную модель и уменьшить количество полигонов.

    Примечание
    Вы должны создать отдельный LOD для каждой части модели, которой назначен уникальный материал.

    В качестве примера мы будем использовать модель осциллографа из бенчмарка Superposition (доступна через UNIGINE SDK Browser). Эта модель уже содержит 3 LOD.

    10109 polygons 5004 polygons 2583 polygons
    LOD 0
    LOD 1
    LOD 2
  2. Создайте LOD в соответствии с конвейером, используемым вашим 3D-редактором. Например, в 3ds Max вы должны группировать меши, представляющие уровни детализации, а затем создавать уровни детализации с помощью утилиты Level of Detail.
  3. Экспортируйте модель с уровнями детализации в виде файла *.fbx.

Шаг 2. Импорт модели в UNIGINE#

Для импорта модели в UNIGINE:

  1. Нажмите Import в Asset Browser и выберите экспортированный файл FBX.
  2. В окне Import FBX включите опцию Merge Static Meshes. В противном случае LOD будут импортированы как отдельные меши, а не как поверхности одного меша.
  3. Импортируйте модель.

Если вы выберете импортированный FBX, его содержимое будет предварительно просмотрено в разделе Hierarchy окна Parameters.

Шаг 3. Добавление модели в сцену#

Добавьте экспортированную модель в мир как описано здесь . По умолчанию все поверхности (LOD) видны одновременно:

Модель осциллографа

Поверхности экспортированной модели, представляющие уровни детализации, можно найти на вкладке Node окна Parameters:

Шаг 4. Настройте LOD#

В этом разделе объясняется, как настроить LOD мешей, чтобы плавно переключать LOD с высокой детализацией на низкую, когда камера начинает удаляться. Поверхности LOD имеют 3 параметра:

Примечание
Глава содержит примеры значений параметров. При необходимости вы можете указать свои собственные.

Дистанции видимости и перехода#

Для каждой поверхности LOD вы должны указать дистанцию видимости и дистанцию перехода. Следующее изображения показывает эти дистанции и принцип их работы.

Для настройки поверхностей LOD выполните следующие действия:

  1. Откройте окно World Hierarchy и выберите добавленную ноу.
  2. В группе Surfaces вкладки Node (окно Parameters) выберите первую поверхность LOD :

    • Установите его расстояние Maximum Visibility на 5. Это означает, что когда камера находится на расстоянии 5 единиц от меша, первые поверхности LOD не будут видны.
    • Оставьте расстояние Minimum Visibility равным -inf. Это означает, что как бы близко камера не подходила к мешу, поверхности все равно будут видны.
    • Установите расстояние Maximum Fade на 10 единиц. Это увеличит расстояние, на котором поверхности LOD все еще видны, и обеспечит плавный переход.

    Примечание
    Вы можете отключить другие поверхности LOD, чтобы увидеть результат текущих настроек поверхности LOD.
  3. Выберите поверхности второго LOD-а и:

    • Установите расстояние Minimum Visibility вторых поверхностей LOD, чтобы оно начиналось точно там, где заканчивается расстояние Maximum Visible первых поверхностей LOD: в единицах 5. Это означает, что когда первые поверхности LOD начнут исчезать, будут показаны поверхности второго LOD-а.
    • Установите расстояние Maximum Visibility на 30 единиц. После 30 единиц поверхности второго LOD-а начинают исчезать, и будут отображаться поверхности третьего LOD-а.
    • Установите расстояние Minimum Fade на 10 единиц. После 5-15 юнитов поверхность второго уровня детализации плавно исчезнет.
    • Установите расстояние Maximum Fade на 20 единиц. После 30-50 юнитов второй уровень детализации плавно исчезнет.

  4. Выберите третью поверхность LOD и:
    • Установите расстояние Minimum Visibility на 30 единиц. Это означает, что когда поверхности второго LOD-а начнут исчезать, будут показаны поверхности третьего LOD-а.
    • Установите расстояние Maximum Visibility в единицах 300. После 300 единиц поверхности третьего LOD-а полностью исчезают.
    • Установите расстояние Minimum Fade на 20 единиц. Поверхности третьего уровня детализации начнут плавно увеличиваться с 30 до 50 единиц.
    • Установите расстояние Maximum Fadeна 50 единиц. После 300 единиц меш начнет плавно исчезать.

      Примечание
      Если вы хотите, чтобы последняя поверхность LOD всегда была видимой, установите для параметра «Максимальное расстояние видимости» значение inf.

Вы должны указать одинаковые настройки для каждой поверхности одного и того же LOD (если есть). Разные поверхности одного уровня детализации должны иметь одинаковые настройки, чтобы появляться и исчезать одновременно.

Min Parent и Max Parent#

Другими важными параметрами LOD являются Min Parent and Max Parent.

Эти параметры позволяют указать, до какой поверхности или ноды вверху в иерархии будут измеряться минимальное и максимальное расстояния видимости. Используйте значения по умолчанию 1. В этом случае все поверхности меша будут переключаться одновременно, т.к. их расстояния будут измеряться не до самих поверхностей, а до ограничивающего прямоугольника всего меша.

Подробнее об этих параметрах можно прочитать здесь.

Последнее обновление: 16.08.2024
Build: ()