This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
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

Растительность: советы по созданию

This article describes principles of modeling and configuring plants and ways to achieve the best performance in scenes with dense vegetation in UNIGINE.В этой статье описаны принципы моделирования и настройки растений, а также способы достижения наилучшей производительности в сценах с густой растительностью в UNIGINE.

Polygon PlantsПолигональные растения#

Models of plants based on polygon meshes should be used for close-ups and middle distances for the most realistic representation of real-life greenery. It is crucial to use optimized 3D models of trees in real-time projects.Модели растений на основе полигональных сеток следует использовать для крупных планов и средних расстояний для наиболее реалистичного представления реальной зелени. Крайне важно использовать оптимизированные 3D-модели деревьев в проектах реального времени.

This section will introduce you to some vegetation authoring tips in UNIGINE and third-party Digital Content Creation software.В этом разделе вы познакомитесь с некоторыми советами по созданию растительности в UNIGINE и стороннем программном обеспечении для создания цифрового контента.

ModelingМоделирование#

When preparing a 3D model of a tree with dense foliage, avoid creating topology for all branches and leaves; instead, it is much more efficient performance-wise to simulate fine details with textures. The main rule of models optimized for use in real-time is "the fewer polygons — the better". Following this rule is much more critical for rendering a dense forest filled with multiple types of plants and grasses.При подготовке 3D-модели дерева с густой листвой избегайте создания топологии для всех ветвей и листьев; вместо этого гораздо эффективнее с точки зрения производительности имитировать мелкие детали с помощью текстур. Главное правило моделей, оптимизированных для использования в реальном времени, — «чем меньше полигонов — тем лучше». Следование этому правилу гораздо важнее для рендеринга густого леса, наполненного различными видами растений и трав.

Therefore, it is highly recommended to prepare several levels of detail (LODs) for a plant to be used at different distances from the camera.Поэтому настоятельно рекомендуется подготовить несколько уровней детализации ( LOD ) для использования растения на разном расстоянии от камеры.

The overall workflow of modeling a tree is as follows:Общий рабочий процесс моделирования дерева выглядит следующим образом:

  1. Model several small branches with leaves and bake the models into texture atlases — the obtained textures are going to be your foliage textures. Here are examples of such textures:Смоделируйте несколько небольших веток с листьями и запеките модели в атласы текстур — полученные текстуры будут текстурами вашей листвы. Вот примеры таких текстур:

  2. Create low-poly meshes that will represent foliage chunks, map UVs for proper texturing. The chunks do not have to be flat, you can experiment with the shape and bend of meshes. It is also important to prepare at least 3 LODs, so make sure to optimize the meshes of LODs to the full extent:Создавайте низкополигональные сетки, которые будут представлять собой фрагменты листвы, накладывайте UV-развертку для правильного текстурирования. Кусочки не обязательно должны быть плоскими, вы можете поэкспериментировать с формой и изгибом сетки. Также важно подготовить как минимум 3 LOD, поэтому обязательно оптимизируйте сетки LOD в полной мере:

    Branches

    Foliage LODsLOD для листвы
  3. Create the trunk with large branches and levels of detail for it. Prepare and assign necessary textures and materials.Создайте ствол с большими ветвями и уровнями детализации для него. Подготовьте и назначьте необходимые текстуры и материалы.

    Trunk LODsLOD багажника

    Also, it is recommended to transfer normals from the trunk to the adjoined vertices of branches to make a more natural look of joints:Также рекомендуется перенести нормали от ствола к примыкающим вершинам ветвей, чтобы придать суставам более естественный вид:

    Adjusted normals of branches at joints provide a more natural lookСкорректированные нормали ветвей на стыках обеспечивают более естественный вид
  4. Scatter the LODs of foliage chunks over branches of the corresponding trunk LODs forming the tree crown:Распределите LOD кусков листвы по ветвям соответствующих LOD ствола, образующих крону дерева:

    Tree LODs

    The fact that the same number of chunks is used on all LODs may result in a higher polygon count. However, this approach has a number of advantages:Тот факт, что одинаковое количество чанков используется во всех LOD, может привести к увеличению количества полигонов. Однако такой подход имеет ряд преимуществ:

    • High diversity of branches makes it possible to create more realistic plants.Большое разнообразие ветвей позволяет создавать более реалистичные растения.
    • A better, almost seamless transition between LODs. All elements can be adjusted at any time to get rid of any inconsistencies.Лучший, почти бесшовный переход между уровнями детализации. Все элементы можно в любой момент откорректировать, чтобы избавиться от каких-либо несоответствий.
    • A more permissive art pipeline enables the artists to collect trees of different sizes and ages out of the same chunks.Более либеральный художественный конвейер позволяет художникам собирать деревья разного размера и возраста из одних и тех же фрагментов.
    • Accurate work of post effects even on the lowest LODs (SSAO, SSGI, etc.).Точная работа постэффектов даже на самых низких LODах (SSAO, SSGI и т.д.).
  5. It is also recommended to create a separate low detail foliage LOD to simplify shadow casting. You can duplicate the lowest LOD and optimize it even more for this purpose and configure shadow casting in UNIGINE.Также рекомендуется создать отдельный LOD с низкой детализацией листвы, чтобы упростить отбрасывание теней. Вы можете продублировать самый низкий LOD и еще больше оптимизировать его для этой цели и настроить отбрасывание теней в УНИГИНЕ.
  6. For better blending with terrain, prepare a separate bottom part of the trunk with a new material assigned. You can merge it to the mesh of the highest LOD for convenience:Для лучшего слияния с рельефом подготовьте отдельную нижнюю часть ствола с назначенным новым материалом. Вы можете объединить его с сеткой самого высокого уровня детализации для удобства:

    Bottom part of the tree for blending with terrain

  7. Orient the model so it will be imported in UNIGINE appropriately, reset all transformations.Ориентировать модель чтобы он был импортирован в UNIGINE соответствующим образом, сбросьте все преобразования.

    Pay attention to the correct position of the mesh's pivot point (apparently, all the LODs must have the same position). As a rule, the pivot is placed at the bottommost point of the plant for ease of world design. However, you can alter the position of the pivot if this is needed for stem animation.Обратите внимание на правильное положение опорной точки меша (видимо, все LOD должны иметь одинаковое положение). Как правило, стержень размещают в самой нижней точке растения для удобства проектирования мира. Однако вы можете изменить положение оси вращения, если это необходимо для стеблевая анимация .

  8. As a result, the model has the following content:В результате модель имеет следующее содержание:

    For convenience, it is recommended to add postfixes to the names of levels of detail that will be used later during import.Для удобства рекомендуется добавлять постфиксы к названиям уровней детализации, которые будут использоваться в дальнейшем при импорте.

  9. Consider further adjustment of vertex normals and vertex colors and UVs for leaves animation.Рассмотрите возможность дальнейшей корректировки нормали вершин цвета вершин и UV для листья анимация .
  10. Export the model to the recommended FBX format.Экспорт модели в рекомендуемый формат FBX.

