This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
VR Development
Двойная точность координат
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
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Rope Body

Rope body enables physical simulation of ropes, cables, wires, etc. Ropes can be pinned to the following types of bodies:Тело Rope обеспечивает физическое моделирование канатов, кабелей, проводов и т. д. Канаты могут прикрепляться к телам следующих типов:

To pin a rope to a body so it would hang freely, or tie several bodies, use a Particles joint. The Rope body can be torn as a Cloth body. Rope enhances the realism of simulated environment and saves the time of game artists as it replaces animation. However, simulation of this type of body is quite costly and it is strongly recommended to use distance optimization to avoid performance hits.Чтобы прикрепить веревку к телу так, чтобы она свободно свисала, или связать несколько тел, используйте сочленение Particles. Тело Rope можно разорвать как тело Cloth. Веревка повышает реалистичность моделируемой среды и экономит время художников, поскольку заменяет анимацию. Однако моделирование этого типа тела довольно затратно, и настоятельно рекомендуется использовать оптимизацию расстояния, чтобы избежать снижения производительности.

Примечание
Rope body can be assigned only to Mesh Dynamic objects.Тело Rope можно присвоить только объектам Mesh Dynamic.

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

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

The only acceptable mesh type for a Rope body is a cylinder. You can use a standard primitive cylinder to create a rope. The workflow in this case is as follows:Единственный допустимый тип меша для тела Rope — это цилиндр. Вы можете использовать стандартный примитивный цилиндр для создания веревки. В этом случае рекомендуем использовать следующий подход:

  1. On the Menu bar, click Create -> Primitive -> Cylinder.В панели инструментов нажмите Create -> Primitive -> Cylinder.
  2. Specify desired rope parameters (length, radius) for a cylinder, e.g. the following:Задайте желаемые параметры веревки (длина, радиус) для цилиндра, например, следующие:

    Create Cylinder

  3. Click OK and place the cylinder somewhere in the world. It is created as a Static Mesh object. The object itself can be deleted, its mesh however is still available in the data/ folder.Нажмите OK и добавьте цилиндр в сцену. Он создан как объект Static Mesh. Сам объект можно удалить, а его меш будет доступен в папке data/.
  4. Create a Dynamic Mesh object and use the cylinder mesh for it.Создайте объект Dynamic Mesh и используйте для него меш цилиндра.
  5. Assign the rope body to the created dynamic mesh object.Назначьте тело Rope на созданный объект Dynamic Mesh.

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

A Rope body is modeled as set of point masses (particles) located in the mesh vertices. Each particle is represented with a sphere shape and is linked together with other particles by inner spring joints that are located along the mesh edges. Inner joints allow to recreate mesh topology, on the one hand, and constrain stretching and folding, on the other.Тело Rope моделируется как набор точечных масс (частиц), расположенных в вершинах меша. Каждая частица имеет форму шара и связана с другими частицами внутренними пружинными сочленениями, расположенными по краям меша. С одной стороны, внутренние сочленения позволяют воссоздать топологию меша, а с другой — ограничивают растяжение и складывание.

Mass-Spring Simulation Model

Each particle is characterized by a position, mass and velocity and has a constant spherical shape with a set radius. The total mass of the whole body is equally distributed among them. In accordance with Newton's second law particles can be acted upon by a force or an impulse applied by inner joints and external forces (collision, gravity, air resistance, wind, etc.).Каждая частица характеризуется положением, массой и скоростью и имеет постоянную сферическую форму с заданным радиусом. Общая масса всего тела равномерно распределяется между ними. В соответствии со вторым законом Ньютона на частицы могут действовать сила или импульс, приложенные внутренними сочленениями и внешними силами (коллизия, сила тяжести, сопротивление воздуха, ветер и т. д.).

Self-collision of the particles and collisions between different rope bodies are not calculated. However, the rope interacts with environment by colliding with other physical bodies if the Collision box is checked. Its behavior in case of contact is controlled by such parameters as friction and restitution. Selective physical interaction is available via corresponding bitmasks.Столкновении частиц друг с другом и столкновения между разными телами веревки не рассчитываются. Однако веревка взаимодействует с окружающей средой, сталкиваясь с другими физическими телами, если установлен флажок Collision. Его поведение при контакте контролируется такими параметрами, как трение и восстановление. Выборочное физическое взаимодействие доступно через соответствующие битовые маски.

Thus, Rope body can be regarded as a constrained system of rigid particles and therefore shares some parameters with Rigid body:Таким образом, тело Rope можно рассматривать как ограниченную систему жестких частиц, и поэтому некоторые параметры такие же, как у тела Rigid:

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

