This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров 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
Работа с контентом
Оптимизация контента
Материалы
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

World Clutter

Узел World Clutter позволяет разбросать набор идентичных узлов (node references) случайным образом по сцене практически одним щелчком мыши. Больше нет необходимости вручную позиционировать, масштабировать и вращать каждый отдельный объект и постоянно думать о производительности. World Clutter автоматически помещает узлы в сцену со случайными параметрами, всеми из которых можно эффективно управлять, и отображает их только вокруг камеры. World Clutter используется для рассеивания негеометрических объектов, таких как декали, системы частиц и так далее. Но если вы хотите разбрасывать одинаковые меши (геометрию), лучше использовать Mesh Clutter.

World Clutter разбрасывает объекты процедурно и, следовательно, еще более эффективно использует память. В то же время это означает, что разбросанные предметы нельзя перемещать.

Примечание
World Clutter использует только ссылочные узлы потому что когда мир загружен, они гораздо быстрее распределяются вокруг камеры.

Разбросанная щепа, созданная с использованием World Clutter

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

  • Класс WorldClutter для редактирования World Clutter через API

Создание World Clutter#

Чтобы создать World Clutter, сделайте следующее:

  1. Добавьте узел World Clutter: в Меню , выберите Create -> Clutter -> Node.

  2. Разместите на сцене World Clutter.

Объекты World Clutter#

Объекты в World Clutter - это node references, которые разбросаны по определенной области и для каждого из которых контролируется вероятность его появления.

Node references that are contained in the clutter

Список ссылок на узлы в World Clutter
Probability slider

Чем выше вероятность, тем чаще можно увидеть node reference по сравнению с другими объектами World Clutter. Допустим, мы создаем берег из щепы и водорослей. Мы создаем декаль из древесной стружки и декаль с водорослями и сохраняем их как файлы *.node ( создаем файл NodeReference ). Если ползунок вероятности для водорослей близок к нулю, берег покрыт древесной стружкой и среди них видно только несколько водорослей. Изменение вероятности появления не влияет на количество визуализируемых объектов, а только указывает соотношение между несколькими объектами World Clutter.

  • Если вероятность равна нулю, объект вообще не отображается.
  • Если в World Clutter есть только один объект, параметр вероятности (кроме случая, когда он равен нулю) игнорируется, и появление объекта зависит исключительно от плотности .
Add Добавить node reference в список объектов World Clutter.
Remove Удалить все выбранные node references из списка. Чтобы выделить объект, необходимо установить флажок рядом с ним.
Reload Перезагрузить все node references в World Clutter. После редактирования node reference сохраненные изменения не применяются автоматически к тем же узлам, разбросанным по World Clutter. Это происходит потому, что ссылочный узел после однократной загрузки копируется из внутреннего кеша, что позволяет очень быстро создавать множество копий. Опция Reload обновляет этот кеш, и изменения в параметрах объектов вступают в силу.

Параметры World Clutter#

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

После добавления и разброса объекты нельзя перемещать или вращать. Единственный способ изменить картину рассеяния - это изменить параметр Seed .

Size X
Size Y

Размер ограничивающего прямоугольника World Clutter по осям X и Y. В пределах этой области объекты будут разбросаны с заданной плотностью.

Размер измеряется в единицах.

Step for Cells

Размер ячейки в единицах. Количество ячеек в World Clutter определяется следующим образом: размер World Clutter (как по X, так и по Y ) делится на шаг.

Чем больше количество ячеек (т.е. чем меньше шаг), тем выше нагрузка. Однако создание одной большой ячейки занимает больше времени. Когда камера движется достаточно быстро, маленькие ячейки будут создаваться очень медленно, но большие могут заметно выскочить из поля зрения и вызвать небольшую задержку рендеринга.

Density

Плотность указывает, сколько объектов приходится на квадратную единицу. Если в World Clutter больше одного объекта, вероятность будет учтено, но не изменит итоговое количество всех визуализированных объектов.

Если значение плотности слишком высокое, объекты могут проникать друг в друга.

