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 objectWater Mesh объект
- Dynamic Mesh objectDynamic 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 body для моделирования различных типов жидкостей
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 body, должна соответствовать приведенным требованиям. здесь . Требования к сетке одинаковы для обоих Динамическая сетка а также Водная сетка объекты.
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 body для каждой физики. шаг времени . Таким образом, волны генерируются, когда физические тела вступают в контакт с водой или частице прямо приписывается новая скорость.
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.Жидкость определяет вязкость воды (или любой другой жидкости): она определяет, насколько легко она разбрызгивается и влияет на формирование волн. Он умножает скорость, с которой частицы воды передают векторы скорости соседним.
- 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.Плотность воды определяет плавучесть объектов по принципу Архимеда. Исходя из объема погруженной части форма и его масса, сила плавучести приложена к его центр массы и толкает объект вверх, при этом средняя нормаль сетки покрывается затопленными точками формы.
- 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 выберите Излучатель искры для создания частиц, выбрав Emitter -> Spark.
- Make Particle system a child of the Water Mesh object.Сделайте Particle system a ребенок объекта 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.Пересечение реализовано следующим образом: лучи трассируются вниз от поверхности водной сетки до расстояния 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 body через 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 body.
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.Задайте название тела и при необходимости измените другие параметры.