Значительную, если не самую главную, роль в сфере разработки динамических мышечных систем играют плагины, интегрирующиеся в пайплайн какого-либо софта. В рамках Maya и Houdini поддерживаются Ziva VFX и Adonis FX.
Ziva VFX
Ziva VFX представляет собой профессиональный плагин для создания анатомически точных симуляций мягких тканей, который революционизировал подход к созданию реалистичных персонажей в индустрии визуальных эффектов. Его фреймворк симуляции основан на методе конечных элементов (Finite Element Method). Изначально разработанный компанией Ziva Dynamics, плагин прошел сложный путь переходов: после приобретения технологий компанией Unity в 2022 году, в 2024 году произошла эксклюзивная продажа активов Ziva VFX студии DNEG. Этот стратегический переход сделал DNEG единственным владельцем лицензий на плагин, существенно ограничив доступность инструмента и документаций к нему для широкого рынка и превратив в эксклюзивный инструмент для внутреннего производства.

Venom VFX breakdown. DNEG


Venom: The Last Dance VFX breakdown. DNEG
Детализированный рабочий процесс
Фаза 1: Подготовка скелетной системы и анимации Процесс начинается с тщательного моделирования геометрии скелета персонажа, где стандартная T-поза адаптируется под специфические требования проекта. После завершения моделирования применяются анимационные данные, которые экспортируются в формат Alembic для последующей интеграции в пайплайн Ziva VFX. Импортированные обратно в Maya кости преобразуются в специализированные Ziva Bones - кинематические объекты, которые служат основными драйверами для решателя Ziva и определяют базовое движение персонажа.
Фаза 2: Построение мышечной системы Мышечные структуры обозначаются как Ziva Tissues - объекты ткани, динамика которых симулируется солвером на основе движения скелета. Для ускорения процесса может использоваться Ziva Anatomy Transfer - автоматизированная система подгонки готовых анатомических setup под новую геометрию кожи. Критически важным этапом является создание системы креплений:
— Фиксированные соединения (Ziva fixed attachments) - обеспечивают жесткое крепление мышц к костям с настраиваемой жесткостью — Скользящие соединения (sliding attachments) - имитируют естественное скольжение тканей по поверхностям костей и других анатомических структур
Фаза 3: Реализация мышечного сокращения Для достижения анатомически корректного сокращения используется автоматизированная система Muscle Fiber в сочетании с инструментом Line of Action. Этот подход позволяет:
— Создать ориентированные поля мышечных волокон — Автоматически рассчитывать моменты и интенсивность сокращения — Достигать естественного сокращения мышц без ручной работы аниматора. Инструмент Line of Action анализирует расстояние между точками на анимированной кривой, определяя фазы сокращения и расслабления мышечных тканей.
Фаза 4: Создание жирового слоя и кожи Жировой слой формируется как объем между внутренней фасцией (2D-поверхность, окружающей мышцы и кости) и внешней кожей. Технологический процесс включает:
— Создание фасции через "усадку" Ziva Cloth с использованием атрибутов rest scale и pressure — Формирование "перчатки" кожи/жира путем соединения открытых концов с соответствующими точками фасции — Создание герметичного объемного объекта с последующей генерацией тетраэдральной сетки (Ziva tet mesh)


Introduction to Ziva VFX. The Gnomon Workshop
Фаза 5: Многоуровневая симуляция и интеграция Финальный этап предполагает каскадную симуляцию всех систем:
— Мышцы симулируются на основе Alembic-кеша анимированных костей — Полученные мышечные деформации используются как входные данные для симуляции жирового слоя — Слои жира преобразуются в единый объект ткани для финальной симуляции поверх закешированных мышц и костей
Такой многоуровневый подход обеспечивает точное воспроизведение биомеханических взаимосвязей между костями, мышцами и жиром, создавая беспрецедентный уровень реализма в динамике персонажей. Результатом становится полностью симулированный персонаж с фотореалистичной вторичной анимацией, сохраняющий анатомическую достоверность даже при самых сложных движениях.
Результат считается эталоном анатомической точности и максимально близок к гиперреализму.
AdonisFX
AdonisFX — это относительно новый плагин, который только набирает свою популярность в сфере CFX и который тоже поддерживается и в Maya, и в Houdini. Он очень похож на Ziva, так как они оба заточены на решение одной и тоже задачи. Однако AdonisFX использует иной фреймворк симуляции, чем Ziva, за счёт чего он может работать гораздо быстрее Ziva. Кроме того, AdonisFX имеет такие солверы, как AdnSimshape, которых нет в Ziva, и которые предоставляют уникальный способ создания лиц с реалистичной динамикой. AdonisFX также имеет целый набор локаторов, которые можно использовать для отслеживания и отладки активации мышц. Ziva может просчитывать коллизии и имеет инструменты для тетраэдризации моделируемых объемов, в то время как в AdonisFX ни того, ни другого пока нет.
ADN vs Ziva. Samah Ibrahim
AdonisFX Muscles. Francisco Tejo
Однако то, что Ziva находится в исключительной собственности DNEG, делает Adonis гораздо более предпочтительным вариантом для внедрения в свой пайплайн в контексте создания динамической мышечной системы.
Далее будет детально описан процесс работы в связке Maya + AdonisFX в формате туториала.
Мышечная система AdonisFX — туториал
Подготовка:
В рамках туториала сконцентрируемся на мускульной и суставной структуре руки, а именно на части грудной клетки, ключице, лопатке, плече, предплечье, запястье и пальцах. Базой будет являться цельная геометрия скелета руки от лопаток до пальцев, а также заранее смоделированные отдельные мэши мышц. Геометрия скелета может состоять и из составных частей, однако позже это может привести к сложностям из-за возникающих коллизий мэшей.
Для геометрии скелета необходимо создать риг, который будет задействовать все кости и все возможные движения, которые кости могут совершать: сгибание и разгибание, пронация и супинация суставов. Это говорит о том, что кроме основных джойнтов рига стоит сделать ещё дополнительные джойнты, повторяющие локтевую и лучевую кости в предплечье. Кроме того, стоит сделать дополнительные джойнты у плечевого и локтевого суставов, к которым в дальнейшем будут констрейниться локаторы, определяющие степень активации мышц. Привязываем геометрию скелета к ригу с помощью skinCluster и заранее делаем анимацию движения руки, чтобы в дальнейшем на ней проверять работу мышц.