As already mentioned, each particle is a sphere with a set radius. Thus, particles use continuous collision detection. The rope never lies flat on the ground or tightly adheres to the surfaces. There is always a gap equal to particle radius.Как уже было сказано, каждая частица представляет собой сферу с заданным радиусом. Таким образом, частицы используют непрерывное обнаружение столкновений. Веревка никогда не лежит на земле ровно и не прилегает плотно к поверхности. Всегда есть зазор, равный радиусу частицы.

As collisions between the particles are not calculated, they should not be considered when setting a radius:Поскольку столкновения между частицами не рассчитываются, их не следует учитывать при установке радиуса:

  • Higher values are preferable for more robust behavior. However, too big radius may result in incorrect interaction with the environment (twitching or blowing up of the rope).Для более устойчивого поведения предпочтительнее более высокие значения. Однако слишком большой радиус может привести к некорректному взаимодействию с окружающей средой (подергиванию или разрыву веревки).
  • Lower values decrease the gap between the Rope body and the surface. However, too low radius results in poor collision handling.Более низкие значения уменьшают разрыв между телом Rope и поверхностью. Однако слишком малый радиус приводит к плохой обработке столкновений.
Примечание
An object can pass through the rope, when the particle radius is small and the rope is stretched. The reason is that continuous collision detection is performed only for particle spheres located in vertices of rope mesh.Предмет может пройти через веревку, если радиус частицы мал и веревка натянута. Причина в том, что непрерывное обнаружение столкновений выполняется только для сфер частиц, расположенных в вершинах меша веревки.

Joints Solver IterationsИтерации решения сочленений#

The number of iterations controls the accuracy of the solution of rope inner joints. This number indicates how many times the joints are solved per physics frame. Joints are solved in a random order to provide more predictable stretching results.Количество итераций контролирует точность решения внутренних сочленений веревки. Это число указывает, сколько раз сочленения решаются за физический кадр. Сочленения решаются в случайном порядке, чтобы обеспечить более предсказуемые результаты растяжения.

  • Low number of iterations results in faster simulation. However, in this case the rope is more prone to stretching and looks more elastic. The minimum value is 1.Меньшее количество итераций приводит к более быстрому моделированию. Однако в этом случае веревка более подвержена растяжению и выглядит более эластичной. Минимальное значение — 1.
  • High number of iterations provides more accurate solution of constraints. In this case the rope looks stiffer. The maximum value is 16.Большое количество итераций обеспечивает более точное решение ограничений. В этом случае веревка выглядит более жесткой. Максимальное значение — 16.

    Примечание
    Increased number of iterations is considerably expensive and at some point ceases to bring a noticeable benefit, so it should be kept within a reasonable cost-effectiveness limit.Увеличение количества итераций обходится значительно дороже и в какой-то момент перестает приносить заметную пользу, поэтому его следует удерживать в разумных пределах.

Increasing the number of iterations may help to avoid twitching of a rope.Увеличение количества итераций может помочь избежать подергивания веревки.

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

A rope may be deformed by stretching and folding. These deformations are controlled with joint constraints of two types:Веревку можно деформировать путем растяжения и складывания. Эти деформации контролируются связями двух типов:

With these types of constraints, it is possible to obtain the desired look and feel of the rope and simulate a variety of different deformable materials ranging from a stiff metal wire to an elastic rubber cord.С помощью этих типов ограничений можно получить желаемый внешний вид веревки и смоделировать множество различных деформируемых материалов, от жесткой металлической проволоки до эластичного резинового шланга.

Linear RestitutionЛинейное восстановление#

Linear restitution determines how far the rope particles can be stretched apart from each other. It enforces rope joints to restore the distance that was between the vertices of the original mesh:Линейное восстановление определяет, насколько далеко частицы веревки могут быть растянуты друг от друга. Оно заставляет сочленения веревки восстановить расстояние, которое было между вершинами исходного меша:

  • By the maximum value of 1, the particles spring back with great force and the rope is hard to stretch. It gives the effect of stiff non-stretch rope, e.g. a metal wire.При максимальном значении 1 частицы отскакивают с большой силой, и веревку трудно растягивать. Это дает эффект жесткой нерастягивающейся веревки, например металлической проволоки.
  • The lower the value, the easier the particles are moved away from each other and the more stretchable and elastic the rope is, e.g. a rubber cord.Чем ниже значение, тем легче частицы удаляются друг от друга и тем более растяжимым и эластичным является веревка, например резиновый шнур.

    Примечание
    0 and near zero values are not allowed because they cause unstable simulation and blowing up of the rope.0 и близкие к нулю значения не допускаются, потому что они вызывают нестабильную симуляцию и разрыв модели веревки.

Angular RestitutionУгловое восстановление#

