This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Professional (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Materials and Shaders
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Cloth Body

Cloth body позволяет физически моделировать текстиль, одежду и листву, а также листы из любого мягкого материала. Ткань может быть разорвана на куски, а также ее можно приколоть к телам следующих типов:

Чтобы прикрепить ткань к телу так, чтобы она свисала как плащ или занавеска, используйте Соединение частиц .

Cloth body значительно улучшает внешний вид одетых персонажей (в остальном полностью анимированных) и экономит время игровых художников. Однако моделирование этого типа тела довольно затратно, и настоятельно рекомендуется использовать оптимизация расстояния чтобы избежать снижения производительности.

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

Смотрите также#

Требования к сетке#

В большинстве случаев важно, чтобы триангуляция полигона сетки, для которой генерируется Cloth body, была такой, как показано! В противном случае это может не протяжение правильно и равномерно по всем направлениям.

Required mesh triangulation

Например, в 3ds Max топологию сетки необходимо отредактировать вручную: выберите свиток Modify > Selection > Edit Edges и щелкните Turn, чтобы превратить треугольники в поли.

Имитационная модель масс-пружины#

Cloth body моделируется как набор точечных масс (частиц), расположенных в вершинах сетки. Каждая частица имеет форму шара и связана с другими частицами внутренними пружинными соединениями, расположенными по краям сетки. Внутренние стыки позволяют воссоздать топологию сетки, с одной стороны, и ограничивают растяжение и складывание, с другой.

Каждая частица характеризуется положением, массой и скоростью и имеет постоянную сферическую форму с набором радиус . Общая масса всего тела равномерно распределяется между ними. В соответствии со вторым законом Ньютона на частицы могут действовать сила или импульс приложенный внутренними суставами и внешними силами ( столкновение , сила тяжести , сопротивление воздуха, ветер и т. д.).

Самоудаление частиц и столкновения между различными тканевыми телами не рассчитываются. Однако ткань взаимодействует с окружающей средой, сталкиваясь с другими физическими телами, если установлен флажок Collision. Его поведение при контакте контролируется такими параметрами, как трение а также реституция . Селективное физическое взаимодействие доступно через соответствующие битовые маски .

Таким образом, Cloth body можно рассматривать как ограниченную систему твердых частиц и, следовательно, разделяет некоторые параметры с твердыми телами:

Радиус частицы#

Как уже было сказано, каждая частица представляет собой сферу с заданным радиусом . Это дает следующее:

  • Частицы ткани используют непрерывное обнаружение столкновений, поэтому более высокие значения предпочтительнее для более надежного поведения. Столкновения между частицами не рассчитываются и не должны учитываться при установке радиуса. Однако будьте осторожны, поскольку частицы слишком большого диаметра могут привести к некорректному взаимодействию с окружающей средой (подергиванию или вздутию ткани). Слишком малый радиус приводит к плохой обработке столкновений.
  • Поскольку частицы ткани приближены к сферам, ткань никогда не ложится на землю ровно или плотно прилегает к поверхностям. Всегда есть зазор, размер которого соответствует заданному радиусу.
Примечание
Предмет может пройти сквозь ткань, если радиус частицы мал, а ткань растянутый . Причина в том, что непрерывное обнаружение столкновений выполняется только для сфер частиц, расположенных в вершинах сетки ткани.

Итерации решателя суставов#

Количество итераций контролирует точность решения внутренних стыков ткани. Это число указывает, сколько раз соединения решаются за физическая рамка . Соединения решаются в случайном порядке, чтобы обеспечить более предсказуемые результаты растяжения.

  • Меньшее количество итераций приводит к более быстрому моделированию. Однако в этом случае ткань более склонна к растяжению и выглядит более эластичной. Минимальное значение - 1.
  • Большое количество итераций обеспечивает более точное решение ограничений. В этом случае ткань выглядит более жесткой. Максимальное значение - 16.

    Примечание
    Увеличение количества итераций обходится значительно дороже и в какой-то момент перестает приносить заметную пользу, поэтому его следует удерживать в разумных пределах рентабельности.

Увеличение количества повторений может помочь избежать подергивания ткани.

Растяжка и складывание#

Ткань может деформироваться при растяжении и складывании . Эти деформации контролируются связями двух типов:

С помощью этих типов ограничений можно получить желаемый внешний вид ткани и имитировать множество различных деформируемых материалов, от жесткого картона до мягкой лайкры.

Линейная реституция#

Линейное восстановление определяет, насколько частицы ткани могут быть растянуты друг от друга. Он заставляет тканевые стыки восстановить расстояние, которое было между вершинами исходной сетки:

  • При максимальном значении 1 частицы отскакивают с большой силой, и ткань трудно растянуть. Создает эффект жесткой неэластичной ткани, например льняной или твидовой.
  • Чем ниже значение, тем легче частицы удаляются друг от друга и тем более растяжимой и эластичной будет ткань, например нейлон или спандекс.

    Примечание
    0 и близкие к нулю значения не допускаются, потому что они вызывают нестабильную симуляцию и взрыв ткани.

Угловая реституция#

Угловое восстановление определяет возможный угол между треугольниками ткани, образованными частицами. Он ограничивает складывание ткани, усиливая стыки, чтобы сохранить угол, который был между треугольниками исходной сетки:

  • При максимальном значении 1 углы сохраняются, и ткань сопротивляется складыванию. Ткань кажется жесткой и без складок (например, бумага).

    Примечание
    Максимальное значение может привести к неустойчивому поведению.
  • При минимальном значении 0 ткань можно легко складывать и гнуть в любом направлении, независимо от исходной топологии сетки.
Примечание

Если ткань слишком эластичная и эластичная, попробуйте одно из следующих действий:

  • Установите для линейного восстановления значение 1.
  • Увеличить количество стыков решателя итерации .
  • Используйте сетку с меньшим количеством вершин.

Жесткость движения#

Параметр жесткости - это дополнительное ограничение движения ткани, которое делает ее более жесткой и негибкой. Для этого линейная и угловая скорости каждой частицы ткани корректируются в соответствии с полными скоростями, интерполированными для всех частиц.

  • Минимальное значение 0 делает ткань эластичной, гибкой и легко деформируемой.
  • Максимальное значение 1 делает ткань более жесткой и менее склонной к деформации.

Разрывая#

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

Cloth tearing

Разрыв ткани
Примечание
Если оторванные куски ткани падают на одну плоскость, они вызывают Z-бой.

Линейное пороговое расстояние#

Линейный порог устанавливает предел расстояния для растяжение ткань. Когда две частицы удаляются друг от друга дальше этого предела, соединяющие их соединения ломаются, и появляется разрыв.

  • Если установлено значение бесконечности (inf), ткань растягивается без разрывов. Это значение установлено по умолчанию.

Угловой пороговый угол#

Так же, как и линейный порог, угловой порог представляет собой максимальный угол к складывать ткань относительно исходного состояния. Если треугольники ткани сгибаются дальше, стык разрывается, и треугольники разделяются по соседнему краю.

  • Если установлено на бесконечность (inf), ткань складывается без разрывов. Это значение установлено по умолчанию.

    Примечание
    Рекомендуется поддерживать угловой порог ниже или равным 180 градусов.

Оптимизация моделирования#

Обновление каждого кадра огромного количества объектов, расположенных далеко от камеры, которые трудно различить или наблюдать как массу, является пустой тратой ресурсов.

Чтобы улучшить производительность и избежать чрезмерной нагрузки, можно моделировать ткань. обновлено с уменьшенной частотой кадров . Когда игрок находится за пределами области, указанной параметром Update Distance Limit, ткань перестает обновляться и статически замерзает.

Приведенный ниже набор частот кадров позволяет указать, как часто моделирование ткани должно обновляться, когда объект виден, когда видна только его тень или когда он не виден вообще.

Вкладка Parameters -> Physics → раздел Periodic Update
FPS When Object Is Rendered To Viewport Значение частоты обновления для случая, когда объект отображается в области просмотра.
FPS When Only Object Shadows Are Rendered Значение частоты обновления, когда сам объект находится за пределами области просмотра, и только его тень отображается в области просмотра.
FPS When Object Is Not Rendered At All Значение частоты обновления, когда объект и его тень не отображаются в области просмотра.
Update Distance Limit Расстояние от камеры, до которого необходимо обновить объект.
Примечание
Эти значения не являются фиксированными и могут быть изменены двигателем в любое время для обеспечения наилучшей производительности.

Эта функция включена с настройками по умолчанию, обеспечивающими оптимальную производительность, и может быть настроена для каждого объекта в UnigineEditor или через API во время выполнения.

Внимание
Помните, что использование пониженной частоты кадров обновления для объекта должно быть тщательно продумано в логике вашего приложения, так как это может привести к различным проблемам с рендерингом скелетных и динамических сеток (мерцание из-за несовпадения, например, в случае прикрепления ткани к скелету сетка).

Назначение тканевого тела#

Чтобы присвоить объекту Cloth body через UnigineEditor выполните следующие действия:

  1. Откройте окно World Hierarchy.
  2. Выберите объект Dynamic Mesh, которому нужно присвоить Cloth body.

    Примечание
    Убедитесь, что сетка объекта соответствует требования !
  3. Перейдите на вкладку Physics в окне Parameters и назначьте физический тело к выбранному объекту, выбрав Body -> Cloth.

    Adding a body

  4. Задайте название тела и при необходимости измените другие параметры.

Прикрепление ткани#

I'm Batman!

Ткань, прикрепленная к анимационному персонажу

Полотно можно прикрепить к телам следующих типов:

Чтобы прикрепить ткань к телу, используйте Particles Joint. В случае тел Rigid (статических или динамических) и тел Dummy закрепленные частицы остаются фиксированными в своем положении и следуют преобразованиям прикрепленных объектов, вытягивая за собой ткань.

  1. Выберите Rigid body, Ragdoll body или Dummy body.
  2. Добавьте Particles Joint.
  3. Укажите Cloth body.
  4. Отрегулируйте область закрепления, используя параметры Threshold и Size соединения частиц.
Примечание
Чтобы обеспечить стабильную симуляцию, установите соответствующие массы ткани и прикрепленного тела. Несбалансированные массы могут вызвать подергивание суставов ткани.

Присоединение к сетке со скелетом#

Убедительная симуляция одежды персонажа без кожи требует другого подхода. Чтобы отслеживать преобразования костей, каждая вершина ткани, которая находится в области Particles Joint, отображается на ближайшую вершину скелетного меша (до расстояния, указанного параметром Threshold соединения частиц).

Примечание
Не рекомендуется прикреплять ткань непосредственно к персонажу с кожей, потому что различие в топологии может привести к визуальным артефактам. Вместо этого лучше создать идентичную тканевую поверхность на сетчатом персонаже с кожей, сделать его невидимым и прикрепить к нему физическую ткань.

Например, нам нужно создать плащ, который приклеивается к плечам персонажа с кожей, а остальные складываются свободно. Это делается в следующие шаги:

  1. При создании Mesh Skinned добавьте поверхность плаща, идентичную плащу, который будет носить персонаж. Это может быть как целая накидка, так и только ее обрезанная часть, которую нужно приколоть. Последнее предпочтительнее при моделировании сложной одежды, что требует более гибкого контроля над тем, какие части моделировать физически, а какие перемещать с персонажем без кожи. В нашем случае это тканевая часть на плечах.
  2. Добавьте сетку со скелетом, которой назначен Ragdoll body. Убедитесь, что накидка активирована .
  3. Добавьте отдельную динамическую сетку ткани и синхронизируйте ее положение с персонажем со скелетом. Отключите физическое моделирование (CTRL + SPACE) и назначать а Cloth body.
  4. Прикреплять От Cloth body до Ragdoll body. Если расстояние Threshold соединения частиц установлено достаточно низким, физический плащ будет автоматически прикреплен только к поверхности плаща (то есть плечам). После этого накидка просто отключается и не несет никакой нагрузки.
Последнее обновление: 14.12.2022
Build: ()