Rope Body
Rope body enables physical simulation of ropes, cables, wires, etc. Ropes can be pinned to the following types of bodies:Rope body обеспечивает физическое моделирование канатов, кабелей, проводов и т. Д. Канаты могут быть прикреплены к телам следующих типов:
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 joint. Rope body можно разорвать как Cloth body. Веревка повышает реалистичность моделируемой среды и экономит время художников, поскольку заменяет анимацию. Однако моделирование этого типа тела довольно затратно, и настоятельно рекомендуется использовать оптимизация расстояния чтобы избежать снижения производительности.
See alsoСмотрите также#
- BodyRope classBodyRope класс
- An example illustrating the use of Rope body and Particles jointAn пример иллюстрируя использование Rope body и Particles joint
- Fragment of the video tutorial on physics illustrating simulation of wires and ropes using Rope bodyФрагмент видеоурок по физике, иллюстрирующий моделирование проводов и канатов с использованием Rope body
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 body - это цилиндр . Вы можете использовать стандартный примитивный цилиндр для создания веревки. В этом случае рекомендуем использовать следующий подход:
- On the Menu bar, click Create -> Primitive -> Cylinder.В панели инструментов нажмите Create -> Primitive -> Cylinder.
-
Specify desired rope parameters (length, radius) for a cylinder, e.g. the following:Задайте желаемые параметры веревки (длина, радиус) для цилиндра, например, следующие:
- 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/.
- Create a Dynamic Mesh object and use the cylinder mesh for it.Создайте объект Dynamic Mesh и используйте для него меш цилиндра.
- 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 body моделируется как набор точечных масс (частиц), расположенных в вершинах сетки. Каждая частица имеет форму шара и связана с другими частицами внутренними пружинными соединениями, расположенными по краям сетки. Внутренние стыки позволяют воссоздать топологию сетки, с одной стороны, и ограничивают растяжение и складывание, с другой.
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 body можно рассматривать как ограниченную систему жестких частиц, и поэтому некоторые параметры имеют общие параметры с Rigid body:
Particle RadiusРадиус частицы#
As it was 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 body и поверхностью. Однако слишком малый радиус приводит к плохой обработке столкновений.
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:Веревку можно деформировать при растяжении и складывании . Эти деформации контролируются связями двух типов:
- Linear restitution controls stretching.Линейная реституция контролирует растяжку.
- Angular restitution controls folding.Угловая реституция управляет складыванием.
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.Когда веревка растягивается или сгибается сверх предела упругости, она рвется и рассыпается на куски. Разрыв вызывается приложением силы или столкновением с физическим телом и зависит от жесткости веревки (контролируемой линейный а также угловая реституция параметры). Веревка рвется только по краям треугольников веревки, разделяя вершины сетки и дублируя частицы.
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.Приведенный ниже набор частот кадров позволяет указать, как часто моделирование веревки должно обновляться, когда объект виден, когда видна только его тень или когда он не виден вообще.
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 Rope BodyНазначение тела веревки#
To assign a Rope body to an object via UnigineEditor perform the following steps:Чтобы присвоить объекту Rope body через UnigineEditor выполните следующие действия:
- Open the World Hierarchy window.Откройте окно World Hierarchy.
-
Select a dynamic mesh object to assign a Rope body to.Выберите динамическая сетка объект, которому нужно присвоить Rope 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 -> Rope.Перейдите на вкладку Physics в окне Parameters и назначьте физический тело к выбранному объекту, выбрав Body -> Rope.
- Set the body's name and change other parameters, if necessary.Задайте название тела и при необходимости измените другие параметры.
Attaching a RopeПрикрепление веревки#
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 joint. В случае Rigid body (статического или динамического) и Dummy body закрепленные частицы остаются фиксированными в своем положении и следуют преобразованиям прикрепленных объектов, таща за собой веревку.
- Select Rigid body, RagDoll body or Dummy body.Выберите Rigid body, RagDoll body или Dummy body.
- Add Particles joint.Добавьте Particles joint.
- Specify Rope body.Укажите Rope body.
- Adjust the pinning area using the Threshold and Size parameters of the Particles joint.Отрегулируйте область закрепления с помощью параметров Threshold и Size файла Particles joint.
Attachment to Skinned MeshПрисоединение к сетке со скелетом#
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 joint, отображается на ближайшую вершину Mesh Skinned (до расстояния, указанного параметром Threshold соединения частиц).
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, в то время как остальная часть веревки висит и свободно движется. Это делается в следующие шаги:
- 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 добавьте поверхность сегмента веревки, идентичную обрезанной части, которую необходимо закрепить. В нашем случае это веревочная часть руки.
- Add Mesh Skinned that has a RagDoll body assigned. Make sure that the rope segment surface is enabled.Добавьте Mesh Skinned с Тряпичная кукла тело назначено. Убедитесь, что поверхность сегмента веревки активирована.
- 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 body.
- 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 body до RagDoll body. Если расстояние Threshold соединения частиц установлено достаточно низким, физическая веревка будет автоматически прикреплена только к поверхности сегмента веревки (то есть к руке). После этого поверхность канатного сегмента просто отключается и не несет никакой нагрузки.