Lower Density
Низкая плотность
Higher Density
Более высокая плотность
Visibility Distance

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

  • Если установлено значение inf, параметр Fade Distance будет проигнорирован.
  • Реальный радиус видимости World Clutter напрямую зависит от объекта (поверхности) максимальная дальность видимости а также его Fade Distance . Однако даже в том случае, если он исчезнет на более близком расстоянии, дальнейшее увеличение видимого расстояния приведет к ухудшению производительности, поскольку вычисления, связанные с генерацией ячеек, все еще выполняются.
  • Расстояние видимости фактически измеряется до ячейки: когда камера перемещается на указанное расстояние от нее, ячейка создается. Без Fade Distance или объекта Maximum Visibility Distance объекты будут отображаться в заметных квадратах.
Fade Distance

По мере затухания количество объектов постепенно уменьшается, так как они исчезают случайным образом один за другим. Расстояние замирания измеряется, начиная с Visibility Distance. Если установлено расстояние перехода, нет четкой линии, где объекты, содержащиеся в World Clutter, внезапно исчезают. Вместо этого некоторые из них будут плавно переходить в фон без визуального шума.

Примечание
Для достижения наилучшего результата рекомендуется также сочетать этот эффект с исчезновение объектов .
Spawn Rate

Определяет, сколько ячеек (в которых отображается World Clutter) обновляются в каждом кадре.

Примечание
Установка слишком большого количества обновляемых ячеек может привести к скачку производительности.
Seed Начальное значение для генератора псевдослучайных чисел позволяет создавать различные шаблоны автоматического позиционирования. Начальное число либо устанавливается вручную, либо механизм предоставляет случайное значение для начального числа (опция Randomize).

Рандомизация объектов World Clutter#

Для рандомизации внешнего вида объектов, составляющих World Clutter, используются два типа значений:

  • Средние значения (Scale, Offset, Rotation) определяют среднее значение. Это базовые значения, которые будут случайным образом увеличиваться или уменьшаться.
  • Значения Spread (Spread) определяют диапазон возможного изменения параметра. Чем выше значение, тем разнообразнее будет конечный результат.

    Значение спреда является необязательным : если установлено значение 0, оно не повлияет на процесс моделирования, и для всех объектов будет использоваться только среднее значение.

После того, как эти значения указаны, каждый параметр рассчитывается по следующей формуле:

Result = Mean + Random * Spread

где Random - случайное значение в диапазоне от -1 до 1. Например, если значение параметра Mean равно 3, а значение Spread равно 1, окончательный результат будет любым в диапазоне от 2 до 4.

Scale

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

Среднее значение масштаба не может быть отрицательным.

Min Scale

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

Примечание
Если маска изображения не задана, этот параметр не учитывается, поскольку маска по умолчанию хранит только максимальные значения маски (нет участков с низкой плотностью).
Max Scale Устанавливает среднее значение масштаба для объектов, разбросанных в областях с высокой плотностью (согласно маске изображения ). Чем выше значение, тем крупнее будут объекты в таких областях.
Offset

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

Смещение измеряется в единицах.

Rotation X
Rotation Y
Rotation Z

Эти параметры позволяют произвольно ориентировать разбросанные объекты.

Вращение задается в углах. Если значение распространения установлено на 180, объекты будут повернуты на 360 градусов.

Маскирование областей объектами#

Размещать предметы, равномерно разбросанные во всех направлениях и местах, естественно, не очень удобно. Вместо создания нескольких маленьких узлов World Clutter, покрывающих ограниченное место, можно использовать большой с маской.

Image Mask

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

Примечание
Если маска изображения не задана, будет использоваться маска по умолчанию с максимальными значениями маски. Максимальное значение маски - 255.
  • Маска представляет собой одноканальную текстуру (R8). Если в предоставленной маске есть другие каналы, они будут проигнорированы.

    • Значение цвета Zero указывает области без объектов World Clutter.
    • Чем выше значение цвета, тем больше объектов в этой области и тем плотнее они расположены.
    • Значение цвета 255 означает, что плотность соответствует указанной в параметре соответствующий параметр .
  • Маскирование выполняется для всех объектов, содержащихся в списке World Clutter.

World Clutter mask for scattering

