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

футболка в разрезе, с толщиной и без
2. избегать self-collision (в а-позе или т-позе одежда не должна проникать друг в друга), иначе симуляция начнется сразу с ошибки

нет селф-коллизий
3. анимация загружена в fbx или abc
4. все паттерны соединены между собой (например, рукав не отваливается от остальной футболки) — если не соединены, то воспользоваться нодой fuse
разделение одежды на части
верх и низ желательно просчитывать отдельно, а потом собирать кэши
разделение на части
некоторые части (как накладки, карманы, ботинки, перчатки) можно не симулировать вообще, а деформировать сразу через point deform
деформация через point deform
импорт анимации и создание преролла
общий принцип: 1. настройка констрейнтов 2. симуляция в vellum solver 3. кэш в vellum i/o 4. доработка в vellum post process 5. перенос с лоу-поли на оригинальную геометрию при помощи point deform 6. сборка всех элементов одежды
fbxcharacterimport (импорт анимации и персонажа) + bonedeform
преролл
при необходимости можно использовать rig pose для анимированной позы, чтобы исправить положение рук/ног в случае, если они пересекаются с одеждой
преролл — создание короткой анимации между т-позой и анимированной позой персонажа. необходима для корректной симуляции, так как одежда шьется на т-позе
преролл осуществляется при помощи ноды skeletonblend между т-позой и анимированной позой (около 15 кадров). первый ключ параметра weight ставится на т-позу, а второй на анимированную
в ноде skeletonblend нужно указать, что мы забираем данные только по ротейту костей (либо по rotate и translate)
по определению данные с одного скелета на другой переносятся через аттрибут name, поэтому необходимо иметь одинаковые наименования на всех костях
pin group animation
если необходимо, чтобы часть геометрии оставалась статичной и не сползала (как, например, резинка на штанах), то эта часть выделяется отдельной группой (pin)
однако если просто запиннить ее, то выйдет, что точки остаются на месте, поэтому анимация на этот участок передается отдельно через point deform где на 1 вход одежда, 2 — timeshift первого кадра анимации, 3 — анимированный коллайдер, после чего это передается в солвере в advanced — target sop path
также необходимо создать vellum pin constraint, в котором будет указана эта группа и проставлена галочка match animation
настройка параметров солвера и констрейнов
общий принцип разделения:
для каждой части констрейны настраиваются отдельно, попарно совмещаются и подаются в солвер
верх — отдельно, низ — отдельно, шнурки/ремни — отдельно
vellum constraints — это условие, которое определяет, как элементы симуляции взаимодействуют друг с другом и сохраняют физические свойства, например, жёсткость, растяжение, изгиб и давление
визуализация pin to target constraint
констрейнты выделяются в виде сфер или линий на тех участках, где они действуют
substeps — это дополнительные промежуточные вычислительные шаги, которые делят основной временной шаг симуляции на более мелкие части. помогают повысить точность и стабильность расчёта динамики ткани
constraint iterations — количество проходов, которые выполняются для решения физических ограничений (constraints) на каждом сабстепе симуляции. чем больше значение, тем точнее и стабильнее будет симуляция, особенно при работе с жёсткими ограничениями
substeps / constraint iterations
увеличение сабстепов и констрейнтов влияет на создание более упругой и устойчивой одежды, однако увеличивает время просчета симуляции
увеличение сабстепов более задерживает симуляцию, чем увеличение констрейнтов, но дает более точный результат
bend — это жесткость изгиба, параметр контролирует сопротивление ткани или объекта сгибанию и образованию складок
bend stiffness
чем выше значение, тем материал будет более жестким, сохраняющим форму. При низком bend stiffness ткань будет легко гнуться и образовывать складки
stretch — управляет силой, с которой ткань стремится вернуть свою первоначальную длину или форму после растяжения
stretch stiffness
высокое значение — препятствует растяжению ткани, создавая более жесткий эффект
низкое значение — увеличивает эластичность, позволяя ткани растягиваться сильнее под воздействием сил или движений (ниже 0.01 симуляция может начать зависать или не проигрываться вообще)
rest length scale — влияет на то, насколько сильно материал будет растягиваться или сжиматься по сравнению с исходным состоянием
Rest Length Scale
если scale меньше 1, ткань стремится уменьшиться по размерам; если больше 1 — ткань «расширяется» и растягивается
на что еще можно обратить внимание при настройке:
damping ratio — влияет на то, насколько быстро и эффективно симуляция будет стабилизировать ткань после симуляции
compression stiffness — определяет, насколько материал будет сопротивляться сжатию. если compression stiffness высокий, ткань будет сильно сопротивляться сжатию, не позволяя ей сильно «схлопываться» или «наматываться». при низком значении ткань сжимается свободнее, образуя более глубокие складки или сжатые участки
vellum i/o — нода для кэширования симуляции
кэш
для кэширования веллума существует отдельная нода, которая записывает не только геометрию, но и констрейнты
vellum post process — это завершающий этап, позволяющий сгладить и исправить симуляцию
vellum postprocess thickness (до/после)
на этапе пост обработки можно добавить нужную толщину, а также сгладить геометрию
vellum postprocess thickness + subdivision (до/после)
однако при сглаживании часто теряется исходная форма и теряется из виду объект коллизии
если необходимо видеть каждую грань, в vellum post process следует настроить параметр detangle
vellum postprocess detangle (до/после)
последним шагом является перенос симуляции с лоу-поли на хай-поли геометрию
перенос симуляции на оригинальную геометрию