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
Учебные материалы

Water Body

Water body enables physical simulation of liquids of different density and viscous behavior. It also models the appropriate buoyant force on submerged objects and wave dynamics as two-way interaction is calculated. Water simulation is visually pleasant and fast enough, so it can be used within a game environment; however, if the mesh is big and dense, it can become quite costly.Water body позволяет имитировать физическое поведение жидкостей различной плотности и вязкости. Оно также моделирует соответствующую выталкивающую силу для погруженных в воду объектов и динамику волн при расчете двустороннего взаимодействия. Симуляция воды хорошо выглядит и достаточно быстро работает, поэтому ее можно использовать в игровой среде; однако, если меш большой и плотный, использование воды может быть затратным.

Water body can be assigned to the following types of objects:Water body можно присвоить следующим типам объектов:

Примечание
In case of an arbitrary mesh, water will not have appropriate shading, but all physical properties will still be present.Если используется произвольный меш, у воды не будет соответствующего затенения, но все физические свойства сохранятся.

See also
Дополнительная информация#

Mesh Requirements
Требования к мешу#

A mesh, to which a Water body is assigned, should meet the requirements given here. Mesh requirements are the same for both Dynamic Mesh and Water Mesh objects.Меш, на который назначается тело Water, должен соответствовать требованиям, приведенным здесь. Требования к мешу одинаковы как для Dynamic Mesh, так и для Water Mesh.

Grid Simulation Model
Имитационная модель решетки#

The Water body is modeled as a two-dimensional grid with point particles positioned in the vertices of the mesh. The particle movement is restricted to two directions: it can be lifted upwards or dragged downwards. In the case of changing its position, the particle acquires a velocity that affects the neighboring particles and thus describes the grid of Water body at each physics time step. Thus, the waves are generated when physical bodies get in contact with water or a particle is directly assigned new velocity.Water body моделируется как двумерная решетка с точечными частицами, расположенными в вершинах меша. Движение частицы ограничено двумя направлениями: ее можно поднять вверх или потянуть вниз. В случае изменения своего положения частица приобретает скорость, которая влияет на соседние частицы и, таким образом, описывает решетку тела Water на каждом временном шаге физики. Таким образом, волны генерируются, когда физические тела вступают в контакт с водой или частице напрямую задается новая скорость.

Water grid changes during physics simulationИзменения решетки воды во время симуляции физики

Liquidity
Вязкость#

Liquidity defines the viscosity of water (or any other liquid): it determines how readily it splashes and affects wave formation. It multiplies the speed with which water particles pass velocity vectors to the neighboring ones.Параметр Liquidity (вязкость) определяет вязкость воды (или любой другой жидкости): он определяет, насколько легко вода разбрызгивается, и влияет на формирование волн. Он умножает скорость, с которой частицы воды передают векторы скорости соседним частицам.

  • The higher the value, the more viscous the water is and the smaller are the waves risen by the objects (e.g. syrup).Чем выше значение, тем более вязкая вода и тем меньше волны, поднимаемые объектами (например, сироп).
  • Low values provide higher surface waves (e.g. tap water).Низкие значения обеспечивают более высокие поверхностные волны (например, водопроводная вода).

    Примечание
    Be careful not to set too high or too low values, because that may lead to unstable simulation and blowing up of the water. To regain stability, try to tweak Interaction.Будьте осторожны, не устанавливайте слишком высокие или слишком низкие значения, потому что это может привести к нестабильному поведению воды. Чтобы восстановить стабильность, попробуйте настроить параметр Interaction.

Density
Плотность#

Density of water determines the buoyancy of objects according to Archimedes' principle. Based on the volume of the submerged part of the shape and its mass, buoyancy force is applied to its center of mass and pushes the object upwards, whereto the mean normal of the grid covered by submerged shape points.Параметр Density (плотность) воды определяет плавучесть объектов по закону Архимеда. Исходя из объема погруженной части формы и ее массы, сила плавучести прилагается к ее центру массы и толкает объект вверх, при этом средняя нормаль решетки покрывается точками погруженной формы.

  • By the minimum value of 0, the objects will not float in the water, but rather fall through it without any resistance.При минимальном значении 0 объекты не будут плавать в воде, а скорее будут проваливаться сквозь нее без какого-либо сопротивления.
  • Higher values increase the buoyant force. If set too high, the immersed objects start to be pushed out in the air.Более высокие значения увеличивают выталкивающую силу. При слишком высоком значении погруженные объекты начинают выталкиваться в воздух.

