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.Чтобы прикрепить ткань к телу так, чтобы она свисала как плащ или занавеска, используйте сочленение Particles.
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 classКласс BodyCloth
- An example illustrating the use of Cloth body and Particles JointПример, иллюстрирующий использование Cloth body и сочленения Particles
- 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.Столкновение частиц с самими собой и столкновения между различными телами Cloth не рассчитываются. Однако ткань взаимодействует с окружающей средой, сталкиваясь с другими физическими телами, если установлен флажок 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Назначение тела Cloth#
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. В случае тел Rigid (статических или динамических) и тел Dummy закрепленные частицы остаются фиксированными в своем положении и повторяют преобразования объектов, к которым они крепятся, вытягивая за собой ткань.
- Select Rigid body, Ragdoll body or Dummy body.Выберите тело Rigid, Ragdoll или Dummy.
- Add Particles Joint.Добавьте сочленение Particles.
- Specify Cloth body.Укажите тело Cloth.
- Adjust the pinning area using the Threshold and Size parameters of the particles joint.Настройте область прикрепления, используя параметры Threshold и Size сочленения Particles.
Attachment to Skinned MeshПрисоединение к 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, сопоставляется с ближайшей вершиной Mesh Skinned (до расстояния, указанного параметром Threshold для сочленения Particles).
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. Убедитесь, что поверхность плаща включена.
- Add a separate dynamic cloth mesh and synchronize its position with skinned character. Turn off physical simulation (CTRL + SPACE) and assign a Cloth body.Добавьте отдельный Mesh Dynamic для ткани и синхронизируйте его положение с персонажем со скелетной анимацией. Отключите моделирование физики (CTRL + SPACE) и назначьте тело Cloth.
- 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 к телу Ragdoll. Если расстояние, заданное в параметре Threshold сочленения Particles, достаточно низкое, физический плащ будет автоматически прикреплен только к поверхности плаща (то есть плечам). После этого плащ просто отключается и не создает никакой нагрузки.