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 можно присвоить следующим типам объектов:
- Water Mesh objectОбъект Water Mesh
- Dynamic Mesh objectОбъект Dynamic Mesh
See alsoДополнительная информация#
- The article on Water MeshСтатья о Water Mesh
- BodyWater classBodyWater класс
- Fragment of the video tutorial on physics demonstrating the use of the Water body for simulation of various types of liquidsФрагмент видеоурока по физике, демонстрирующий использование тела Water для моделирования различных типов жидкостей
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 на каждом временном шаге физики. Таким образом, волны генерируются, когда физические тела вступают в контакт с водой или частице напрямую задается новая скорость.
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:Возможно создание дополнительного визуального эффекта мелких капель, брызг или пузырьков на воде при падении в нее предметов. Чтобы включить этот эффект, выполните следующие действия:
- Create a Particle system effect by clicking Create -> Effect -> Particle system in the main menu of UnigineEditor.Создайте эффект Particle system, щелкнув Create -> Effect -> Particle system в главном меню UnigineEditor.
- Go to the Parameters window.Перейдите в окно Parameters.
- In the Dynamic section, choose the Spark Emitter to spawn particles by selecting Emitter -> Spark.В разделе Dynamic выберите Spark Emitter для создания частиц, выбрав Emitter -> Spark.
- 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.Частицы будут генерироваться только тогда, когда объект впервые коснется поверхности воды, в то время как уже погруженные тела будут плавать, не создавая их.
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 (пересечение) воды с подстилающей поверхностью может потребоваться, например, для оценки фактической глубины водного бассейна. Чтобы включить пересечение с землей, выполните следующие действия:
- Make Water Mesh or Dynamic Mesh object a child node of the Terrain or Static MeshСделайте объект Water Mesh или Dynamic Mesh дочерней нодой объекта Terrain или Static Mesh
- 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.Если опция отключена, имитируется обратный поток от стены: волна, достигая края воды, отражается и возвращается в обратном направлении.
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.Приведенный ниже набор частот кадров позволяет указать, как часто симуляция воды должна обновляться, когда объект виден, когда видна только его тень или когда он не виден вообще.
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 во время выполнения.
Assigning a Water BodyНазначение водного объекта#
To assign a Water body to an object via UnigineEditor perform the following steps:Чтобы присвоить объекту тело Water через UnigineEditor, выполните следующие действия:
- Open the World Hierarchy window.Откройте окно World Hierarchy.
-
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!Убедитесь, что меш объекта соответствует требованиям! -
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.
- Set the body name and change other parameters, if necessary.Задайте название тела и при необходимости измените другие параметры.