Configuring the Look of the PlantНастройка внешнего вида растения#

Import the created model to UNIGINE following the FBX Import Guide and add the plant to the scene.Импортируйте созданную модель в UNIGINE, следуя Руководство по импорту FBX а также добавить растение на сцену .

To make all separate objects surfaces of the single Mesh Static, enable Merge Static Meshes in the import settings.Чтобы сделать все отдельные объекты поверхностями одного Mesh Static, включите Объединить статические сетки в настройках импорта.

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

Set the visibility distances for LODs by enabling the Combine By Postfixes option and adjusting values in the import settings.Установите дистанцию видимости для LOD включив опцию Combine By Postfixes и изменив значения в настройках импорта.


Shadow LODТеневой LOD#

When dynamic shadow casting is used, all polygons are rendered one more time for each light source with shadows enabled. World light sources can have up to 4 shadow cascades, so the number of polygons rendered into shadow maps can be tremendous, leading to a strong performance hit. You can estimate this number by using the Rendering Profiler.Когда динамическое отбрасывание теней используется, все полигоны рендерятся еще раз для каждого источника света с включенными тенями. Источники света World могут иметь до 4 каскадов теней, поэтому количество полигонов, визуализируемых в карты теней, может быть огромным, что приводит к сильному снижению производительности. Оценить это число можно с помощью Профилировщик рендеринга .

That is why it is a best practice to use a low-poly mesh for foliage shadows. Perform the following steps:Вот почему лучше всего использовать низкополигональную сетку для теней листвы. Выполните следующие шаги:

  1. Disable shadow casting for all foliage LODs except the Shadow LOD. You can do it in one of the following ways:Отключите отбрасывание теней для всех LOD листвы, кроме LOD Shadow. Вы можете сделать это одним из следующих способов:

  2. Hide the shadow LOD for any camera by toggling off all bits of its Viewport Mask.Скройте теневой LOD для любой камеры, отключив все ее биты. Маска видового экрана .

See the demonstration of configuring a shadow LOD in the Bit Masking video tutorial.См. демонстрацию настройки теневого LOD в Видеоурок по битовой маскировке.

Materials AdjustmentНастройка материалов#

