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
Учебные материалы

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

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

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

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

Required mesh triangulation

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 можно рассматривать как ограниченную систему твердых частиц и, следовательно, разделяет некоторые параметры с твердыми телами:

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.Поскольку частицы ткани приближены к сферам, ткань никогда не ложится на землю ровно или плотно прилегает к поверхностям. Всегда есть зазор, размер которого соответствует заданному радиусу.
Примечание
An object can pass through the cloth, when the particle radius is small and the cloth is stretched. The reason is that continuous collision detection is performed only for particle spheres located in vertices of cloth mesh.Предмет может пройти сквозь ткань, если радиус частицы мал, а ткань растянута. Причина в том, что непрерывное обнаружение столкновений выполняется только для сфер частиц, расположенных в вершинах меша ткани.

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:Ткань может деформироваться при растяжении и складывании. Эти деформации контролируются связями двух типов:

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.Когда ткань растягивается до предела эластичности или складывается, она рвется и рассыпается на куски. Разрыв вызывается приложением силы или столкновением с физическим телом и зависит от жесткости ткани (контролируется параметрами линейного и углового восстановления). Например, представьте, как пушечное ядро попадает в парус и оставляет в нем дыру. Ткань рвется только по краям треугольников ткани, разделяя вершины меша и дублируя частицы.

Cloth tearing

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

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

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 UnigineEditor or via API at run time.Эта функция включена с настройками по умолчанию, обеспечивая оптимальную производительность, и может быть настроена для каждого объекта в UnigineEditor или через API во время выполнения.

Внимание
Please 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 skinned and dynamic meshes (flickering due to misalignment, e.g. in case of attaching a cloth to a skinned mesh).Помните, что использование пониженной частоты кадров обновления для объекта должно быть тщательно продумано в логике вашего приложения, так как это может привести к различным проблемам с рендерингом объектов Mesh Skinned и Mesh Dynamic (мерцание из-за несовпадения, например, в случае прикрепления ткани к Mesh Skinned).

Assigning a Cloth BodyНазначение тела Cloth#

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

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

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

    Adding a body

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

Attaching the ClothПрикрепление ткани#

I'm Batman!

Cloth attached to animated characterТкань, прикрепленная к анимированному персонажу

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 закрепленные частицы остаются фиксированными в своем положении и повторяют преобразования объектов, к которым они крепятся, вытягивая за собой ткань.

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

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).

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

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:Например, нам нужно создать плащ, который одной стороной приклеен к плечам персонажа со скелетной анимацией, а остальные части свободно провисают складками. Это делается следующим образом:

  1. 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 добавьте поверхность плаща, идентичную плащу, который будет носить персонаж. Это может быть как целый плащ, так и только его обрезанная часть, которую нужно приколоть. Последнее предпочтительнее при моделировании сложной одежды, что требует более гибкого контроля над тем, какие части моделировать физически, а какие перемещать с персонажем со скелетной анимацией. В нашем случае это часть ткани на плечах.
  2. Add skinned mesh that has a Ragdoll body assigned. Make sure that the cape surface is enabled.Добавьте меш со скелетной анимацией, на который назначено тело Ragdoll. Убедитесь, что поверхность плаща включена.
  3. 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.
  4. 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, достаточно низкое, физический плащ будет автоматически прикреплен только к поверхности плаща (то есть плечам). После этого плащ просто отключается и не создает никакой нагрузки.
Последнее обновление: 07.03.2023
Build: ()