Геометрия скелета и риг с дополнительными джойнтами у суставов
Касательно геометрии мышц — детальность проработки всех мышц и их общее количество будет влиять на производительность всей симуляции. Имеют место быть некоторые обобщения и упрощение: к примеру часто могут не прорабатываться внутренние мышцы, иногда прорабатываются не все мышцы в угоду большей производительности, иногда могут сливаться в единые формы множество маленьких мышц. Однако важно соблюдать баланс между технической эффективностью и желаемым реализмом.
В моём случае представлен следующий список мышц: дельтовидная мышца (deltoid), двуглавая мышца плеча (biceps brachii), трёхглавая мышца плеча (triceps), плечевая мышца (brachialis), плечелучевая мышца (brachioradialis), длинный разгибатель запястья (extensor carpi longus), короткий разгибатель запястья (extensor carpi brevis), локтевой разгибатель запястья (extensor carpi ulnaris), длинная ладонная мышца (palmarus longus), круглый пронатор (pronator teres), поверхностный разгибатель пальцев (extensor digitorum) и слитые в единую геометрию все остальные сгибатели пальцев (forearm).


Геометрии мышц руки
Далее следуют заранее подготовленные три геометрии, обозначающие слой фасции, слой жира и слой кожи. Фасция практически полностью совпадает с мышцами. В это же время слой жира должен накладываться сверху слоя фасции, и то, на каком расстоянии находятся эти два слоя, будет определять толщину жирового слоя в симуляции. Наконец, на слое кожи будет отрабатывать вся симуляция.
Стоит отметить, что в моём случае геометрии частично охватывают предполагаемую область грудной мышцы, которая не будет прорабатываться в рамках туториала. Поэтому к моменту, когда будут настраиваться симуляции фасции, жира и кожи, эта "свободная часть" будет давать артефакты.
Геометрии каждого из слоёв симуляции
Пойдём последовательно по всем мышцам, начнём с плечевой мышцы (brachialis).
Для начала создаём локатор через AdonisFX —> Create —> Locator —> Distance между двумя передними джойнтами у плеча и локтя, которые предварительно создавались для размещения локаторов Adonis. Называем этот локатор L_arm_flex_adnLocatorDistance (добавляем префикс в самом начале). Далее выбираем этот локатор, и создаём на нём сенсор также через AdonisFX —> Create —> Sensor —> Distance. В настройках атрибутов также меняем название, и после этого там же в окне Remap Distance в Output проверяем текущее значение дистанции. В Input Min Distance будет автоматически вписано максимальное значение этой дистанции, а в Input Max Distance нужно будет вручную вписать минимальное значение, которое можно проверить в Output’е, прокручивая анимацию в поисках минимального значения расстояния. Теперь можно увидеть, как меняется цвет этого локатора в зависимости от значения, которое он принимает, и соответственно в зависимости от положения плеча и локтя относительно друг друга.


Для создания солвера мышцы (Muscle Solver) в AdonisFX на плечевую мышцу (brachialis) необходимо использовать пункт Create —> Solvers —> Muscle. В атрибут эдиторе солверу присваиваем префикс L_brachialis, после чего настраиваем его параметры.
Можно поменять Scale Attributes в случае, если единицы измерения в Maya не соответствуют реальным размерам геометрии. В поле Gravity устанавливаем значение 9,8, соответствующее ускорению свободного падения. В секции Advanced Settings — Mass Properties выбираем в Point Mass Mode режим By Density, который позволяет задать плотность мышечных волокон в поле Density. Параметр Global Mass Multiplier регулирует вес мышцы с учетом гравитации, в нём ставим значение 0,1. В Dynamic Properties обязательно проверьте галочку на опции triangulate mesh — это нужно для увеличения количества констрейнов, т.к. каждый эдж будет посчитан как взаимосвязь, что в свою очередь повышает качество симуляции. Также проверьте, что опция hard attachments отключена, поскольку ее активация делает крепления слишком жесткими, мешая корректному распределению весов. Использование hard attachments оправдано лишь в исключительных случаях, когда требуется сильная фиксация точки к целевой геометрии.


Создание солвера мышц и базовая настройка солвера