If the Import Materials flag was enabled in the import options, all necessary materials are already generated and assigned to the surfaces of the tree. Let's consider material parameters that worth being noted:Если в опциях импорта был включен флаг Import Materials, все необходимые материалы уже сгенерированы и назначены поверхностям дерева. Рассмотрим параметры материала, на которые стоит обратить внимание:

  • Make the leaves material Alpha-Test to cut out texels according to the Alpha channel of the Albedo texture.Сделайте материал листьев Alpha-Test, чтобы вырезать тексели в соответствии с альфа-каналом текстуры Albedo.
  • If specular highlights are incorrect, it is recommended to set the Specular value to 0.Если зеркальные блики некорректны, рекомендуется установить значение Specular на 0.

    Incorrect lighting on flat leaves

    Incorrect lighting on the Reflections Rendering Debug preview (left) and the result image (right)Неправильное освещение в предварительном просмотре отладки рендеринга отражений (слева) и итоговом изображении (справа)
  • Consider enabling the Two Sided option for the material to make the foliage denser. Be careful, as it may significantly affect performance if there are too many polygons in the scene.Рассмотрите возможность включения опции Two Sided для материала, чтобы сделать листву более плотной. Будьте осторожны, так как это может значительно повлиять на производительность, если в сцене слишком много полигонов.

    It may be better to switch the Backside Normal mode to the To Front Side option since it usually provides more realistic results for foliage.Может быть лучше переключить режим Backside Normal на параметр To Front Side, так как он обычно дает более реалистичные результаты для листвы.

  • If textures make it evident that foliage is made of flat chunks, a great solution to this is the Angle Fade feature that cuts out polygons faced to the camera at extreme angles.Если текстуры делают очевидным, что листва состоит из плоских кусков, отличным решением этой проблемы является функция Angle Fade, которая вырезает полигоны, обращенные к камере под экстремальными углами.

    Примечание
    This feature may work incorrectly for meshes that have modified normals.Эта функция может работать некорректно для мешей с модифицированными нормалями.
  • Adjusting translucency for the foliage material is necessary for a better look. Increase the Translucent value to permit light to pass through the object.Настройка прозрачности материала листвы необходима для лучшего вида. Увеличьте значение Translucent, чтобы позволить свету проходить через объект.

    You can also enable the use of the Translucent Map in the States tab to specify a single-channel texture that will define parts of the object that aren't translucent (such as branches).Вы также можете включить использование Translucent Map на вкладке States, чтобы указать одноканальную текстуру, которая будет определять непрозрачные части объекта (например, ветви).

    Примечание
    There is no need to paint fibers and small features of leaves on the Translucent texture if the Normal map is used and defines such surface irregularities.Нет необходимости прорисовывать волокна и мелкие детали листьев на полупрозрачной текстуре, если Обычный карта используется и определяет такие неровности поверхности.
    Albedo textureТекстура альбедо
    Translucent textureПолупрозрачная текстура
  • Enable the Terrain Lerp flag for the material of the bottom part of the tree to blend your tree with a Terrain in your scene.Включите флаг Terrain Lerp для материала нижней части дерева, чтобы смешать ваше дерево с Местность в вашей сцене.

Vertex Normals AdjustmentНастройка нормалей вершин#

The fact that foliage is composed of flat chunks results in inaccurate shading. To counteract this and hide the flatness of the mesh, adjust vertex normals and affect the foliage is shaded.Тот факт, что листва состоит из плоских кусков, приводит к неточному затенению. Чтобы противодействовать этому и скрыть плоскостность меша, отрегулируйте нормали вершин и затените листву.

The following solutions are possible:Возможны следующие решения:

  • Enable the Normals Rotated To Camera option so all surface normals will be oriented towards the camera, ignoring the geometry normals. This feature checks out as a quick solution, although it makes all polygons shaded the same way.Включите параметр Normals Rotated To Camera, чтобы все нормали поверхности были ориентированы на камеру, игнорируя нормали геометрии. Эта функция зарекомендовала себя как быстрое решение, хотя она делает все полигоны заштрихованными одинаково.

  • Edit vertex normals manually in your modeling software. Transfer vertex normals from a boundary cage to make the foliage look like a smooth and dense tree crown.Отредактируйте нормали вершин вручную в программном обеспечении для моделирования. Перенесите нормали вершин из граничной клетки, чтобы листва выглядела как гладкая и густая крона дерева.

    Примечание
    It is recommended to use a dome-like boundary cage with the sides elongated to the ground to avoid shading errors on lower polygons.Рекомендуется использовать куполообразную ограничительную клетку с вытянутыми к земле сторонами, чтобы избежать ошибок затенения на нижних полигонах.

    Transferring normals from a boundary cage

    Transferring normals from a boundary cageПеренос нормалей из граничной клетки

    As a result, the flatness of foliage geometry is less evident (on the right):В результате плоскостность геометрии листвы менее заметна (справа):

MIP MapsMIP-карты#

The MipMapping technique, supported by UNIGINE renderer, implies sampling lower textures for smaller and distant polygons. At that, minor features of foliage start wiping away with the distance. In some cases, branches and leaves look thicker when far from the camera than on a close-up view.Техника MipMapping , поддерживаемая средством визуализации UNIGINE, подразумевает выборку более низких текстур для более мелких и удаленных полигонов. При этом мелкие черты листвы начинают стираться с расстоянием. В некоторых случаях ветки и листья вдали от камеры выглядят толще, чем на крупном плане.

MIP maps

MIP mapsMIP-карты

