Знакомство с Control Rig. Как быстро создавать и редактировать анимации в Unreal Engine

10.08.2021 11:42
Алексей Евглевский
В рамках третьего всенародного конкурса разработчиков игр на Unreal Engine мы будем публиковать статьи связанные с процессом разработки игр и Unreal Engine в частности. Сегодня мы расскажем об интересной фиче движка под названием Control Rig. С приходом пятой версии она стала полноценной частью нового поколения, но также доступна и в четверке в виде одноименного плагина. Поэтому все, о чем мы будем сегодня говорить, доступно как в четвертой, так и в пятой версиях. Технические дизайнеры Epic Games придумали много интересных способов применения Control Rig. Мы вкратце разберем основные и покажем, как они могут помочь вашему проекту. 

Rig4.gif


Control Rig - инструмент для создания анимаций


Сперва поясним, что из себя представляет Control Rig. Это набор настраиваемых контроллеров, которые позволяют управлять мешем с существующим скелетом. Они формируются отдельно от скелета и привязываются к отдельным костям в соответствии с теми целями и задачами, что вам нужны. Чаще всего Control Rig используют для создания анимаций. Самый наглядный пример такой анимации - проект Control Rig Mannequin. В нем аниматоры из Epic Games создали анимацию для манекена исключительно при помощи Control Rig. 


Rig.gif


В таком случае вся работа по настраиванию ключей идет в секвенсоре Unreal Engine. Там же можно вывести кривые, если вам необходимо детальнее настроить отдельные движения персонажа. К примеру, пробуждение Древнего из демонстрационной демки Unreal Engine 5 тоже сделано в секвенсоре, без использования сторонних программ.



Чтобы создать Control Rig достаточно щелкнуть по мешу правой кнопкой мыши и выбрать нужный пункт в выпадающем меню. Контроллеры создаются на костях быстрым сочетанием Ctrl+N или в том же меню правой кнопкой. 


1.jpg


Внешний вид контроллера можно поменять во вкладке Details. И не забудьте переименовать и отсоединить контроллер от кости быстрым сочетанием Shift+P. 


2.jpg


Для одного персонажа можно настроить несколько ригов, в зависимости от сложности вашей анимации. Control Rig Древнего очень комплексный - он позволяет управлять его пальцами, суставами и позвоночником отдельно от таза. 


3.jpg


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


4.jpg


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


Более того, сейчас в Unreal Engine есть возможность переносить анимацию, созданную при помощи рига, с одного скелета на другой нажатием одной кнопки. Для этого нужен блюпринт с компонентом Control Rig. 


5_1 copy.jpg


При помощи нод Add Mapped Skeletal Mesh в Construction Script и Set Bone Initial Transforms From Skeletal Mesh в Event Graph мы можем указать блюпринту перенести трансформы костей с одного скелета на другой через настроенный Control Rig. В результате, если мы изменим меш персонажа в сцене, то анимация, прописанная в секвенсоре, перенесется на нового персонажа. 


Как редактировать анимацию с помощью Control Rig


Rig3.gif


При помощи Control Rig вы можете не только создавать анимации с нуля, но и менять уже имеющиеся. Будь то мокап съемка или санимированные вручную существа. Все, что вам нужно - это настроить еще одну цепь нод в риг графе. 


6.jpg


У Control Rig есть четыре режима, которые отображаются на верхней панеле: Setup Event, Forwards Solve, Backwards Solve, Backwards and Forwards. Первый позволяет настраивать начальное положение костей. Во втором можно свободно манипулировать настроенными контроллерами. Третий, то есть Backwards Solve, нужен для отсмотра существующих анимаций. Последний - Backwards and Forwards - используют для одновременного проигрывания второго и третьего режимов. 


7.jpg


В правой верхней части есть вкладка Preview Scene Settings. В ней в строке Animation вы можете вставить любую анимацию, какая доступна для этого скелета. Чтобы эта анимация отрабатывала корректно, необходимо правильно настроить сам риг и затем прописать последовательность нод Backwards Solve. Сама последовательность предельно простая. Вы берете положение отдельных костей и перекидываете его на контроллеры нодами Get и Set. 


8.jpg


После того, как все настроено, вы увидите анимацию в окне вьюпорта. Убедитесь, устраивает ли вас результат и если нет, поменяйте риг еще раз. Отмечу, что превью в риге и результат в секвенсоре могут заметно отличаться друг от друга. Чтобы увидеть анимацию в секвенсоре закиньте туда меш и на него нужную анимацию. Перенести ее на риг можно в два клика: правой кнопкой на персонаже и затем в подменю Bake to Control Rig выбрать нужный риг. 


9.jpg


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


Control Rig скорректирует игровую анимацию


Мы показали, как Control Rig помогает в создании и редактуре анимаций, но куда полезнее он в исправлении анимаций внутри игры. То есть в тех случаях, когда нужно автоматически корректировать анимацию во время игрового процесса. Проще всего разобрать на примере, показанном в демонстрационном демо Unreal Engine 5. Мы расскажем только основной принцип работы инструмента. Если хотите узнать больше, посмотрите тематический стрим или сами деконструируйте AnimBP Древнего. 


10.jpg


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


11.jpg


В Control Rig технический дизайнер Epic Games сперва передвинул контроллер к трансформам лазера (поскольку лазер наводится на игрока), а уже затем настроил адаптацию рига под анимацию. Интересно, что он ограничил передвижение 25 процентами, чтобы движение не выглядело гипертрофированным. 


12.jpg


После этого он добавил Full Body Inverse Kinematic (FBIK) и Basic Inverse Kinematic (BasicIK). Вторая вариация нужна при уменьшении LOD, и это интересный способ экономии производительности, но мы больше сосредоточимся на FBIK, поскольку это то, что игрок видит в демке. 


13_2 copy.jpg


В AnimWithFBIK настраивается две вещи. Во-первых, передается информация с костей на контроллеры, чтобы они повторяли движения анимации. Во-вторых, устанавливаются параметры движения FBIK, продиктованные переносом трансформов согласно работе лазера. 


14.jpg


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


На этом разнообразие свойств Control Rig не заканчивается, но для более глубокого погружения в них не достаточно одной статьи. Подробнее с ними можно ознакомиться на канале Unreal Engine. 


В комментариях расскажите, планируете ли применять Control Rig в своей работе или, возможно, уже использовали его, и в каких ситуациях он вам пригодился. Экспериментировать с таким гибким инструментом интересно, но ещё интереснее узнавать, до чего додумались другие, поэтому не стесняйтесь делиться опытом.