Physical Behavior of Objects in Water
Физическое поведение объектов в воде#

Two-way dynamic interaction provides both physically and visually convincing simulation of the waves from the physical bodies as they disturb the fluid. Imagine a moving boat that forms a wake wave behind it, or a character creating ripples while moving in the water (see the picture above).Двустороннее динамическое взаимодействие обеспечивает как физически, так и визуально убедительное моделирование волн от физических тел, когда они возмущают жидкость. Представьте движущуюся лодку, которая образует за собой кильватерную волну, или персонажа, создающего рябь при движении в воде (см. изображение выше).

Interaction with Objects
Взаимодействие с объектами#

A physical object submerged into the water (or any other liquid) has its own velocity vector. On the other hand, all the water particles that are covered by this physical body or surround it, have their own integrated velocity vector, which approximates the state of water. The Interaction value is a coefficient that determines how much the object's velocity influences the velocities of water particles and thus generate waves.Физический объект, погруженный в воду (или любую другую жидкость), имеет собственный вектор скорости. С другой стороны, все частицы воды, которые покрыты этим физическим телом или окружают его, имеют свой собственный интегрированный вектор скорости, который приблизительно соответствует состоянию воды. Значение Interaction — это коэффициент, определяющий, насколько скорость объекта влияет на скорости частиц воды и, таким образом, генерирует волны.

  • By the minimum value of 0, an object produces no disturbances on the water surface.При минимальном значении 0 объект не вызывает возмущений на поверхности воды.
  • Higher values make the disturbances of water surface more intense and the waves from moving objects become higher.Более высокие значения делают возмущение водной поверхности более интенсивным, а волны от движущихся объектов становятся сильнее.

    Примечание
    Too high values may blow the water up, as the law of conservation of energy does not constrain the system! Try decreasing damping values to regain stability.Слишком высокие значения могут вызвать нестабильное поведение воды, поскольку закон сохранения энергии не ограничивает систему! Попробуйте уменьшить значения гашения колебаний для восстановления стабильности.

Linear Damping and Angular Damping
Линейное и угловое гашение колебаний#

Objects getting into the water are expected to slow down, as resistance of the water is higher than the drag in the air. Damping values work the other way around compared to the Interaction coefficient:Ожидается, что движение объектов, попадающих в воду, будет замедляться, поскольку сопротивление воды выше, чем сопротивление воздуха. Значения демпфирования работают наоборот по сравнению с коэффициентом Interaction:

Linear Damping defines how much linear velocity of the submerged object is decreased over time when influenced by velocities of surrounding water particles. And similarly, Angular Damping defines the gradual decrease in the object's rotation. Both linear and angular damping forces are accumulated before being applied.Linear Damping определяет, насколько линейная скорость погруженного объекта уменьшается с течением времени под влиянием скоростей окружающих частиц воды. Точно так же Angular Damping определяет постепенное уменьшение поворота объекта. Как линейные, так и угловые демпфирующие силы накапливаются перед тем, как будут приложены к объекту.

  • By the minimum value of 0, objects movement is not hindered by the water. As a result, there are no waves in the water.При минимальном значении 0 вода не препятствует движению объектов. В результате на воде нет волн.
  • Higher values make the damping of linear or angular velocities more intense, and objects slow down faster as they get into the water. The waves from the objects in this case become more pronounced, as the energy of the system increases.Более высокие значения делают затухание линейных или угловых скоростей более интенсивным, и объекты замедляются быстрее, когда они попадают в воду. Волны от объектов в этом случае становятся более выраженными по мере увеличения энергии системы.

    Примечание
    The water may blow up in case the values are be very high. Try decreasing the Interaction value to regain stability.Вода может повести себя нестабильно, если значения будут очень высокими. Попробуйте уменьшить значение Interaction, чтобы восстановить стабильность.

Emission of Particles
Эмиссия частиц#