This issue can be resolved via these approaches:Эта проблема может быть решена с помощью следующих подходов:

  • Engage the Mip Bias feature to shift the distance at which the switch between MIP-levels is performed. This option significantly affects the performance.Включите функцию Mip Bias, чтобы сместить расстояние, на котором выполняется переключение между уровнями MIP. Этот параметр существенно влияет на производительность.
  • By default, MIP maps for a texture are generated automatically on import using the Box filtering that may provide too blurred results. Consider switching to the Point filtering type to get sharper MIP maps.По умолчанию карты MIP для текстуры генерируются автоматически при импорте с использованием фильтрации Box, которая может давать слишком размытые результаты. Попробуйте переключиться на тип фильтрации Point, чтобы получить более четкие карты MIP.
  • You can also prepare custom MIP maps in third-party software. For example, here is a comparison between MIP maps generated using the Box filtering and the sharper Kaiser filtering:Вы также можете подготовить пользовательские карты MIP в стороннем программном обеспечении. Например, вот сравнение карт MIP, созданных с использованием фильтрации Box и более четкой фильтрации Kaiser:

    To import a texture with custom MIP-levels, use the Combine option for a texture with laid out MIP-levels or save them to a .dds format and import the texture with the Unchanged option enabled.Чтобы импортировать текстуру с пользовательскими уровнями MIP, используйте опцию Combine для текстуры с выложенными уровнями MIP или сохраните их в формате .dds и импортируйте текстуру с включенной опцией Unchanged.

AnimationАнимация#

Enable the Vegetation state to activate a set of animation-related parameters.Включите состояние Vegetation, чтобы активировать набор параметров, связанных с анимацией.

Vegetation options

Vegetation animation consists of Stem and Leaves animation. To enable both of them, set Animation to the Default or Field option.Анимация растительности состоит из Корень а также Листья анимация. Чтобы включить их оба, установите Animation в параметр Default или Field.

At that, Field Animation makes the plant be affected by Field Animation volumes enabling you to override animation parameters locally (e.g., simulation of rotor downwash effects in close proximity to a rotorcraft).При этом Field Animation делает растение уязвимым Полевая анимация объемы, позволяющие вам локально переопределять параметры анимации (например, симуляция эффектов нисходящей струи несущего винта в непосредственной близости от винтокрылого аппарата).

Stem AnimationАнимация стеблей#

Stem animation applies vertex movement based on spatial 3D noise to simulate bending of the plant's trunk or stem caused by wind. The mesh's pivot point is considered fixed, and the further the vertex is along the Z axis, the stronger movement is applied to it.Анимация стебля применяет перемещение вершин на основе пространственного 3D-шума, чтобы имитировать изгиб ствола или стебля растения, вызванный ветром. Точка вращения меша считается фиксированной, и чем дальше вершина находится по оси Z, тем сильнее к ней применяется движение.

Thus, it is necessary to place the pivot point at the correct position (usually, it is the bottommost point of the stem) and orient the model, so the Z axis goes upwards.Таким образом, необходимо правильно расположить точку вращения (обычно это самая нижняя точка стержня) и сориентировать модель так, чтобы ось Z была направлена вверх.

Stem animation preview

Stem animation exampleПример анимации стебля

A set of Parameters controls the animation.Набор Параметры управляет анимацией.

Animation parameters

Please make note that all surfaces of the plant must have identical stem animation parameters in order to synchronize their movement.Обратите внимание, что все поверхности растения должны иметь одинаковые параметры анимации стебля, чтобы синхронизировать их движение.

Different stem animation parameters result in not synchronized parts of the tree

Different stem animation parameters result in not synchronized parts of the treeРазличные параметры анимации ствола приводят к несинхронизированным частям дерева

Leaves AnimationАнимация листьев#

The Leaves animation is another layer of vertex shader animation mainly applied to foliage, providing additional detail bending. Using this type of animation requires preliminary adjustment to geometry on the modeling stage.Анимация листьев — это еще один уровень анимации вершинного шейдера, в основном применяемый к листве, обеспечивающий дополнительное изгибание деталей. Использование этого типа анимации требует предварительной корректировки геометрии на этапе моделирования.

Several approaches of leaves animation are available out of the box. Choose the type of animation using the Leaves option.Несколько подходов анимация листьев доступна из коробки. Выберите тип анимации, используя опцию Leaves.

Geometry Vertex Color BasedГеометрия на основе цвета вершин#

This recommended approach providing the best control over foliage implies that leaves are rendered as polygons, and vertex colors are used for animation.Этот рекомендуемый подход, обеспечивающий наилучший контроль над листвой, подразумевает, что листья визуализируются как многоугольники, а цвета вершин используются для анимации.

Vegetation movements are defined by RGB channels of vertex colors as follows:Движения растительности определяются RGB-каналами цветов вершин следующим образом:

Red channel is used for animation of smaller or peripheral parts of vegetation (leaves). Bright parts are animated, and dark parts are stiff.Красный канал используется для анимации более мелких или периферийных частей растительности (листьев). Яркие части анимированы, а темные — жесткие.
Green channel is used to define the movement order for branches in order to desynchronize them. The movement sequence starts from the brightest element to the darkest.Зеленый канал используется для определения порядка движения ветвей с целью их десинхронизации. Последовательность движений начинается от самого яркого элемента к самому темному.
Blue channel is used to define which parts of branches can be bent. Brighter parts indicate bendable portions, and darker parts — stiff portions.Синий канал используется для определения того, какие части ветвей можно сгибать. Более светлые участки обозначают сгибаемые участки, а более темные участки   —   жесткие участки.

The animation parameters control vertices movement:То параметры анимации управление движением вершин:

It is also a regular practice to animate branches using this technique even if they are attached to the trunk:Также регулярно используется анимация ветвей с помощью этой техники, даже если они прикреплены к стволу:

The Green and Blue channels define the movement of vertices; the Red channel is not used for branchesЗеленый и синий каналы определяют движение вершин; Красный канал не используется для ответвлений

At that, related surfaces must have the same vertex colors on adjacent vertices and identical animation parameters in order to synchronize their movement:При этом связанные поверхности должны иметь одинаковые цвета вершин на соседних вершинах и одинаковые параметры анимации, чтобы синхронизировать их движение:

The colors of adjacent vertices of the trunk and foliage are the same, so the geometry stays connected when animatedЦвета смежных вершин ствола и листвы одинаковы, поэтому при анимации геометрия остается связанной.

Geometry Vertex Color Based leaves animationГеометрия Анимация листьев на основе цвета вершин
Geometry UV-basedГеометрия на основе UV#

This is a rather legacy approach when leaves are rendered as standard polygons. It requires the UV Channel 2 to be defined for the mesh.Это довольно устаревший подход, когда листья визуализируются как стандартные полигоны. Это требует, чтобы UV Channel 2 был определен для сетки.

Geometry UV-based animationГеометрическая анимация на основе UV
UV Channel 2: the stiffest vertices are in the top left cornerUV Channel 2: самые жесткие вершины находятся в верхнем левом углу.

Animation uses UV channel 2 of an object as follows: in the UV grid, [0,1] is the pivot point for the object's movements and the stiffest part of the object, and towards [1,0], the object becomes more flexible.Анимация использует UV-канал 2 объекта следующим образом: в UV-сетке [0,1] — точка опоры для движений объекта и самая жесткая часть объекта, а ближе к [1,0] объект становится более гибким. .

Control the vertices movement via the same Animation Parameters.Управляйте движением вершин через тот же Параметры анимации .

BillboardBillboard#

Billboard is the most performance-friendly way of animating distant vegetation: all quads are rendered as billboards that always face the camera; the UV Channel 2 defines the size and movement of polygons. Hence, the foliage mesh should contain only quad polygons for leaves.Billboard — наиболее удобный способ анимации удаленной растительности: все четырехугольники визуализируются как billboards, которые всегда смотрят в камеру; UV Channel 2 определяет размер и движение полигонов. Следовательно, меш листвы должен содержать только четырехугольники для листьев.

A billboards-based bushКуст на основе рекламных щитов
The mesh of the bushСетка куста

Animation uses UV channel 2 of an object as follows: in the UV grid, [0,1] is the pivot point for the billboard's movements, and the billboard's size can be changed by scaling the polygon in the UV channel.Анимация использует UV-канал 2 объекта следующим образом: в UV-сетке [0,1] является точкой опоры для движения рекламного щита, а размер рекламного щита можно изменить, масштабируя полигон в UV-канале.

UV Channel 1УФ канал 1
UV Channel 2УФ канал 2
Mesh (above) and the result (below)Сетка (вверху) и результат (внизу)

Control the polygons movement via the same Animation Parameters.Управляйте движением полигонов через тот же Параметры анимации .

Global Animation OptionsГлобальные параметры анимации#

Stem and leaves animation are also controlled by the global Vegetation Animation Parameters. Via these settings, you can adjust stem and leaves animation intensity, speed, and wind effect globally and control the weather conditions per world.Анимация стебля и листьев также контролируется глобальным Параметры анимации растительности . С помощью этих настроек вы можете глобально настроить интенсивность анимации стеблей и листьев, скорость и эффект ветра, а также контролировать погодные условия в каждом мире.

Note that the global parameters are just multipliers for the per-material animation parameters.Обратите внимание, что глобальные параметры — это просто множители для параметров анимации для каждого материала.

Scattering PlantsРассадка растений#

