This page has been translated automatically.
Основы UNIGINE
1. Введение
2. Виртуальные миры и работа с ними
3. Подготовка 3D моделей
4. Материалы
5. Камеры и освещение
6. Реализация логики приложения
7. Создание кат-сцен и запись видео
8. Подготовка проекта к релизу
9. Физика
11. ПРОЕКТ2: Шутер от первого лица
12. ПРОЕКТ3: Аркадная гонка по пересеченной местности от 3-го лица
13. ПРОЕКТ4: VR приложение с простым взаимодействием

Основные механизмы оптимизации

Once you have assessed the scene performance status, you already have some idea of what exactly you need to pay attention to in order to improve and speed up your application.После оценки состояния производительности сцены вы уже имеете определенное представление о том, на что именно необходимо обратить внимание, чтобы усовершенствовать и ускорить работу приложения.

As a rule, one of the main ways to improve performance is to correctly select and apply optimization tools to the 3D scene geometry.Как правило, один из основных способов повысить производительность – это правильно выбрать и применить инструменты оптимизации к геометрии 3D-сцены.

Let's take a look at the main tools available in UNIGINE:Давайте рассмотрим основные инструменты, которые есть в UNIGINE:

  • Levels of Detail (LODs) — the main way to optimize your project. The idea is to show a simplified model with less detail instead of a highly detailed model when the object is far away from the camera. To do this, you need to take a detailed model and create several versions of it for different distances, each with a reduced number of polygons.Уровни детализации (LOD-ы) — это основной способ оптимизации вашего проекта. Суть в том, чтобы вместо модели с высокой детализацией показывать более простую, с меньшим количеством деталей, когда объект находится далеко от камеры. Для этого вам нужно взять детализированную модель и создать несколько ее версий для разных дистанций, каждая с уменьшенным количеством полигонов.

    A model with LODs can be represented as a single Mesh object with a number of surfaces, each representing a certain LOD. LOD settings allow you to specify the distance for switching between surfaces.Модель с LOD-ами также можно представить в виде одного объекта Mesh с несколькими поверхностями, каждая из которых – это отдельный LOD. В настройках LOD-ов для каждой такой поверхности можно указать расстояние, на котором она должна переключится на другую.

    LODs can be configured automatically when importing the model into UNIGINE or manually via a 3D editor and UnigineEditor.LOD-ы можно настроить автоматически при импорте модели в движок или вручную с помощью 3D-редактора и UnigineEditor.

    10109 polygons
    LOD 0
    10109 polygons
    LOD 0
    5004 polygons
    LOD 1
    5004 polygons
    LOD 1
    2583 polygons
    LOD 2
    2583 polygons
    LOD 2
  • Impostors — flat images used instead of real models at a far distance from the camera. This method allows rendering objects with preserving visual accuracy: each impostor has the same transformation and appearance of the original object, but its geometry has only 2 triangles. Typically, impostors are used in scenes with a large number of objects that need to be visible from a long distance.Импосторы — плоские изображения, используемые вместо реальных моделей на большом расстоянии от камеры. Такой способ позволяет отрисовывать объекты с сохранением визуальной точности: каждый импостор повторяет преобразование и внешний вид исходного объекта, но имеет при этом всего 2 треугольника геометрии. Обычно импосторы используют в сценах с большим количеством объектов, которые должны быть видны на большом расстоянии.

    UNIGINE has a handy tool for creating impostors — Impostors Creator. It is accessible via the UnigineEditor main menu (Tools -> Impostors Creator).В UNIGINE есть удобный инструмент для создания импосторов – Impostors Creator. Он доступен в главном меню UnigineEditor (Tools -> Impostors Creator).

    A real object (on the left) and its impostor (on the right) in the sceneРеальный объект (слева) и его импостор (справа) в сцене
  • Switching on and off the nodes at a certain distance from the camera using World Switcher. With this tool, you can disable parts of the virtual scene that are far away from the user, thus improving performance.Включение и выключение нод, находящихся на определенном расстоянии от камеры с помощью World Switcher. С помощью этого инструмента вы можете незаметно для пользователя отключать отдельные части виртуальной сцены, которые расположены от него на достаточно большом расстоянии, тем самым улучшая производительность.
  • Occlusion Culling allows you to avoid rendering geometry occluded by other opaque geometry by cutting it off using special occluders (Occluder, Occluder Mesh) or using Hardware Occlusion Queries.Отсечение объектов по окклюзии (Occlusion Culling) позволяет не отрисовывать геометрию, загороженную другой непрозрачной геометрией, отсекая ее с помощью специальных окклюдеров (Occluder, Occluder Mesh) или используя аппаратную окклюзию (Hardware Occlusion Queries).
  • Managing a large number of identical objects using Mesh Cluster and Mesh Clutter allows you to simplify the node hierarchy by replacing many identical objects with one. Mesh Cluster allows you to arrange the meshes it stores around the scene as you see fit. Mesh Clutter scatters meshes randomly, and they cannot be edited individually. However, using Mesh Clutter is more efficient in terms of memory consumption.Управление большим количеством идентичных объектов с помощью Mesh Cluster и Mesh Clutter позволяет упростить иерархию нод, заменив множество одинаковых объектов одним. Кластер позволяет расставлять меши, которые в нем хранятся, по сцене по вашему усмотрению. Клаттер разбрасывает меши случайным образом, и их нельзя редактировать по отдельности. Однако, использование клаттера более эффективно с точки зрения потребления памяти.