Примечание
Чтобы нарисовать маску изображения прямо в сцене, используйте Mask Editor.
Threshold for Mask

Чтобы контролировать силу маскирования, используется порог маски. Он проверяет плотность маски для области, и если пороговое значение выше, чем значение цвета маски, объекты разбрасываются по ней. Если маскированной плотности недостаточно, место оставляют голым.

  • При минимальном значении 0 маска применяется как есть.
  • При более высоком пороговом значении объекты разбросаны только в областях, отмеченных маской как плотные. Вместо разреженного распределения объектов, разбросанных здесь и там, они, скорее всего, будут отображаться плотными изолированными группами.
  • При максимальном значении 1 объекты не будут разбросаны вообще.
Minimum Threshold
Threshold = 0
Maximum Threshold
Threshold = 1
Mesh Mask Для размещения объектов можно использовать маску на основе сетки. Векторное маскирование позволяет не зависеть от разрешения текстуры маски и создавать дороги, реки и т.д. С чрезвычайно высокой точностью. Сетка для маскировки должна быть простой плоской сеткой.
Inverse Переключение флажка позволяет размещать объекты внутри или за пределами контура сетки.
Min and Max mask values

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

По умолчанию каждый канал маски изображения определяет области и плотность роста в диапазоне плотности цвета [0;255]. Однако, используя минимальное и максимальное значение, вы можете указать любой диапазон плотности цвета в пределах, и часть маски, содержащая соответствующие значения, будет использоваться для разброса узлов.

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

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

  • В диапазоне от 100 до 200 плотности может храниться один тип узлов.
  • В диапазоне от 190 до 255 плотности может быть сохранен другой тип узлов.
Flip X Горизонтальный переворот маски изображения .
Flip Y Вертикальный переворот маски изображения .
Cutout Intersection Битовая маска Cutout. Эта маска используется для вырезания объектов World Clutter в областях пересечения с объектами и декалями (например, для удаления растительности под домами или с поверхности дорог, проецируемых с помощью декалей). Объекты World Clutter вырезаются объектами и декалями, маска которых соответствует маске Intersection (по крайней мере, на один бит).
Cutout Inverse Переключает значение, которое указывает, должны ли объекты World Clutter отображаться внутри или за пределами областей, определенных маской cutout intersection.

Выравнивание по рельефу#

Если объекты в World Clutter не разбросаны по абсолютно плоской и не наклонной поверхности, они могут быть автоматически расположены так, чтобы точно повторять подъемы и спуски рельефа без каких-либо усилий. Для этого нижележащая поверхность должна быть родительской для узла World Clutter. (Если есть несколько узлов в иерархии между узлом ландшафта или сетки и World Clutter, пересечения все равно будут проверяться.)

Родителем для пересечения может быть только ландшафт или Mesh-объект. Сетка должна быть похожа на ландшафт, то есть иметь только одну поверхность по вертикали по координате Z.

Примечание
World Clutter выполняет только одно тестирование вертикального пересечения с геометрией родительской сетки. Если под верхней поверхностью есть поверхности, они будут проигнорированы. Например, чтобы разбросать опорные узлы по всей сфере, необходимо использовать две полусферные сетки.
Intersection

После установки флажка Intersection объекты в World Clutter разбросаны по поверхности родительского объекта.

Не имеет значения, если World Clutter больше родительского объекта по размеру - область рассеивания по-прежнему будет ограничена поверхностями родительского объекта.

Orientation

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

Этот параметр включен, только если включена опция Intersection.

Orientation disabled
Ориентация отключена
Orientation enabled
Ориентация включена
Angle

Как и в случае с травой , рассеяние может учитывать крутизну наклона.

  • При минимальном значении 0 не имеет значения, насколько плоская или наклонная поверхность, по которой разбросаны объекты World Clutter.
  • Чем больше значение, тем более ровным должно быть место для разбросанных по нему предметов. Таким образом, более высокие значения делают менее крутые поверхности голыми.
  • При максимальном значении 1 объекты могут быть разбросаны только по идеально горизонтальной поверхности.

Этот параметр доступен, только если отмечена опция Intersection.

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