Симуляция ткани
Подготовка меша
Система симуляции ткани использует альфа-каналы вершин мешей. Значения в альфа-канале показывают, насколько сильно вершина может отклониться от своего исходного положения. Значение альфа 0,1 означает, что вершина может быть смещена на 0,1 единицы от исходного положения в результате симуляции ткани. Если установить для альфа-значения ноль, это означает, что вершина будет зафиксирована в своей позиции и не будет обновляться симуляцией.
| Shaded | Vertex Alpha |
|---|---|
![]() |
![]() |
Чёрные участки управляются системой скиннинга, в то время как белые участки симулируются. Стоит отметить, что расчёты скиннинга выполняются для всех вершин, независимо от того, зафиксированы они или нет. Позиции скиннингованных вершин используются как опорные точки (anchor points) для симулируемых вершин. Можно представить, что симулируемая вершина может перемещаться только внутри сферы с радиусом R и центром C. Здесь альфа-канал цвета вершины используется как радиус, а позиция после скиннинга — как центр.
| Shaded | Vertex Alpha |
|---|---|
![]() |
![]() |
Типы симуляции
Прямая симуляция (Direct simulation)
При прямой симуляции вершины отрисовываемого меша симулируются напрямую системой симуляции ткани. Эта техника может использоваться для мешей с простой топологией (например, сетка) и небольшим количеством вершин. По мере увеличения количества вершин нагрузка на производительность от симуляции будет расти.
Маппированная симуляция (Mapped simulation)
В некоторых случаях ваш меш может не подходить для симуляции ткани. Примеры: доспехи с двусторонними полигонами, одежда с более чем одним слоем или меши с большим количеством полигонов. Для таких случаев можно использовать отдельный меш для симуляции. Если используется отдельный симуляционный меш, вершины именно этого меша симулируются системой симуляции ткани. Вершины исходного меша будут замаплены (mapped) на симулируемый меш и будут перемещаться вместе с ним.

На изображениях выше меши справа используются для симуляции, а меши слева отрисовываются в соответствии с результатами симуляции. Чтобы добиться реалистичных результатов, ваш симуляционный меш должен плотно соответствовать отрисовываемому мешу и никогда не должен его покрывать. Другими словами, отрисовываемый меш никогда не должен проникать внутрь симуляционного меша. Если это происходит, поскольку расчёты коллизий выполняются для симуляционного меша, вы можете увидеть артефакты коллизий, например, ногу, проникающую сквозь доспех.
Редактор ткани (Cloth Editor)
Чтобы включить симуляцию ткани для меша, необходимо настроить некоторые игровые параметры. Редактор ткани используется для настройки меша для симуляции. Редактор ткани можно открыть из меню панели инструментов редактора.

Свойства предпросмотра (Preview properties)
Preview mesh (меш предпросмотра)
Чтобы начать работу с мешем, выберите его в меню Preview mesh и выберите подмеши, которые будут симулироваться, на панели свойств ткани отрисовываемого меша (Render mesh cloth properties). Если альфа-каналы меша правильно прокрашены, симуляция должна начаться в окне предпросмотра.
Simulation mesh (симуляционный меш)
Если вы хотите использовать отдельный симуляционный меш, выберите его в меню Simulation mesh. Альфа-канал этого меша также должен быть прокрашен, так как именно этот меш фактически симулируется. В этом случае альфа-канал меша предпросмотра используется, чтобы определить, будет ли вершина замаплена на симуляционный меш или будет отрисовываться с использованием исходных данных скиннинга. Значения альфа больше нуля означают, что вершина должна быть замаплена на симуляционный меш. Вершины с нулевым значением альфа будут использовать исходные данные скиннинга. Поскольку симуляционный меш имеет меньшее количество полигонов, чем исходный меш, это можно использовать для повышения качества скиннинга исходного меша для несимулируемых частей.
Helper mesh (вспомогательный меш)
Вы можете выбрать вспомогательный меш, чтобы предпросматривать ваш фактический симуляционный меш с помощью произвольного меша. Хороший пример — выбор меша лошади для симулируемого меша гривы.
Preview skeleton (скелет предпросмотра)
Если вы хотите работать со скиннингованным мешем и просматривать коллизионные капсулы и анимации, выберите соответствующий скелет.
Preview body (тело предпросмотра)
Вы можете назначить существующее коллизионное тело вашему мешу предпросмотра через меню Preview body. Изменение коллизионных тел можно выполнить на панели Cloth Bodies.
Preview animation name (имя анимации предпросмотра)
Вы можете протестировать вашу ткань с анимацией. Необходимо указать её имя в папке asset, а не то, что указано в animations*.xml, а также номера начального и конечного кадра и длительность. Запускать и останавливать анимацию можно кнопкой Toggle Animation.
Scene update coef (коэффициент обновления сцены)
Эффект замедленной съёмки можно симулировать, уменьшая это значение. Значение по умолчанию — 1, что означает, что все симуляции выполняются в нормальном режиме.
Render mesh cloth properties (свойства ткани отрисовываемого меша)
Вы можете выбрать, какие подмеши будут симулироваться, установив флажок рядом с каждым подмешем.
Разным подмешам можно назначить разные материалы ткани через столбец Cloth material. Параметр Max distance multiplier используется для масштабирования прокрашенных значений цвета вершин, которые определяют, насколько далеко вершина может сместиться от своей исходной позиции. Значение альфа вершины 0,5 при значении Max distance multiplier 3,0 означает, что эта вершина может сместиться на 1,5 единицы от своей исходной позиции.
Если вы используете отдельный симуляционный меш, значение max distance и материал ткани симуляционного меша переопределяют эти настройки. Все подмеши будут использовать тот же материал ткани, что назначен симуляционному мешу.
Simulation mesh cloth properties (свойства ткани симуляционного меша)
Если вы используете отдельный симуляционный меш, вы можете настроить его параметры здесь так же, как и свойства отрисовываемого меша, упомянутые выше. Материал ткани и значение max distance, выбранные здесь, будут использоваться для всех подмешей отрисовываемого меша.
Важно отметить, что вы должны сохранить свои настройки, нажав кнопку Save mesh settings.
Коллизионные тела (Collision Bodies)
Пресеты коллизий можно создавать и изменять в окне Collision bodies. Открыть окно Collision bodies можно через меню Edit > Edit collision bodies.