To randomly scatter a significant number of identical meshes across the terrain, Mesh Clutter is used. Mesh Clutter scatters objects procedurally and renders only those objects which are in the viewing frustum. The typical workflow is as follows:Для случайной расстановки большого количества одинаковых мешей по местности используется Mesh Clutter. Mesh Clutter процедурно распределяет объекты и отображает только те объекты, которые находятся в области видимости. Типичный алгоритм выглядит следующим образом:

  1. Click Create -> Clutter -> Mesh and specify the .mesh asset to be used as the source mesh for the Mesh Clutter. Click within the viewport to place the new node in the world.Нажмите Create -> Clutter -> Mesh и укажите ресурс .mesh, который будет использоваться в качестве исходного меша для Mesh Clutter. Щелкните внутри вьюпорта, чтобы разместить новый узел в мире.

    Примечание
    .fbx assets are containers for .mesh assets, right-click on the asset and choose Open or double-click on it to access its content.Ассеты .fbx являются контейнерами для ассетов .mesh, щелкните правой кнопкой мыши ассет и выберите Open или дважды щелкните его, чтобы получить доступ к его содержимому.
  2. If you already have a configured tree in your world, you can copy all materials and parameters from surfaces of the configured tree and paste them sequentially or by surface names to Mesh Clutter.Если у вас уже есть настроенное дерево в вашем мире, вы можете скопировать все материалы и параметры с поверхностей настроенного дерева и вставить их последовательно или по именам поверхностей до 0_фл.

  3. Place the node in the scene and set the Size to cover the whole playable area.Поместите узел в сцену и установите Size, чтобы покрыть всю игровую область.

    Примечание

    The operation of Mesh Clutter objects is float-based, so it is not recommended to use Sizes bigger than 10000 units lengthwise and widthwise. If you need to fill areas beyond this limit, you will need to manually split the single Mesh Clutter object into a grid of several clutters.Операции с объектами Mesh Clutter основаны на числах с плавающей запятой, поэтому не рекомендуется использовать размеры, превышающие 10000 по длине и ширине. Если вам нужно заполнить области за пределами этого предела, вам нужно будет вручную разделить один объект Mesh Clutter на сетку из нескольких помех.

    The Sandworm Tool does the slicing automatically when generating terrain. Инструмент Sandworm автоматически выполняет нарезку при создании ландшафта.

  4. Adjust the scattering parameters: set the desired Density in meshes per square unit; diversify the appearance of the forest by randomizing the Scale, Offset, and Rotation parameters.Настройте параметры рассеяния: установите желаемое Плотность в ячейках на единицу площади; разнообразить внешний вид леса, рандомизировав Масштаб, смещение и поворот параметры.
  5. Make the clutter object child to the terrain and enable the Intersection flag to make trees follow the surface.Сделайте объект беспорядка дочерним по отношению к ландшафту и включите Перекресток флаг, чтобы деревья следовали за поверхностью.

    Примечание
    If the Intersection flag is enabled, toggle it off and on to forcefully re-generate the Clutter object.Если флаг Intersection включен, включите и выключите его, чтобы принудительно повторно сгенерировать объект Clutter.
  6. Adjust the Visibility and Fade distances. Given the number of polygons that might come into play in a dense forest, it is recommended to make Mesh Clutter visible at as short distances as possible and use the Impostor objects at further distances.Настроить Видимость а также Тускнеть расстояния. Учитывая количество полигонов, которые могут вступить в игру в густом лесу, рекомендуется сделать Mesh Clutter видимым на как можно более коротких расстояниях и использовать объекты Impostor на более дальних расстояниях.
  7. By default, trees are scattered across the whole area. You can mask areas with vegetation via the following approaches:По умолчанию деревья разбросаны по всей территории. Ты сможешь маскировать участки растительностью с помощью следующих подходов:

    • By using a single-channel texture. You can prepare a texture in third-party software or create a new one and draw the mask from scratch. All Mesh Clutter and Grass objects that use that texture are updated on the fly.Используя одноканальную текстуру. Вы можете подготовить текстуру в стороннем ПО или создать новую и нарисовать маску с нуля. Все объекты Mesh Clutter и Grass, использующие эту текстуру, обновляются на лету.

    • By using Landscape Terrain masks. You can use the data of Landscape Terrain masks to define the density of the vegetation, provided your world contains Landscape Terrain with configured masks: select the desired mask in the Mask Terrain parameter:Используямаски Landscape Terrain. Вы можете использовать данные масок Landscape Terrain для определения плотности растительности, при условии, что ваш мир содержит Landscape Terrain с настроенными масками: выберите нужную маску в параметре Mask Terrain:

      Landscape TerrainЛандшафтная местность
      Mask preview of Landscape TerrainПредварительный просмотр маски ландшафтного ландшафта
      Vegetation is scattered according to the terrain maskРастительность разбросана согласно маске местности

      You can also edit the mask by using the Brush Editor and have the Mesh Clutter updated on the fly.Вы также можете отредактировать маску с помощью Редактор кистей и обновлять Mesh Clutter на лету.

      Примечание
      All Landscape Terrain data, including masks, is subject to data streaming. If you have unoptimized streaming settings, there might be a bottleneck in mask data loading on world startup and changing the camera position, affecting the performance of Mesh Clutter generation.Все данные ландшафтного ландшафта, включая маски, подлежат потоковая передача данных . Если у вас неоптимизированные настройки потоковой передачи, узким местом может быть загрузка данных маски при запуске мира и изменение положения камеры, что влияет на производительность генерации Mesh Clutter.
    • As an additional feature, masking by a mesh is also available:В качестве дополнительной функции, маскировка сеткой также доступен:

    • Cutout by intersection with objects:Вырез по пересечению с объектами:

      1. Create Mesh Static or Decal representing a bounding cutout volume. Enable the Clutter Interaction flag for it.Создайте Mesh Static или Decal, представляющий ограничивающий объем выреза. Включите для него флаг Clutter Interaction.
      2. Choose and enable a bit of the Intersection mask of the object that will be used for the cutout feature.Выберите и включите часть маски Intersection объекта, которая будет использоваться для функции выреза.
      3. Enable the same bit of the Cutout Intersection mask of the Clutter object.Включите тот же бит маски Cutout Intersection объекта Clutter.
      4. Hide the visual representation of the object from the camera by disabling all bits of its Viewport mask and disabling shadow casting for it.Скрыть визуальное представление объекта от камеры, отключив все биты его маски Viewport и отключив отбрасывание теней для этого.

      Cutting out trees within a boxУдаление растительности внутри прямоугольной области
  8. Keep the optimal Step value for the best performance.Сохраняйте оптимальное значение Step для лучшей производительности.

    The Clutter is rendered as a 2D grid, in each cell of which meshes are randomly scattered depending on the density and probability of appearing. Generation of meshes in the cells is time-sliced starting from the nearest cells to reduce the load on the CPU.Clutter визуализируется как 2D сетка, в каждой ячейке которой случайным образом разбросаны сетки в зависимости от плотности и вероятности появления. Генерация сеток в ячейках осуществляется с временным интервалом, начиная с ближайших ячеек, чтобы снизить нагрузку на ЦП.

    Cell divisionДеление клеток

    The Step value defines the cell size in units. Thus, this value specifies the resulting number of cells along each axis (the size divided by the step). It is highly recommended to choose the values that are divided with no remainder.Значение Step определяет размер ячейки в единицах. Таким образом, это значение указывает результирующее количество ячеек по каждой оси (размер, деленный на шаг). Настоятельно рекомендуется выбирать значения, которые делятся без остатка .

    Примечание
    Each cell requires 1 DIP call, so the higher the number of cells (i.e., the smaller the step), the more reduced the performance is. However, creating a large cell takes a longer time. When the camera moves fast enough, small cells are created one by one very fast and smoothly, but large ones can noticeably pop into sight and cause a slight rendering lag.Для каждой ячейки требуется DIP -вызов 1, поэтому чем больше количество ячеек (т. е. чем меньше шаг), тем больше снижается производительность. Однако создание большой ячейки занимает больше времени. Когда камера движется достаточно быстро, маленькие ячейки создаются одна за другой очень быстро и плавно, но большие могут заметно всплывать в поле зрения и вызывать небольшую задержку рендеринга.

