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

Rope Body

Rope body обеспечивает физическое моделирование канатов, кабелей, проводов и т. Д. Канаты могут быть прикреплены к телам следующих типов:

Чтобы прикрепить веревку к телу так, чтобы она свободно свисала, или связать несколько тел, используйте Particles joint. Rope body можно разорвать как Cloth body. Веревка повышает реалистичность моделируемой среды и экономит время художников, поскольку заменяет анимацию. Однако моделирование этого типа тела довольно затратно, и настоятельно рекомендуется использовать оптимизация расстояния чтобы избежать снижения производительности.

Примечание
Rope body можно присвоить только объектам Mesh Dynamic.

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

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

Единственный приемлемый тип сетки для Rope body - это цилиндр . Вы можете использовать стандартный примитивный цилиндр для создания веревки. В этом случае рекомендуем использовать следующий подход:

  1. В панели инструментов нажмите Create -> Primitive -> Cylinder.
  2. Задайте желаемые параметры веревки (длина, радиус) для цилиндра, например, следующие:

    Create Cylinder

  3. Нажмите OK и добавьте цилиндр в сцену. Он создан как объект Static Mesh. Сам объект можно удалить, а его меш будет доступен в папке data/.
  4. Создайте объект Dynamic Mesh и используйте для него меш цилиндра.
  5. Назначьте тело Rope на созданный объект Dynamic Mesh.

Имитационная модель масс-пружины#

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

Mass-Spring Simulation Model

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

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

Таким образом, Rope body можно рассматривать как ограниченную систему жестких частиц, и поэтому некоторые параметры имеют общие параметры с Rigid body:

Радиус частицы#

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

Поскольку столкновения между частицами не рассчитываются, их не следует учитывать при установке радиуса:

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

Итерации решателя суставов#

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

  • Меньшее количество итераций приводит к более быстрому моделированию. Однако в этом случае веревка более подвержена растяжению и выглядит более эластичной. Минимальное значение - 1.
  • Большое количество итераций обеспечивает более точное решение ограничений. В этом случае веревка выглядит более жесткой. Максимальное значение - 16.

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

Увеличение количества повторений может помочь избежать подергивания веревки.

Растяжка и складывание#

Веревку можно деформировать при растяжении и складывании . Эти деформации контролируются связями двух типов:

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

Линейная реституция#

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

  • При максимальном значении 1 частицы отскакивают с большой силой, и веревку трудно растягивать. Это дает эффект жесткой нерастягивающейся веревки, например металлической проволоки.
  • Чем ниже значение, тем легче частицы удаляются друг от друга и тем более растяжимым и эластичным является канат, например резиновый шнур.

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

Угловая реституция#

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

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

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

Если веревка слишком эластичная и эластичная, попробуйте одно из следующих действий:

  • Установите для линейного восстановления значение 1.
  • Увеличить количество стыков решателя итерации .
  • Используйте сетку с меньшим количеством вершин.

Жесткость движения#

Параметр Rigidity является дополнительным ограничением движения веревки, чтобы сделать ее более жесткой и негибкой. Для этого линейная и угловая скорости каждой частицы веревки корректируются в соответствии с полными скоростями, интерполированными для всех частиц.

  • Минимальное значение 0 делает веревку эластичной, гибкой и легко деформируемой.
  • Максимальное значение 1 делает веревку более жесткой и менее подверженной деформации.

Разрывая#

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

Примечание
Если порванные куски веревки падают на одну плоскость, они вызывают Z-бой.

Линейное пороговое расстояние#

Линейный порог устанавливает предел расстояния для растяжение веревка. Когда две частицы удаляются друг от друга дальше этого предела, соединяющие их соединения ломаются, и появляется разрыв.

  • Если установлено на бесконечность (inf), веревка растягивается без разрывов. Это значение установлено по умолчанию.

Угловой пороговый угол#

Как и линейный порог, угловой порог представляет собой максимальный угол к складывать веревку относительно исходного состояния.

  • Если установлено на бесконечность (inf), веревка складывается без разрывов. Это значение установлено по умолчанию.

    Примечание
    Рекомендуется поддерживать угловой порог ниже или равным 180 градусов.

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

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

Чтобы улучшить характеристики и избежать чрезмерной нагрузки, можно моделировать веревку. обновлено с уменьшенной частотой кадров . Когда игрок находится за пределами области, указанной параметром 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 во время выполнения.

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

Назначение тела веревки#

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

  1. Откройте окно World Hierarchy.
  2. Выберите динамическая сетка объект, которому нужно присвоить Rope body.

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

    Adding a body

  4. Задайте название тела и при необходимости измените другие параметры.

Прикрепление веревки#

Rope attached to a Mesh Skinned

Веревка, прикрепленная к анимационному персонажу

Веревки могут быть прикреплены к телам следующих типов:

Чтобы прикрепить веревку к телу, используйте Particles joint. В случае Rigid body (статического или динамического) и Dummy body закрепленные частицы остаются фиксированными в своем положении и следуют преобразованиям прикрепленных объектов, таща за собой веревку.

  1. Выберите Rigid body, RagDoll body или Dummy body.
  2. Добавьте Particles joint.
  3. Укажите Rope body.
  4. Отрегулируйте область закрепления с помощью параметров Threshold и Size файла Particles joint.
Примечание
Для обеспечения стабильной симуляции важно установить соответствующие массы веревки и прикрепленного тела. Неуравновешенные массы могут вызвать подергивание канатных соединений.

Присоединение к сетке со скелетом#

Убедительная симуляция веревки на персонаже Mesh Skinned требует другого подхода. Чтобы отслеживать преобразования костей, каждая вершина веревки, которая находится в области Particles joint, отображается на ближайшую вершину Mesh Skinned (до расстояния, указанного параметром Threshold соединения частиц).

Примечание
Не рекомендуется прикреплять веревку непосредственно к символу Mesh Skinned, потому что различие в топологиях может привести к визуальным артефактам. Вместо этого лучше создать идентичную поверхность веревки на персонаже Mesh Skinned, сделать ее невидимой и прикрепить к ней физическую веревку.

Например, нам нужно создать веревку, которая приклеивается к руке персонажа Mesh Skinned, в то время как остальная часть веревки висит и свободно движется. Это делается в следующие шаги:

  1. При создании Mesh Skinned добавьте поверхность сегмента веревки, идентичную обрезанной части, которую необходимо закрепить. В нашем случае это веревочная часть руки.
  2. Добавьте Mesh Skinned с Тряпичная кукла тело назначено. Убедитесь, что поверхность сегмента веревки активирована.
  3. Добавьте отдельную динамическую сетку веревки и синхронизируйте ее положение с символом Mesh Skinned. Отключите физическое моделирование (CTRL + SPACE) и назначать Rope body.
  4. Прикреплять От Rope body до RagDoll body. Если расстояние Threshold соединения частиц установлено достаточно низким, физическая веревка будет автоматически прикреплена только к поверхности сегмента веревки (то есть к руке). После этого поверхность канатного сегмента просто отключается и не несет никакой нагрузки.
Последнее обновление: 10.03.2022
Build: ()