Angular restitution determines the possible angle between rope triangles that are formed by particles. It constrains the folding of the rope by enforcing joints to keep the angle between the triangles of the original mesh:Угловое восстановление определяет возможный угол между треугольниками веревки, образованными частицами. Оно ограничивает складывание веревки, усиливая сочленения, чтобы сохранить угол между треугольниками исходного меша:

  • By the maximum value of 1, the angles tend to be retained and the rope resists folding. The rope appears to be stiff.При максимальном значении 1 углы сохраняются, и веревка сопротивляется складыванию. Веревка кажется жесткой.

    Примечание
    The maximum value may provide unsteady behavior.Максимальное значение может привести к неустойчивому поведению.
  • By the minimum value of 0, the rope can be easily folded and bent in any direction, regardless of the original topology of the mesh.При минимальном значении 0 веревку можно легко складывать и сгибать в любом направлении, независимо от исходной топологии меша.
Примечание

If the rope is too stretchy and rubbery, try one of the following:Если веревка слишком эластичная, попробуйте одно из следующих действий:

  • Set linear restitution to 1.Установите для линейного восстановления значение 1.
  • Increase the number of joints solver iterations.Увеличьте количество итераций решения сочленений.
  • Use the mesh with fewer vertices.Используйте меш с меньшим количеством вершин.

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

The Rigidity parameter is an additional constraint of the rope motion to make it stiffer and more inflexible. For that purpose, linear and angular velocities of each rope particle are corrected according to the total velocities interpolated for all the particles.Параметр Rigidity является дополнительным ограничением движения веревки, чтобы сделать ее более жесткой и негибкой. Для этого линейная и угловая скорости каждой частицы веревки корректируются в соответствии с полными скоростями, интерполированными для всех частиц.

  • The minimum value of 0, makes the rope elastic, flexible and easily deformable.Минимальное значение 0 делает веревку эластичной, гибкой и легко деформируемой.
  • The maximum value of 1, makes the rope stiffer and less prone to deformation.Максимальное значение 1 делает веревку более жесткой и менее подверженной деформации.

TearingРазрыв#

When the rope is stretched or folded beyond its elastic limit, it tears and shreds into pieces. Tearing is caused by applying the force or collision with a physical body, and depends on the rope stiffness (controlled by linear and angular restitution parameters). The rope is torn only along the edges of rope triangles, splitting mesh vertices and duplicating particles.Когда веревка растягивается или сгибается сверх предела упругости, она рвется и рассыпается на куски. Разрыв вызывается приложением силы или столкновением с физическим телом и зависит от жесткости веревки (контролируется параметрами линейного и углового восстановления). Веревка рвется только по краям треугольников, разделяя вершины меша и дублируя частицы.

Примечание
If torn pieces of rope fall onto one plane, they cause Z-fighting.Если порванные куски веревки падают на одну плоскость, они вызывают мерцание (Z-fighting).

Linear Threshold DistanceЛинейное пороговое значение#

Linear threshold sets the distance limit for stretching the rope. When two particles move away from each other further than this limit, joints that connect them break and a the tear appears.Линейное пороговое значение устанавливает предел расстояния для растяжения веревки. Когда две частицы удаляются друг от друга дальше этого предела, соединяющие их сочленения ломаются, и происходит разрыв.

  • If set to infinity (inf), the rope is stretched without tearing. This value is set by default.Если указано значение бесконечность (inf), веревка растягивается без разрывов. Это значение установлено по умолчанию.

Angular Threshold AngleУгловое пороговое значение#

Same as linear threshold, angular threshold represents a maximum angle to fold the rope relative to its initial state.Как и линейное пороговое значение, угловое пороговое значение представляет собой максимальный угол складывания веревки относительно исходного состояния.

  • If set to infinity (inf), the rope is folded without tearing. This value is set by default.Если указано значение бесконечность (inf), веревка складывается без разрывов. Это значение установлено по умолчанию.

    Примечание
    It is recommended to keep the angular threshold lower or equal to 180 degrees.Рекомендуется поддерживать угловой порог ниже или равным 180 градусов.

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, simulation of the rope can be updated with a reduced framerate. When the player is out of the area specified by the Update Distance Limit, the rope stops to be updated and freezes statically.Чтобы улучшить характеристики и избежать чрезмерной нагрузки, можно уменьшить частоту кадров обновления при моделировании веревки. Когда игрок находится за пределами области, указанной параметром Update Distance Limit, веревка перестает обновляться и статически застывает.

The set of frame rates given below enables you to specify how often the rope 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 Mesh Skinned and Mesh Dynamic (flickering due to misalignment, e.g. in case of attaching a rope to a Mesh Skinned).Учтите, что использование пониженной частоты кадров обновления для объекта должно быть тщательно продумано в логике вашего приложения, так как это может привести к различным проблемам с рендерингом Mesh Skinned и Mesh Dynamic (мерцание из-за несовпадения, например, в случае прикрепления веревки к Mesh Skinned).