You can scatter bushes and chunks of polygon grass across the terrain the same way.Таким же образом можно разбрасывать кусты и куски многоугольной травы по местности.

A chunk of optimized polygon-based grassКусок оптимизированной полигональной травы

Finally, by combining several clutters for different types of trees, bushes, and grass, you get a diverse look of vegetation.Наконец, комбинируя несколько зарослей для разных типов деревьев, кустов и травы, вы получаете разнообразный вид растительности.

Combination of several Mesh Clutter objects for diverse vegetationКомбинация нескольких объектов Mesh Clutter для разнообразной растительности

Manual PlacementРучная расстановка#

As a finishing touch, you can place trees as Static Mesh where needed. It is efficient performance-wise to collect a significant number of identical meshes into a Mesh Cluster object in order to treat and render a bunch of meshes as one object.В качестве последнего штриха вы можете разместить деревья как Static Mesh там, где это необходимо. Эффективно с точки зрения производительности собрать значительное количество идентичных мешей в объект Mesh Cluster, чтобы обрабатывать и отображать кучу мешей как один объект.

Примечание
In terms of performance optimization, Mesh Cluster objects have an advantage over Mesh Clutter objects as meshes baked into clusters support culling by Occluders, making it possible to improve performance when some geometry occludes them (e.g., a building).С точки зрения оптимизации производительности объекты Mesh Cluster имеют преимущество перед объектами Mesh Clutter, поскольку сетки, запечённые в кластеры, поддерживают отбраковку Окклюдеры , что позволяет повысить производительность, когда их перекрывает какая-либо геометрия (например, здание).

You can bake identical meshes of their hierarchy or collect all similar meshes in the world. Refer to the dedicated article for more details on the ways of collecting a cluster.Вы можете запечь одинаковые меши своей иерархии или собрать все подобные меши в мире. Подробную информацию о способах сбор кластера .

The other convenient approach to quickly scatter clusters of grass, bushes and trees across the scene is using the mesh placement brush tool:Другой удобный подход к быстрому распределению скоплений травы, кустов и деревьев по сцене — это использование инструмента «Кисть размещения сетки»:

  1. Switch to the Cluster Editor mode:Переключиться на Cluster Editor Режим:

  2. Select one or several Mesh Cluster objects in the scene or create a new one by using the Create button in the Active Tool window.Выберите один или несколько объектов Mesh Cluster в сцене или создайте новый с помощью кнопки Create в окне Active Tool.
  3. Paint areas with brush, scattering meshes across the scene:Закрашиваем области кистью, раскидывая сетки по сцене:

  4. If needed, edit the cluster manually to reposition or remove some meshes.Если нужно, редактировать кластер вручную, чтобы изменить положение или удалить некоторые сетки.

BillboardsBillboard#

Billboard is a flat rectangular object that always faces the camera. Using billboards instead of fully functional objects that are barely seen from far off significantly simplifies and speeds up rendering.Billboard — это плоский прямоугольный объект, который всегда обращен к камере. Использование billboards вместо полнофункциональных объектов, которые едва видны издалека, значительно упрощает и ускоряет рендеринг.

ImpostorsИмпосторы#