It is possible to create an additional visual effect of small droplets, splashes or bubbles on the water when objects fall into it. To enable this effect perform the following steps:Возможно создание дополнительного визуального эффекта мелких капель, брызг или пузырьков на воде при падении в нее предметов. Чтобы включить этот эффект, выполните следующие действия:

  1. Create a Particle system effect by clicking Create -> Effect -> Particle system in the main menu of UnigineEditor.Создайте эффект Particle system, щелкнув Create -> Effect -> Particle system в главном меню UnigineEditor.
  2. Go to the Parameters window.Перейдите в окно Parameters.
  3. In the Dynamic section, choose the Spark Emitter to spawn particles by selecting Emitter -> Spark.В разделе Dynamic выберите Spark Emitter для создания частиц, выбрав Emitter -> Spark.
  4. Make Particle system a child of the Water Mesh object.Сделайте систему частиц дочерним элементом объекта Water Mesh.

Particles will be generated only when the object first contacts the water surface, while already submerged bodies will float without generating them.Частицы будут генерироваться только тогда, когда объект впервые коснется поверхности воды, в то время как уже погруженные тела будут плавать, не создавая их.

Effect of water splashesЭффект водяных брызг

Water Boundaries
Границы водного пространства#

The following parameters relating to water boundaries make it possible to create different types of basins in the game environment. These parameters provide flexibility in setting up physical behavior of water for big natural lakes and small pools.Следующие параметры, относящиеся к границам водного пространства, позволяют создавать резервуары разных типов в игровой среде. Эти параметры обеспечивают гибкость в настройке физического поведения воды для больших естественных озер и небольших бассейнов.

Depth
Глубина#

Depth determines the size of waves: high waves are formed in deep waters (e.g. a sea), while only a slight ripple is generated in shallow waters (e.g. a pool):Depth (глубина) определяет размер волн: высокие волны образуются в глубоких водах (например, в море), тогда как на мелководье (например, в бассейне) возникает лишь небольшая рябь:

  • With the minimum value of 0, the objects raise no waves in the water.При минимальном значении 0 объекты не образуют волн в воде.
  • Higher values result in higher waves generated by moving objects.Более высокие значения приводят к более высоким волнам, создаваемым движущимися объектами.

Intersection with the Ground
Пересечение с землей#

Intersection of water with the underlying terrain can be necessary, for example, to estimate the actual depth of the water basin. To enable ground intersection perform the following steps:Intersection (пересечение) воды с подстилающей поверхностью может потребоваться, например, для оценки фактической глубины водного бассейна. Чтобы включить пересечение с землей, выполните следующие действия:

  1. Make Water Mesh or Dynamic Mesh object a child node of the Terrain or Static MeshСделайте объект Water Mesh или Dynamic Mesh дочерней нодой объекта Terrain или Static Mesh
  2. Check the Intersection box in the Parameters window -> Physics tab -> Body section.Включите флаг Intersection в окне Parameters → вкладка Physics → раздел Body.

Intersection is implemented in the following way: the rays are traced downwards from the water mesh surface, as far as the Depth distance. If a ray intersects the parent node, the obtained depth is used in calculations; otherwise the preset depth value is used.Пересечение реализовано следующим образом: лучи трассируются вниз от поверхности Water Mesh до расстояния Depth. Если луч пересекает родительскую ноду, полученная глубина используется в расчетах; в противном случае используется заданное значение глубины.

Intersection is also traced upward to check if the water is under terrain and there is no need to render it.Пересечение также прослеживается вверх, чтобы проверить, находится ли вода под землей и нет необходимости ее отображать.

Absorption
Абсорбция#

Absorption is an option that creates either an effect of a limited basin or, on the contrary, of an open water surface that does not have marked boundaries.Absorption (абсорбция) — это опция, которая создает эффект либо ограниченного бассейна, либо, наоборот, открытой водной поверхности, не имеющей обозначенных границ.

  • If Absorption is enabled, the waves are dispersed along the mesh perimeter. In this case the water level at mesh edges will gradually fall down to zero level.Если опция Absorption включена, волны рассеиваются по периметру меша. В этом случае уровень воды по краям меша будет постепенно опускаться до нулевого уровня.
  • If disabled, the backwash from the wall is simulated: the wave when reaching the brink of the water is reflected and returns in the reversed direction.Если опция отключена, имитируется обратный поток от стены: волна, достигая края воды, отражается и возвращается в обратном направлении.

