Cloth Body
Cloth body enables physical simulation of textiles, clothing and foliage, as well as sheets of any soft material. A cloth can be torn to pieces and also it can be pinned to the following types of bodies:Cloth body позволяет физически моделировать текстиль, одежду и листву, а также листы из любого мягкого материала. Ткань может быть разорвана на куски, а также ее можно приколоть к телам следующих типов:
To pin a cloth to a body so it would hang like a cape or a curtain, use the Particles Joint.Чтобы прикрепить ткань к телу так, чтобы она свисала как плащ или занавеска, используйте Соединение частиц .
Cloth body greatly enhances the appearance of dressed characters (otherwise entirely animated) and saves the time of game artists. However, simulation of this type of body is quite costly and it is strongly recommended to use distance optimization to avoid performance hits.Cloth body значительно улучшает внешний вид одетых персонажей (в остальном полностью анимированных) и экономит время игровых художников. Однако моделирование этого типа тела довольно затратно, и настоятельно рекомендуется использовать оптимизация расстояния чтобы избежать снижения производительности.
See alsoСмотрите также#
- BodyCloth classBodyCloth класс
- An example illustrating the use of Cloth body and Particles JointAn пример иллюстрируя использование Cloth body и Соединение частиц
- Fragment of the video tutorial on physics illustrating simulation of cloth using Cloth bodyФрагмент видеоурока по физике, иллюстрирующий моделирование ткани с использованием Cloth body
Mesh RequirementsТребования к сетке#
In most cases, it is important that polygon triangulation of the mesh, for which Cloth body is generated, is as illustrated! Otherwise, it may not stretch properly and evenly in all directions.В большинстве случаев важно, чтобы триангуляция полигона сетки, для которой генерируется Cloth body, была такой, как показано! В противном случае это может не протяжение правильно и равномерно по всем направлениям.
For example in 3ds Max, mesh topology needs to be edited manually: choose Modify > Selection > Edit Edges rollout and click Turn to turn the triangles in a poly.Например, в 3ds Max топологию сетки необходимо отредактировать вручную: выберите свиток Modify > Selection > Edit Edges и щелкните Turn, чтобы превратить треугольники в поли.
Mass-Spring Simulation ModelИмитационная модель масс-пружины#
Cloth 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.Cloth 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 cloth bodies are not calculated. However, the cloth 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, Cloth body can be regarded as constrained system of rigid particles and therefore shares some parameters with rigid bodies:Таким образом, Cloth body можно рассматривать как ограниченную систему твердых частиц и, следовательно, разделяет некоторые параметры с твердыми телами:
- massмасса
- frictionтрение
- restitutionреституция
- linear and angular dampingлинейное и угловое демпфирование
Particle RadiusРадиус частицы#
As it was already mentioned, each particle is a sphere with a set radius. That brings the following:Как уже было сказано, каждая частица представляет собой сферу с заданным радиусом . Это дает следующее:
- Cloth particles use continuous collision detection, so higher values are preferable for more robust behavior. Collisions between the particles are not calculated and should not be considered when setting a radius. Be careful, however, as particles too big in diameter can provide incorrect interaction with environment (twitching or blowing up of the cloth). Too low radius results in poor collision handling.Частицы ткани используют непрерывное обнаружение столкновений, поэтому более высокие значения предпочтительнее для более надежного поведения. Столкновения между частицами не рассчитываются и не должны учитываться при установке радиуса. Однако будьте осторожны, поскольку частицы слишком большого диаметра могут привести к некорректному взаимодействию с окружающей средой (подергиванию или вздутию ткани). Слишком малый радиус приводит к плохой обработке столкновений.
- As cloth particles are approximated with spheres, the cloth never lies flat on the ground or tightly adheres to the surfaces. There is always some gap that corresponds in size to set radius.Поскольку частицы ткани приближены к сферам, ткань никогда не ложится на землю ровно или плотно прилегает к поверхностям. Всегда есть зазор, размер которого соответствует заданному радиусу.
Joints Solver IterationsИтерации решателя суставов#
The number of iterations controls the accuracy of the solution of cloth 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 cloth 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 cloth 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 cloth.Увеличение количества повторений может помочь избежать подергивания ткани.
Stretching and FoldingРастяжка и складывание#
A cloth 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 cloth and simulate a variety of different deformable materials ranging from a stiff carton to soft lycra.С помощью этих типов ограничений можно получить желаемый внешний вид ткани и имитировать множество различных деформируемых материалов, от жесткого картона до мягкой лайкры.
Linear RestitutionЛинейная реституция#
Linear restitution determines how far the cloth particles can be stretched apart from each other. It enforces cloth 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 cloth is hard to stretch. It gives the effect of stiff non-stretch cloth, e.g. linen or tweed.При максимальном значении 1 частицы отскакивают с большой силой, и ткань трудно растянуть. Создает эффект жесткой неэластичной ткани, например льняной или твидовой.
-
The lower the value, the easier the particles are moved away from each other and the more stretchable and elastic the cloth is, e.g. nylon or spandex.Чем ниже значение, тем легче частицы удаляются друг от друга и тем более растяжимой и эластичной будет ткань, например нейлон или спандекс.
0 and near zero values are not allowed because they cause unstable simulation and blowing up of the cloth.0 и близкие к нулю значения не допускаются, потому что они вызывают нестабильную симуляцию и взрыв ткани.
Angular RestitutionУгловая реституция#
Angular restitution determines the possible angle between cloth triangles that are formed by particles. It constrains the folding of the cloth by enforcing joints to keep the angle that was between triangles of the original mesh:Угловое восстановление определяет возможный угол между треугольниками ткани, образованными частицами. Он ограничивает складывание ткани, усиливая стыки, чтобы сохранить угол, который был между треугольниками исходной сетки:
-
By the maximum value of 1, the angles tend to be retained and the cloth resists folding. The cloth appears to be stiff and wrinkle-free (for example, paper).При максимальном значении 1 углы сохраняются, и ткань сопротивляется складыванию. Ткань кажется жесткой и без складок (например, бумага).
The maximum value may provide unsteady behavior.Максимальное значение может привести к неустойчивому поведению. - By the minimum value of 0, the cloth can be easily folded and bent in any direction, regardless of the original topology of the mesh.При минимальном значении 0 ткань можно легко складывать и гнуть в любом направлении, независимо от исходной топологии сетки.
If the cloth 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Жесткость движения#
Rigidity parameter is an additional constraint of the cloth motion to make it stiffer and more inflexible. For that purpose, linear and angular velocities of each cloth particle are corrected according to the total velocities interpolated for all the particles.Параметр жесткости - это дополнительное ограничение движения ткани, которое делает ее более жесткой и негибкой. Для этого линейная и угловая скорости каждой частицы ткани корректируются в соответствии с полными скоростями, интерполированными для всех частиц.
- The minimum value of 0, makes the cloth elastic, flexible and easily deformable.Минимальное значение 0 делает ткань эластичной, гибкой и легко деформируемой.
- The maximum value of 1, makes the cloth stiffer and less prone to deformation.Максимальное значение 1 делает ткань более жесткой и менее склонной к деформации.
TearingРазрывая#
When the cloth is stretched beyond its elastic limit or folded, it tears and shreds into pieces. Tearing is caused by applying the force or collision with a physical body, and depends on the cloth stiffness (controlled by linear and angular restitution parameters). For example, imagine the cannonball hitting the sail and leaving the hole in it. The cloth is torn only along the edges of cloth triangles, splitting mesh vertices and duplicating particles.Когда ткань растягивается до предела эластичности или складывается, она рвется и рассыпается на куски. Разрыв вызывается приложением силы или столкновением с физическим телом и зависит от жесткости ткани (контролируется линейный а также угловая реституция параметры). Например, представьте, как пушечное ядро попадает в парус и оставляет в нем дыру. Ткань рвется только по краям треугольников ткани, разделяя вершины сетки и дублируя частицы.
Linear Threshold DistanceЛинейное пороговое расстояние#
Linear threshold sets the distance limit for stretching the cloth. When two particles move away from each other further than this limit, joints that connect them break and the tear appears.Линейный порог устанавливает предел расстояния для растяжение ткань. Когда две частицы удаляются друг от друга дальше этого предела, соединяющие их соединения ломаются, и появляется разрыв.
- If set to infinity (inf), the cloth 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 cloth relative to its initial state. If cloth triangles are bent any further, the joint breaks and triangles are separated along the adjacent edge.Так же, как и линейный порог, угловой порог представляет собой максимальный угол к складывать ткань относительно исходного состояния. Если треугольники ткани сгибаются дальше, стык разрывается, и треугольники разделяются по соседнему краю.
-
If set to infinity (inf), the cloth 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 cloth can be updated with a reduced framerate. When the player is out of the area specified by the Update Distance Limit, the cloth stops to be updated and freezes statically.Чтобы улучшить производительность и избежать чрезмерной нагрузки, можно моделировать ткань. обновлено с уменьшенной частотой кадров . Когда игрок находится за пределами области, указанной параметром Update Distance Limit, ткань перестает обновляться и статически замерзает.
The set of frame rates given below enables you to specify how often the cloth 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 UnigineEditor or via API at run time.Эта функция включена с настройками по умолчанию, обеспечивающими оптимальную производительность, и может быть настроена для каждого объекта в UnigineEditor или через API во время выполнения.
Assigning a Cloth BodyНазначение тканевого тела#
To assign a Cloth body to an object via UnigineEditor perform the following steps:Чтобы присвоить объекту Cloth body через UnigineEditor выполните следующие действия:
- Open the World Hierarchy window.Откройте окно World Hierarchy.
-
Select a Dynamic Mesh object to assign a Cloth body to.Выберите объект Dynamic Mesh, которому нужно присвоить Cloth body.
Make sure that 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 -> Cloth.Перейдите на вкладку Physics в окне Parameters и назначьте физический тело к выбранному объекту, выбрав Body -> Cloth.
- Set body's name and change other parameters, if necessary.Задайте название тела и при необходимости измените другие параметры.
Attaching the ClothПрикрепление ткани#
A cloth can be attached to the following types of bodies:Полотно можно прикрепить к телам следующих типов:
To attach a cloth to a body use a Particles Joint. In case of Rigid bodies (either static, or dynamic) and Dummy bodies, pinned particles stay fixed in their position and follow transformations of attached objects pulling the cloth with it.Чтобы прикрепить ткань к телу, используйте Particles Joint. В случае тел Rigid (статических или динамических) и тел Dummy закрепленные частицы остаются фиксированными в своем положении и следуют преобразованиям прикрепленных объектов, вытягивая за собой ткань.
- Select Rigid body, Ragdoll body or Dummy body.Выберите Rigid body, Ragdoll body или Dummy body.
- Add Particles Joint.Добавьте Particles Joint.
- Specify Cloth body.Укажите Cloth body.
- Adjust the pinning area using the Threshold and Size parameters of the particles joint.Отрегулируйте область закрепления, используя параметры Threshold и Size соединения частиц.
Attachment to Skinned MeshПрисоединение к сетке со скелетом#
Convincing simulation of the clothing on a skinned character requires a different approach. To follow bones transformations, each vertex of the cloth that is found in the Particles Joint area is mapped to the nearest skinned mesh vertex (up to the distance specified by the Threshold parameter of the particles joint).Убедительная симуляция одежды персонажа без кожи требует другого подхода. Чтобы отслеживать преобразования костей, каждая вершина ткани, которая находится в области Particles Joint, отображается на ближайшую вершину скелетного меша (до расстояния, указанного параметром Threshold соединения частиц).
For example, we need to create a cape that is glued to the shoulders of a skinned character while the rest flaps and folds loosely. It is done in the following steps:Например, нам нужно создать плащ, который приклеивается к плечам персонажа с кожей, а остальные складываются свободно. Это делается в следующие шаги:
- When creating a Mesh Skinned, add a cape surface identical to the cape that the character would wear. It can be either a whole cape, or only its clipped part that needs to be pinned. The latter is preferable when complex clothing is simulated, which requires more flexible control over which parts to simulate physically and which ones to move with skinned character. In our case, it's cloth part over the shoulders.При создании Mesh Skinned добавьте поверхность плаща, идентичную плащу, который будет носить персонаж. Это может быть как целая накидка, так и только ее обрезанная часть, которую нужно приколоть. Последнее предпочтительнее при моделировании сложной одежды, что требует более гибкого контроля над тем, какие части моделировать физически, а какие перемещать с персонажем без кожи. В нашем случае это тканевая часть на плечах.
- Add skinned mesh that has a Ragdoll body assigned. Make sure that the cape surface is enabled.Добавьте сетку со скелетом, которой назначен Ragdoll body. Убедитесь, что накидка активирована .
- Add a separate dynamic cloth mesh and synchronize its position with skinned character. Turn off physical simulation (CTRL + SPACE) and assign a Cloth body.Добавьте отдельную динамическую сетку ткани и синхронизируйте ее положение с персонажем со скелетом. Отключите физическое моделирование (CTRL + SPACE) и назначать а Cloth body.
- Attach Cloth body to Ragdoll body. If the Threshold distance of the particles joint is set low enough, the physical cape will be automatically attached only to the cape surface (i.e. shoulders). After that, the cape surface is simply disabled and does not provide any load at all.Прикреплять От Cloth body до Ragdoll body. Если расстояние Threshold соединения частиц установлено достаточно низким, физический плащ будет автоматически прикреплен только к поверхности плаща (то есть плечам). После этого накидка просто отключается и не несет никакой нагрузки.