This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров узла
Setting Up Materials
Setting Up Properties
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Objects
Sound Objects
Pathfinding Objects
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
UnigineScript
C++
C#
Унифицированный язык шейдеров UUSL
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Отсечение по окклюзии

Отсечение объектов позволяет не отображать объекты, не попадающие в усеченную пирамиду видимости. В частности существуют следующие варианты отсечения по окклюзии:

Примечание
Поскольку ограничивающий прямоугольник объекта используется для отсечения по окклюзии (проверяется, виден ли ограничивающий прямоугольник или нет), рекомендуется экспортировать объекты из программного обеспечения для компьютерной 3D-графики в локальных координатах, чтобы границы сетки были ближе к геометрии.

Окклюдеры#

Окклюдеры позволяют отсекать геометрию, которая не видна позади них. Есть 2 типа окклюдеров:

Тип используемого окклюдера определяется выбираемой геометрией.

Окклюдеры могут быть очень эффективны в сложных сценах, где есть много объектов, которые перекрывают друг друга и требуют больших затрат на рендеринг (у них много полигонов и / или тяжелых шейдеров).

Примечание
Использование окклюдеров для отсечения больших объектов с несколькими поверхностями может вызвать дополнительную потерю производительности. Более того, окклюдеры не эффективны в сценах с плоскими объектами или когда камера смотрит на сцену сверху. Поэтому при использовании окклюдеров следует учитывать особенности отбираемых объектов.

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

  • Визуализация окклюдеров включена: в меню включен Rendering -> Occlusion Culling -> Occluders.
  • Отрисовка теней от закрытых объектов отключена: в меню выберите Windows -> Settings -> Occlusion Culling и включите Shadows Culling.
    Примечание
    При необходимости можно оставить включенным рендеринг теней.

Использование окклюдеров показано в видеоуроке Оптимизация контента .

Использование прямоугольного окклюдера#

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

Прямоугольный-окклюдер внутри здания

Чтобы создать прямоугольный окклюдер, выполните следующие действия:

  1. В меню выберите Create -> Optimization -> Occluder и добавьте окклюдер в качестве дочернего узла к узлу, который должен перекрывать другие объекты.
  2. В разделе Common вкладки Node в окне Parameters установите положение окклюдера на родительский.

  3. В разделе World Occluder вкладки Node щелкните Edit Size, чтобы включить режим редактирования для окклюдера. Измените размер окклюдера, используя цветные прямоугольники по бокам окклюдера, чтобы он совпадал с размером родительского узла.
    Примечание
    Вы также можете использовать параметр Size, чтобы установить размер по осям.

  4. Укажите Distance между камерой и окклюдером, при котором окклюдер ничего не закрывает и, следовательно, должен быть отключен, чтобы избежать негативного влияния на производительность.

Чтобы проверить, как работает окклюдер, отключите родительский узел, а затем попробуйте включить и выключить окклюдер:

По умолчанию передние грани окклюдера используются для отсечения объектов. Однако, если камера находится внутри окклюдера (например, внутри здания), отсечение окклюзии выполняться не будет. Чтобы избежать такой ситуации, включите параметр Back Face в разделе World Occluder вкладки Node.

Использование меш-окклюдера#

Меш-окклюдер основан на произвольном меше, который отсекает поверхности объектов, границы которых не видны позади Это. Меш-окклюдер используется вместе с геометрией, которую нельзя аппроксимировать прямоугольным окклюдером.

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

  1. Подготовьте низкополигональную сетку, которая будет использоваться для окклюдера.
    Примечание
    Не рекомендуется использовать ту же подробную сетку, которая используется для узла, который должен перекрывать другие объекты: сетка для окклюдера должна быть как можно более простой, чтобы избежать потери производительности.

  2. В меню выберите Create -> Optimization -> Occluder Mesh и укажите подготовленную сетку.
    Примечание
    Вы можете загрузить новую меш для окклюдера в любое время.
  3. Добавьте окклюдер в качестве потомка к узлу, который должен перекрывать другие объекты.
  4. В разделе Common вкладки Node в окне Parameters установите положение окклюдера на родительский.

  5. Укажите Distance между камерой и окклюдером, при котором окклюдер ничего не закрывает и, следовательно, должен быть отключен, чтобы избежать негативного влияния на производительность.

Запросы аппаратной окклюзии#

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

Чтобы запустить тест аппаратной окклюзии для сцены перед отправкой данных на GPU, включите флаг Rendering -> Occlusion Culling -> Occlusion Query в меню.

Примечание
Отбор будет выполняться для всех объектов с флагом Culled by Occlusion Query, установленным на вкладке Node окна Parameters.

Чтобы запустить тест на окклюзию оборудования, выполните следующие действия:

  1. В меню включите флаг Rendering -> Occlusion Culling -> Occlusion Query, чтобы включить тестирование сцены перед отправкой данных на графический процессор.

  2. Для всех объектов, которые следует отсечь, включите флаг Culled by Occlusion Query на вкладке Node окна Parameters.
    Примечание
    Только узлы с этим установленным флагом проверяются на аппаратное отсечение по окклюзии.

Если для объекта включена отсечение, для него отображается окно запроса окклюзии .

Material ball и его окно запроса окклюзии
Примечание
Чтобы визуализировать такие блоки, включите опцию Helpers -> Occlusion Queries.

Поле запроса окклюзии совпадает с размером ограничивающего прямоугольника объекта. Когда это поле перекрывается (т.е. его нет в области просмотра камеры), оно подсвечивается красным , что означает, что тест на окклюзию не пройден и сетка не будет отрисована.

Тест запроса на окклюзию пройден
Тест запроса окклюзии не прошел, Material ball не отображается
Примечание
Запросы аппаратной окклюзии следует использовать только для объектов, использующих тяжелые шейдеры. В противном случае производительность будет снижаться, а не увеличиваться. Рекомендуется включить запросы для воды или объектов с отражениями.

Вы можете проверить эффект этой техники, включив второй каркасный режим, чтобы увидеть все треугольники в сцене. Введите в консоли render_show_triangles 2 и проверьте, как действуют закрытые многоугольники.

Пример использования запросов аппаратной окклюзии также доступен в видеоуроке Оптимизация контента .

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