
На данный момент у нас есть настроенные солверы всех мышц руки, однако корректно работают из них только мышцы плеча, так как у них простроены подключения между сенсорами и активациями мышц. Сейчас будут создаваться локаторы-сенсоры для оставшихся мышц предплечья, после чего наконец можно перейти к следующим «слоям» сетапа.
До этого мы уже делали локатор-сенсор супинации запястья для настройки работы бицепса плеча. Теперь же создадим локатор и сенсор пронации запястья (L_wrist_pronation_adnLocatorDistance), настраиваем в атрибутах сенсора минимальное и максимальное расстояние и активации.
Далее создадим теперь локатор и сенсор сгибания запястья (L_wrist_flex_adnLocatorDistance) по такому же принципу.
И аналогично создаём локатор-сенсор разгибания запястья (L_wrist_extend_adnLocatorDistance).
Теперь последовательно подключим каждый из сенсоров к соответствующим мышцам предплечья. Мы так же, как и раньше, коннектим атрибут activationDistance локатора с атрибутом activation мышцы через Adonis Connection Editor.
Соединяем эти атрибуты следующим образом:
— К локатору разгибания запястья:
— К локатору сгибания запястья:
— К локатору пронации запястья:
Стоит отметить, что плечелучевая мышца и длинный разгибатель запястья сокращаются ещё и при сгибании локтя. В нашем же сетапе они активируются только при сгибании запястья. Чтобы это настроить, выберем сначала плечелучевую мышцу и откроем её в Node Editor.
Развернём входящие и исходящие взаимосвязи солвера мышцы. Добавим шейп локатора сгибания локтя в нодовое пространство. Создадим ноду AdnActivation, в input’ы которого в значения Value подключим Activation Distance из шейпов сгибания запястья и сгибания локтя соответственно. Внутри ноды на input 1 ставим операцию Add.
Подключаем выход из ноды adnActivation в атрибут Activation солвера плечелучевой мышцы.
Проделываем аналогичные действия с длинным разгибателем запястья.
Итак, у нас теперь предусмотрена работа мышц запястья на сгибание, разгибание, пронацию и супинацию. Однако кроме этого запястье может выполнять приведение и отведение, и для этих движений также создадим локаторы-сенсоры и перенастроим с ними некоторые существующие активации.
Создаём локатор приведения запястья (L_wrist_adduction_adnLocatorDistance) и сенсор по уже известной последовательности. Создаём локатор отведения запястья (L_wrist_abduction_adnLocatorDistance).
Открываем в Node Editor солвер локтевого разгибателя запястья, который работает во время отведения кисти руки, раскрываем входящие и исходящие взаимосвязи. Добавляем шейп локатора отведения. Создаём ноду AdnActivation и подключаем в неё атрибуты Activation Distance из сенсора разгибания запястья и сенсора отведения, после чего на втором входящем ставим операцию Add. Подключаем выход ноды AdnActivation в атрибут Activation солвера мышцы.
Проделываем аналогичные действия в Node Editor с солвером длинного разгибателя запястья, который задействуется во время приведения кисти руки, добавив теперь уже шейп локатора приведения. Сенсор приведения также стоит этим же способом привязать к активации короткого разгибателя запястья.
На этом моменте мышечная система уже построена. Можно возвращаться к Paint Tool, чтобы по необходимости исправлять артефакты, смягчать переходы весов, можно создавать более детальные микровлияния между мышцами, а можно вносить изменения в солверах каждой из мышц, к примеру изменяя плотность каких-либо из мышц, настраивая гравитацию, вес, жёсткость и т. д.
Следующий этап, идущий после мышц — это настройка фасции.
Сперва создаём внутреннюю фасцию с помощью так называемого «склеенного» слоя (adnGlue). Чтобы его сделать, выбираем все мышцы и в Adonis FX —> Solvers применяем команду Glue. Генерируется новая геометрия, которая полностью повторяет топологию мышц и которая отрабатывает на себе все мышечные деформации.
Зададим настройки склеенному слою в атрибут эдиторе: в Mass Properties в Global Mass Multiplier пишем 0,1, в Dynamic Properties ставим отметку на Triangulate mesh, а в Max Glue Distance вносим значение 2.
Если во вкладке Debug включить отображение Glue Constraints, то можно заметить образовавшиеся взаимосвязи между частями склеенного слоя, которые повторяют динамику мышц в рамках одной цельной геометрии и которые в прямом смысле «склеивают» эти части друг с другом.
Теперь создадим внешнюю фасцию, геометрия которой была заранее подготовлена.
Чтобы создать её, выбираем сначала геометрию скелета, выбираем склеенный слой, выбираем геометрию фасции и применяем Skin Apply из шелфа с инструментами плагина. В атрибутах поменяем название на fascia_AdnSkin, увеличим количество итераций до 5, назначим в Gravity значение 9,8. В Mass Properties в Point Mass Mode выбираем By Density, Global Mass Multiplier ставим 0,1. В Dynamic Properties отмечаем Triangulate Mesh, Sliding Constraints Mode — Quality, Max Sliding Distance — 1. В Stiffness Settings отмечаем Use Custom Stiffness и вписываем значение около 12 000. Изначальное значение в 100 000 даст в результате слишком жёсткую структуру, не соответствующую относительно мягкому слою фасции.
Однако нынешний результат всё ещё слишком жёсткий, сейчас фасция слишком плотно прилегает к склеенному слою. Для более детальной настройки поведения откроем Paint Tool и проведём в некоторых их атрибутов следующие манипуляции:
— Shape Preservation: на всей геометрии ставим значение веса 1 через Flood — Sliding Constraints: значение 0,3 через Flood — Soft Constraints: значение 0,3 через Flood — Hard Constraints: значение 0,3 через Flood, после чего распределяем значение веса 1 по краям геометрии
После этого последний пункт, который можно выполнить — это применить Delta Mush через Deform —> Delta Mush. Сделаем значение Smoothing Iteration на 10 и можно ещё на своё усмотрение настроить Smoothing Step и Displacement.
Далее на очереди идёт слой жира, покрывающий фасцию и геометрия которого так же была подготовлена заранее.
Для того, чтобы создать этот слой, мы выбираем слой фасции, геометрию жира и применяем Fat Apply. В атрибутах ставим значение Gravity на 9,8, в Mass Properties на Global Mass Multiplier ставим 0,1. Кроме того, если персонаж задумывался тучным, с большим объёмом жира, то можно в Volume Structure увеличить количество Divisions, но конкретно в моём случае этого не требуется.
Если в Debug включить отображение Volume Structure, то можно увидеть тетраэдры, которые создаёт солвер Fat в пространстве между собственной геометрией и фасцией и на основе которых образуется так называемая толщина слоя жира.
Так же, как и в случае со слоем фасции, можно наложить Delta Mush на слой жира и настроить его работу.
Последний слой — это кожа, оборачивающая все обозначенные ранее слои. Для этого слоя геометрия также была подготовлена заранее.
Чтобы её создать, выбираем слой жира, выбираем геометрию кожи и применяем вновь Skin Apply. Создаётся солвер кожи.
В атрибутах изменим те же настройки, которые меняли в слое фасции, и поставим те же значения. Из отличий — в Max Sliding Distance поставим значение 3, так как кожа является довольно подвижной структурой.
И так же, как и с фасцией, распределим веса влияния через Paint Tool в следующих атрибутах:
— Shape Preservation: на всей геометрии ставим значение веса 1 через Flood — Sliding Constraints: значение 1 через Flood — Soft Constraints: значение 0,666 через Flood — Hard Constraints: значение 0,333 через Flood, после чего распределяем значение веса 1 по краям геометрии
И по аналогии с предыдущими слоями можно применить на слой кожи Delta Mush.
На этом этапе работу над созданием мышечной системы можно считать законченной. В любой момент можно возвращаться например к мышцам и донастраивать параметры солверов мышц или более тонко распределять веса влияний на любых атрибутах. Или же можно вернуться к солверу жира или фасции (по сути тоже кожи), чтобы избавляться от артефактов. Одним словом, можно в комплексе одновременно работать над всеми слоями системы.