However, it's not just the geometry of a 3D scene that affects performance. Inefficient use of light sources, dynamic shadows and reflections, and other effects can significantly reduce the application speed. That's why UNIGINE has a bit masking mechanism that allows you to selectively apply certain effects or enable certain properties for individual objects. Bit masks are used in the following systems:Однако, не только геометрия 3D-сцены влияет на производительность. Нерациональное использование источников света, динамических теней и отражений, а также других эффектов может значительно снизить скорость работы приложения. Поэтому в UNIGINE существует механизм битовых масок, который позволяет выборочно применять или включать определенные эффекты или свойства для отдельных объектов. Битовые маски используются в следующих системах:

  • Rendering into viewportрендеринг во вьюпорт,
  • Shadowingотображение теней,
  • Reflections renderingотрисовка отражений,
  • Collisionsколлизии,
  • Intersectionsпересечения,
  • Decalsдекали,
  • Fieldsполя,
  • Sound sourcesисточники звука,
  • Physicalsфизические явления,
  • Pathfinding (inside Navigation Areas)построение траекторий (внутри Navigation Area).

Bit mask operating principle is as follows: an effect or property has a certain set of flags — bit masks — that define the scope of this effect or property. Cameras, Objects, Collision Shapes (used to detect collisions with physical objects) and other entities contain some of these bit masks depending on the type of entity and the possibility of applying a particular effect to it.Принцип работы механизма битовых масок таков: у эффекта или свойства есть определенный набор флагов – битовых масок – которые определяют область действия этого эффекта или свойства. Камеры, объекты, Collision Shapes (используются для обнаружения столкновений с физическими объектами) и другие сущности содержат некоторые из этих битовых масок в зависимости от типа сущности и возможности применения к ней того или иного эффекта.

Masks are compared bitwise using logical conjunction, that is, the first bit of one mask is compared to the first bit of the other mask and so on. Two bit masks are considered a match if they have at least 1 matching bit, regardless of the value of the other bits.Маски сравниваются побитно с применением логической конъюнкции, то есть первый бит одной маски сравнивается с первым битом другой маски и так далее. Две битовые маски считаются совпавшим, если у них есть как минимум 1 совпадающий бит, независимо от значение остальных битов.

An effect is only applied to an object if their bit masks match.Эффект применяется к объекту, только если их битовые маски совпадают.

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