Assigning a Rope BodyНазначение тела веревки#

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

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

    Примечание
    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 -> Rope.Перейдите на вкладку Physics в окне Parameters и назначьте физическое тело выбранному объекту, выбрав Body -> Rope.

    Adding a body

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

Attaching a RopeПрикрепление веревки#

Веревка, прикрепленная к Mesh Skinned

Rope attached to animated characterВеревка, прикрепленная к персонажу со скелетной анимацией

Ropes can be attached to the following types of bodies:Веревки могут быть прикреплены к телам следующих типов:

To attach a rope to a body, use the Particles joint. In case of Rigid body (either static or dynamic) and Dummy body, pinned particles stay fixed in their position and follow transformations of attached objects pulling the rope with it.Чтобы прикрепить веревку к телу, используйте сочленение Particles. В случае тел Rigid (статического или динамического) и Dummy закрепленные частицы остаются фиксированными в своем положении и следуют преобразованиям прикрепленных объектов, таща за собой веревку.

  1. Select Rigid body, RagDoll body or Dummy body.Выберите тело Rigid, RagDoll или Dummy.
  2. Add Particles joint.Добавьте сочленение Particles.
  3. Specify Rope body.Укажите тело Rope.
  4. Adjust the pinning area using the Threshold and Size parameters of the Particles joint.Отрегулируйте область закрепления с помощью параметров Threshold и Size сочленения Particles.
Примечание
To ensure stable simulation it is important to set appropriate masses of the rope and the attached body. Unbalanced masses may cause twitching of rope joints.Для обеспечения стабильной симуляции важно установить соответствующие массы веревки и прикрепленного тела. Неуравновешенные массы могут вызвать подергивание сочленений веревки.

Attachment to Skinned MeshПрисоединение к Mesh Skinned#

Convincing simulation of the rope on a Mesh Skinned character requires a different approach. To follow bones transformations, each vertex of the rope that is found in the Particles joint area is mapped to the nearest Mesh Skinned vertex (up to the distance specified by the Threshold parameter of the particles joint).Убедительная симуляция веревки на персонаже Mesh Skinned требует другого подхода. Чтобы отслеживать преобразования костей, каждая вершина веревки, которая находится в области сочленения Particles, проецируется на ближайшую вершину Mesh Skinned (до расстояния, указанного параметром Threshold сочленения Particles).

Примечание
It is not recommended to attach the rope directly to the Mesh Skinned character, because difference in topologies may result in visual artifacts. Instead, it is better to create an identical rope surface on the Mesh Skinned character, make it invisible and attach a physical rope to it.Не рекомендуется прикреплять веревку непосредственно к объекту Mesh Skinned, потому что различие в топологии может привести к визуальным артефактам. Вместо этого лучше создать идентичную поверхность веревки на персонаже Mesh Skinned, сделать ее невидимой и прикрепить к ней физическую веревку.

For example, we need to create a rope that is glued to the hand of a Mesh Skinned character while the rest of the rope hangs and moves loosely. It is done in the following steps:Например, нам нужно создать веревку, которая приклеивается к руке персонажа Mesh Skinned, в то время как остальная часть веревки висит и свободно движется. Это делается следующим образом:

  1. When creating a Mesh Skinned, add a rope segment surface identical to the clipped part that needs to be pinned. In our case, it's the rope part in a hand.При создании Mesh Skinned добавьте поверхность сегмента веревки, идентичную той части, которую необходимо закрепить. В нашем случае это часть веревки, которая находится в руке.
  2. Add Mesh Skinned that has a RagDoll body assigned. Make sure that the rope segment surface is enabled.Добавьте Mesh Skinned с назначенным телом RagDoll. Убедитесь, что поверхность сегмента веревки включена.
  3. Add a separate dynamic rope mesh and synchronize its position with Mesh Skinned character. Turn off physical simulation (CTRL + SPACE) and assign a Rope body.Добавьте отдельный динамический меш веревки и синхронизируйте его положение с персонажем Mesh Skinned. Отключите физическое моделирование (CTRL + SPACE) и назначьте тело Rope.
  4. Attach Rope body to RagDoll body. If the Threshold distance of the particles joint is set low enough, the physical rope will be automatically attached only to the rope segment surface (i.e. hand). After that, the rope segment surface is simply disabled and does not provide any load at all.Прикрепите тело Rope к телу RagDoll. Если пороговое расстояние сочленения Particles достаточно низкое, физическая веревка автоматически прикрепится только к поверхности сегмента веревки (то есть к руке). После этого поверхность сегмента веревки просто отключается и не создает никакой нагрузки.
Последнее обновление: 19.12.2023
Build: ()