In terms of UNIGINE, Impostor is a billboard-like object capable of mimicking the appearance of polygon meshes by displaying different areas of textures depending on the angle of view. Impostor objects serve to speed up geometry rendering by reducing the number of polygons while saving visual fidelity.С точки зрения UNIGINE, Impostor — это объект, подобный billboard, способный имитировать внешний вид полигональных сеток, отображая различные области текстур в зависимости от угла обзора. Объекты Impostor служат для ускорения рендеринга геометрии за счет уменьшения количества полигонов при сохранении визуальной точности.

Albedo texture for a tree impostorТекстура альбедо для самозванца дерева

The built-in Impostor Creator tool makes it easy to generate Impostors for single meshes and Mesh Clutters.Встроенный инструмент Impostor Creator упрощает создание Impostors для одиночных сеток и Mesh Clutters.

For a forest based on Mesh Clutter, the Grass object with the grass_impostor_base material will be used as a low-poly LOD. At that, the Clutter and grass parameters must match to make sure the position and orientation of all LODs are the same.Для леса на основе Mesh Clutter объект Grass с материалом grass_impostor_base будет использоваться как низкополигональный LOD. При этом Clutter и параметры травы должны совпадать, чтобы положение и ориентация всех LOD были одинаковыми.

Mesh Clutter and ImpostorsMesh Clutter и самозванцы
Meshes' and Impostors' WireframesКаркасы мешей и самозванцев

Grass objects are also rendered as a 2D grid to optimize performance. The Step parameter defines the cell size. Usually, impostors are visible much further than meshes, and the Step value is to be chosen respectively. You can use the Subdivision parameter that subdivides large grass cells so that they match smaller cells of a Mesh Clutter to make positions of randomly scattered objects coincide with positions of grass-based impostors. Therefore, the Clutter Step must match the ratio of Step/Subdivision values of the grass.Объекты травы также визуализируются как 2D-сетка для оптимизации производительности. Параметр Step определяет размер ячейки. Обычно импосторы видны гораздо дальше, чем меши, и соответственно нужно выбирать значение Step. Вы можете использовать параметр Subdivision, который разделяет большие ячейки травы так, чтобы они соответствовали меньшим ячейкам Mesh Clutter, чтобы совместить положения случайно разбросанных объектов с позициями самозванцев на основе травы. Следовательно, Clutter Step должен соответствовать соотношению значений Step/Subdivision травы.

GrassТрава#

The Grass object with the grass_base material can fill empty spots on the terrain and increase the overall density of lower vegetation in the scene. The grass_base material is intended to represent the basic features of grass. It has a lower visual fidelity compared to the mesh_base material, so Grass should be thought of as an additional filling layer of grass.Объект Grass с материалом grass_base может заполнять пустые места на местности и увеличивать общую плотность нижней растительности в сцене. Материал grass_base предназначен для представления основных характеристик травы. Он имеет более низкую визуальную точность по сравнению с материалом mesh_base, поэтому Grass следует рассматривать как дополнительный заполняющий слой травы.

First, you need to prepare a Diffuse texture with chunks representing small grass tufts:Во-первых, вам нужно подготовить текстуру Diffuse с фрагментами, представляющими небольшие пучки травы:

Diffuse Texture for Grass of Various TypesДиффузная текстура для травы разных типов

Chunks are to be placed in the texture as follows:Чанки размещаются в текстуре следующим образом:

  • Vertical columns represent different grass species, each of which will be distributed according to the corresponding channel of the Mask texture. Therefore, the number of columns must match the number of channels of the Mask texture; otherwise, grass tufts will be sliced incorrectly.Вертикальные столбцы представляют разные виды трав, каждый из которых будет распределен согласно соответствующему каналу текстуры Mask. Поэтому количество столбцов должно совпадать с количеством каналов текстуры Mask; в противном случае пучки травы будут срезаны неправильно.
  • Horizontal rows represent variations of grass of the particular species (thinner, thicker, tangled, etc.). There can be from 1 to 4 rows, and this number must coincide with the Num Textures value.Горизонтальные ряды представляют вариации травы определенного вида (тоньше, гуще, спутаннее и т. д.). Строков может быть от 1 до 4, и это число должно совпадать со значением Num Textures.

For the grass texture with 4 columns, a mask with 4 channels should be used:Для текстуры травы со столбцами 4 следует использовать маску с 4 каналами:

RGBA Image Mask for Grass of 4 Various TypesRGBA Маска-изображение для травы 4 -х различных типов

Refer to the Texture Slots section for more details.Обратитесь к разделу Texture Slots для более подробной информации.

Visually attractive grass, however, may reduce performance if rendered as a whole. All computations are time-sliced and performed per cell of a 2D grid to allow rendering at interactive frame rates. So choosing the optimal Step for cells is crucial for better performance.Однако визуально привлекательная трава может снизить производительность, если она отображается целиком. Все вычисления разделены по времени и выполняются для каждой ячейки 2D-сетки, что позволяет выполнять рендеринг с интерактивной частотой кадров. Поэтому выбор оптимального Step для ячеек имеет решающее значение для повышения производительности.

For more details on creating and configuring grass, refer to the in-depth tutorial: Adding Grass.Дополнительные сведения о создании и настройке травы см. в подробном руководстве: Добавление травы .

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

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