Water body absorption: enabled(left) and disabled(right)Абсорбция тела Water: включена (слева) и отключена (справа)

Optimizing Simulation
Оптимизация симуляции#

Updating each frame a huge number of objects located far away from the camera that are hardly distinguishable or observed as a mass is a waste of resources.Обновление в каждом кадре огромного количества объектов, расположенных далеко от камеры, которые трудно различимы или сливаются вдали в одно целое, является пустой тратой ресурсов.

To improve performance and avoid the excessive load, water simulation can be updated with a reduced framerate. When the Water body is out of the area specified by the Update Distance Limit parameter, physical calculations are not performed, though objects preserve their buoyancy.Чтобы улучшить производительность и избежать чрезмерной нагрузки, имитация воды может обновляться с уменьшенной частотой кадров. Когда Water body находится за пределами области, указанной параметром Update Distance Limit, физические вычисления не выполняются, хотя объекты сохраняют свою плавучесть.

The set of frame rates given below enables you to specify how often the water simulation should be updated when the object is visible, when only its shadow is visible, or when it is not visible at all.Приведенный ниже набор частот кадров позволяет указать, как часто симуляция воды должна обновляться, когда объект виден, когда видна только его тень или когда он не виден вообще.

Parameters -> Physics tab -> Periodic Update sectionВкладка Parameters -> Physics → раздел Periodic Update
FPS When Object Is Rendered To Viewport Update rate value for the case when the object is rendered to viewport.Значение частоты обновления для случая, когда объект отображается в области просмотра.
FPS When Only Object Shadows Are Rendered Update rate value when the object itself is outside the viewing frustum, and only its shadow is rendered to viewport.Значение частоты обновления, когда сам объект находится за пределами области просмотра, и только его тень отображается в области просмотра.
FPS When Object Is Not Rendered At All Update rate value when both the object and its shadow are not rendered to the viewport.Значение частоты обновления, когда объект и его тень не отображаются в области просмотра.
Update Distance Limit Distance from the camera up to which the object should be updated.Расстояние от камеры, до которого необходимо обновить объект.
Примечание
These values are not fixed and can be adjusted by the Engine at any time to ensure best performance.Эти значения не фиксированы, движок может регулировать их в любое время для обеспечения наилучшей производительности.

This feature is enabled with default settings ensuring optimum performance and can be adjusted per-object in the UnigineEditor or via API at run time.Эта функция включена с настройками по умолчанию, обеспечивающими оптимальную производительность, и может быть настроена для каждого объекта в UnigineEditor или через API во время выполнения.

Внимание
Be aware that using reduced update frame rate for an object should be carefully considered in your application's logic, as it may lead to various issues with rendering Skinned Mesh and Dynamic Mesh (flickering due to misalignment of objects inside the Water body).Имейте в виду, что использование пониженной частоты кадров обновления для объекта должно быть тщательно продумано в логике вашего приложения, так как это может привести к различным проблемам с рендерингом Skinned Mesh и Dynamic Mesh (мерцание из-за несовпадения объектов внутри тела Water).

Assigning a Water Body
Назначение водного объекта#

To assign a Water body to an object via UnigineEditor perform the following steps:Чтобы присвоить объекту тело Water через UnigineEditor, выполните следующие действия:

  1. Open the World Hierarchy window.Откройте окно World Hierarchy.
  2. Select a Water Mesh or a Dynamic Mesh object to assign the Water body to.Выберите объект Water Mesh или Dynamic Mesh, которому нужно присвоить тело Water.

    Примечание
    Make sure that the object's mesh meets requirements!Убедитесь, что меш объекта соответствует требованиям!
  3. Go to the Physics tab in the Parameters window and assign a physical body to the selected object by selecting Body -> Water.Перейдите на вкладку Physics в окне Parameters и назначьте физическое тело выбранному объекту, выбрав Body -> Water.

    Adding a body

  4. Set the body name and change other parameters, if necessary.Задайте название тела и при необходимости измените другие параметры.
Последнее обновление: 07.03.2023
Build: ()