This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL
Плагины
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Water Body

Water body позволяет физическое моделирование жидкостей различных плотность а также вязкое поведение . Он также моделирует соответствующую выталкивающую силу на подводных объектах и динамику волн как двустороннее взаимодействие рассчитывается. Симуляция воды визуально приятна и достаточно быстра, поэтому ее можно использовать в игровой среде; однако, если сетка большая и плотная, она может стать довольно дорогой.

Water body можно присвоить следующим типам объектов:

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

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

Требования к сетке#

Сетка, которой назначен Water body, должна соответствовать приведенным требованиям. здесь . Требования к сетке одинаковы для обоих Динамическая сетка а также Водная сетка объекты.

Сеточная имитационная модель#

Water body моделируется как двумерная сетка с точечными частицами, расположенными в вершинах сетки. Движение частицы ограничено двумя направлениями: ее можно поднять вверх или потянуть вниз. В случае изменения своего положения частица приобретает скорость, которая влияет на соседние частицы и, таким образом, описывает сетку Water body для каждой физики. шаг времени . Таким образом, волны генерируются, когда физические тела вступают в контакт с водой или частице прямо приписывается новая скорость.

Изменения водной сетки во время симуляции физики

Ликвидность#

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

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

    Примечание
    Будьте осторожны, не устанавливайте слишком высокие или слишком низкие значения, потому что это может привести к нестабильному моделированию и взрыву воды. Чтобы восстановить стабильность, попробуйте настроить Interaction.

Плотность#

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

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

Физическое поведение объектов в воде#

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

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

Физический объект, погруженный в воду (или любую другую жидкость), имеет собственный вектор скорости. С другой стороны, все частицы воды, которые покрыты этим физическим телом или окружают его, имеют свой собственный интегрированный вектор скорости, который приблизительно соответствует состоянию воды. Значение Interaction - это коэффициент, определяющий, насколько скорость объекта влияет на скорости частиц воды и, таким образом, генерирует волны.

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

    Примечание
    Слишком высокие значения могут взорвать воду, поскольку закон сохранения энергии не ограничивает систему! Попробуйте уменьшить демпфирование ценности для восстановления стабильности.

Линейное демпфирование и угловое демпфирование#

Ожидается, что объекты, попадающие в воду, будут замедляться, поскольку сопротивление воды выше, чем сопротивление воздуха. Значения демпфирования работают наоборот по сравнению с коэффициентом Interaction:

Linear Damping определяет, насколько линейная скорость погруженного объекта уменьшается с течением времени под влиянием скоростей окружающих частиц воды. Точно так же Angular Damping определяет постепенное уменьшение поворота объекта. Как линейные, так и угловые демпфирующие силы накапливаются перед приложением.

  • При минимальном значении 0 вода не препятствует движению объектов. В результате на воде нет волн.
  • Более высокие значения делают затухание линейных или угловых скоростей более интенсивным, и объекты замедляются быстрее, когда они попадают в воду. Волны от объектов в этом случае становятся более выраженными по мере увеличения энергии системы.

    Примечание
    Вода может взорваться, если значения будут очень высокими. Попробуйте уменьшить значение Interaction, чтобы восстановить стабильность.

Эмиссия частиц#

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

  1. Создайте эффект Particle system, щелкнув Create -> Effect -> Particle system в главном меню UnigineEditor .
  2. Перейдите в окно Parameters.
  3. В разделе Dynamic выберите Излучатель искры для создания частиц, выбрав Emitter -> Spark.
  4. Сделайте Particle system a ребенок объекта Water Mesh.

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

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

Водные границы#

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

Глубина#

Depth определяет размер волн: высокие волны образуются в глубоких водах (например, в море), тогда как на мелководье (например, в бассейне) возникает лишь небольшая рябь:

  • При минимальном значении 0 объекты не поднимают волн в воде.
  • Более высокие значения приводят к более высоким волнам, создаваемым движущимися объектами.

Пересечение с землей#

Intersection воды с подстилающей поверхностью может потребоваться, например, для оценки фактического глубина водного бассейна. Чтобы включить пересечение земли, выполните следующие действия:

  1. Сделайте объект Water Mesh или Dynamic Mesh дочерним узлом Terrain или Static Mesh
  2. Установите флажок Intersection в окне Parameters → вкладка Physics → раздел Body.

Пересечение реализовано следующим образом: лучи трассируются вниз от поверхности водной сетки до расстояния Depth. Если луч пересекает родительский узел, полученная глубина используется в расчетах; в противном случае заданное значение глубины используется.

Пересечение также прослеживается вверх, чтобы проверить, находится ли вода под землей и нет необходимости ее отображать.

Абсорбция#

Absorption - это опция, которая создает эффект либо ограниченного бассейна, либо, наоборот, открытой водной поверхности, не имеющей обозначенных границ.

  • Если Absorption включен , волны рассеиваются по периметру меша. В этом случае уровень воды по краям сетки будет постепенно опускаться до нулевого уровня.
  • Если отключено , имитируется обратный поток от стены: волна, достигая края воды, отражается и возвращается в обратном направлении.

Поглощение Water body: включено (слева) и отключено (справа)

Оптимизация моделирования#

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

Чтобы улучшить производительность и избежать чрезмерной нагрузки, имитация воды может быть обновлено с уменьшенной частотой кадров . Когда Water body находится за пределами области, указанной параметром Update Distance Limit, физические вычисления не выполняются, хотя объекты сохраняют свою плавучесть.

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

Вкладка Parameters -> Physics → раздел Periodic Update
FPS When Object Is Rendered To Viewport Значение частоты обновления для случая, когда объект отображается в области просмотра.
FPS When Only Object Shadows Are Rendered Значение частоты обновления, когда сам объект находится за пределами области просмотра, и только его тень отображается в области просмотра.
FPS When Object Is Not Rendered At All Значение частоты обновления, когда объект и его тень не отображаются в области просмотра.
Update Distance Limit Расстояние от камеры, до которого необходимо обновить объект.
Примечание
Эти значения не являются фиксированными и могут быть изменены двигателем в любое время для обеспечения наилучшей производительности.

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

Внимание
Имейте в виду, что использование пониженной частоты кадров обновления для объекта должно быть тщательно продумано в логике вашего приложения, так как это может привести к различным проблемам с рендерингом Skinned Mesh и Dynamic Mesh (мерцание из-за несовпадения объектов внутри Water body).

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

Чтобы присвоить объекту Water body через UnigineEditor выполните следующие действия:

  1. Откройте окно World Hierarchy.
  2. Выберите объект Water Mesh или Dynamic Mesh, которому нужно присвоить Water body.

    Примечание
    Убедитесь, что сетка объекта соответствует требования !
  3. Перейдите на вкладку Physics в окне Parameters и назначьте физический тело к выбранному объекту, выбрав Body -> Water.

    Adding a body

  4. Задайте название тела и при необходимости измените другие параметры.
Последнее обновление: 13.12.2021
Build: ()