Капсула состоит из двух конечных точек. Эти точки можно скиннинговать на скелет отдельно, назначая им кости-владельцы (owner bones) и веса. Одна точка капсулы может быть привязана максимум к двум костям. Как и при скиннинге меша, веса определяют степень влияния этой кости на выбранную капсулу.
Материалы ткани (Cloth materials)
Все параметры симуляции для настройки поведения ткани задаются материалами ткани. Пресеты материалов ткани можно создавать и изменять в окне Material templates.
Открыть это окно можно через меню Edit > Edit merial templates.
Материалы, показанные в этом окне, являются пресетами, поэтому изменение этих пресетов не влияет на конфигурации уже существующих мешей ткани. Чтобы изменить параметры существующего меша ткани, нажмите кнопку Change parameters на панели свойств симуляционного/отрисовываемого меша и настройте каждый параметр в окне Mesh specific parameters.
Текущие параметры следующие:
Bending, Stretching, Shearing, Stiffness (изгиб, растяжение, сдвиг, жёсткость)
Определяет, насколько сильно ограничение ткани будет сопротивляться соответствующему воздействию.
Anchor Stiffness (жёсткость привязки)
Это ограничение строго лимитирует свободу вершины. Оно пытается сохранять постоянное расстояние между симулируемыми и фиксированными вершинами. Вы можете попробовать увеличить это значение, если ваш меш слишком сильно растягивается.
Damping (демпфирование)
Значения демпфирования для вершин. Определяют долю скорости текущего кадра, которая переносится на следующий кадр.
Linear Inertia (линейная инерция)
Поскольку наша симуляция ткани выполняется в локальном пространстве, глобальные изменения кадра передаются ткани виртуально. Это значение определяет, какая часть ускорения сущности будет передана ткани. Вы можете протестировать это, добавив меш ткани в сцену и случайным образом потрясти его сущность.
Air drag (сопротивление воздуха)
Для меша ткани, движущегося с постоянной скоростью, это значение определяет, насколько сильно сила воздуха будет влиять на его вершины.
Wind (ветер)
Вы можете контролировать, насколько сильно сила ветра будет воздействовать на ткань. Это значение является множителем для фактической силы ветра в сцене. Если в сцене нет ветра, увеличение этого значения не даст эффекта.
Gravity (гравитация)
Постоянная сила гравитации, воздействующая на каждую симулируемую вершину. Вы можете уменьшить это значение, чтобы добиться шелковистого поведения ткани.
Iteration Frequency (частота итераций)
Сколько раз меш ткани будет симулироваться в секунду. Это значение можно оставить по умолчанию, если только ваш меш не имеет крупных треугольников или не движется настолько быстро, что коллизионные капсулы не успевают “поймать” симулируемые вершины. Увеличение этого значения приводит к более стабильному поведению коллизий, но нагрузка на производительность также растёт линейно.
Precise Simulation (точная симуляция)
Мы жертвуем точностью ради производительности, применяя некоторые сжатия во время симуляции. В результате симулируемый меш может немного отклоняться от своего состояния покоя. Если точность важна для вашего меша, вы можете включить эту опцию для получения более корректных результатов.
Dummy Collision Particles (фиктивные частицы коллизии)
Если симулируемый меш имеет крупные треугольники относительно коллизионных капсул, капсулы могут некорректно сталкиваться с мешем ткани. Чтобы решить эту проблему, мы размещаем фиктивные вершины в каждом треугольнике меша. Эти вершины не симулируются, а используются только на этапе коллизии. Эта опция сильно влияет на производительность, поэтому её следует включать как можно реже.
Файлы контента ткани (Cloth Content Files)
Наша система симуляции генерирует два файла с расширениями *.tcc и *.tcm. Файлы Tcc содержат предварительно обработанные данные, используемые симуляцией ткани, такие как индексы ограничений, длины ограничений и т. д. Файлы Tcm содержат данные маппинга отрисовываемого меша на симуляционный меш. Вы обязательно должны закоммитить оба этих файла в Plastic SCM, чтобы никому не приходилось ждать завершения процесса компиляции (cooking) при загрузке сцены.




