![](https://habrastorage.org/webt/vn/92/wk/vn92wkv4lyjtfjyc1vvp2ydqi28.png)
Чтобы понять, как работает Cascadeur, нам необходимо обратиться к истории анимации и подходу к ее созданию. В этом материале Евгений Хапугин, ведущий аниматор студии Banzai.Games, постарается объяснить, как выход за рамки основополагающих принципов Уолта Диснея помогает создать реалистичную анимацию и как для этого применить физические инструменты Cascadeur.
Порой, когда мы смотрим фильмы или играем в игры, мы замечаем сцены, которые выглядят неестественно. Обычно мы не можем объяснить, что с ними не так. Например, мы можем не видеть тросов, прикрепленных к актеру, но чувствуем, что движется он не так, как должен был бы. И подозрения не обманывают нас. Наш мозг легко распознает нереалистичные движения. Иными словами, мы всегда замечаем, что анимация физически некорректна.
Современная анимация может быть очень сложна, ее создание занимает много времени и требует использования реальных референсов и захвата движений. И все же мы встречаем подобные сцены снова и снова. Почему же?
Что происходит за кадром
![](https://habrastorage.org/webt/me/lc/is/melciszqpvsrw45awsmcorm1-he.jpeg)
Как ни странно, одной из причин могут быть всем известные 12 принципов анимации Диснея. Они хорошо работают и хорошо объясняют, как создавать анимацию. Но вот о реализме они ничего не говорят. Эти принципы появились в 1930-х, и аниматоры опираются на них по сей день.
![](https://habrastorage.org/webt/zi/ff/h6/ziffh6xwym8w61odn9yorw91sks.jpeg)
В 2002 году Джереми Кантор, супервайзер Sony Animation, дополнил 12 диснеевских принципов 12-ю своими собственными. Они помогают улучшить качество анимации, вводят понятие сил, приложенных к персонажу. Силы могут быть внутренними, такими как вес или движение мускулов, а могут быть и внешними, как, например, гравитация или взаимодействие с воздухом, водой или другими персонажами.
Но эти силы аниматор должен применять вручную, так что они позволяют сделать анимацию более выразительной, но не более правдоподобной. Нет, по-настоящему реалистичная анимация должна учитывать настоящие физические силы, приложенные к персонажу, и откуда эти силы берутся. Здесь может помочь motion capture — он ведь делается в реальности, значит, и движения должны быть реальны.
Но, увы, возможности motion capture тоже не безграничны. Чтобы снять простую сцену с лошадью, понадобится арендовать большую площадку, платить за корм и уход за лошадью, уборку и т.п.
И все это при том, что сама лошадь по крайней мере реальна. Если нам нужен дракон или супергерой, мокап едва ли поможет.
Физически корректная анимация
С каждым годом появляется все больше и больше средств для реалистичного рендеринга, создания симуляций и шейдеров. И, как ни странно, только анимации эта тенденция не касается.
Когда Евгений Дябин, основатель Banzai.Games и Cascadeur, работал над первым прототипом Shadow Fight, он был очень удивлен, что центр масс — совершенно необходимый для создания реалистичной акробатики — отсутствует во всех известных анимационных программах. Оказывается, аниматоры и сейчас создают реалистичные движения вручную, полагаясь на видео референсы.
Shadow Fight, наша серия файтингов, делает большой упор на анимацию. Этот проект оказался очень успешным, и множество положительных реакций заслужила именно реалистичная анимация ударов. Такую анимацию мы не смогли бы сделать, используя только референсы и motion capture. Для работы над ней мы создали Cascadeur — систему создания физически корректной анимации.
Cascadeur находился в разработке почти десять лет, и за это время мы выяснили, что для создания реалистичного движения достаточно правильно рассчитать его основные параметры: центр масс, момент инерции и силы в точках опоры.
Центр масс
![](https://habrastorage.org/webt/av/p7/w5/avp7w5cysqewhexfdoogabmv65k.jpeg)
Центр масс — одна из самых важных точек персонажа. Он определяет, может ли персонаж сохранять равновесие в данной позе.
![](https://habrastorage.org/webt/2k/ch/3d/2kch3d-onp4dudbj0hesyveaewg.gif)
Взгляните на пример из всеми любимого Mortal Kombat. Удар, который делает Китана, выглядит довольно странно и неестественно. С учетом ее позы и того, как движется ее центр масс, она должна была бы завалиться вперед и упасть.
![](https://habrastorage.org/webt/kg/va/ku/kgvakum93cehuezccrjfrdfxq_w.gif)
Вот как похожее движение может выглядеть в действительности. Этот человек немного поворачивается во время удара, но, в отличие от Китаны, он не пытается никого ударить, а потому сохраняет равновесие.
![](https://habrastorage.org/webt/wt/el/bv/wtelbvpfmlvfupmibdkiljqjsd8.gif)
В сцене может быть и несколько центров масс. Например, когда эта девушка бросает свою перчатку, они начинают двигаться друг от друга, но их общий центр масс остается на месте.
![](https://habrastorage.org/webt/bz/us/p8/bzusp8nziqnybeqaibri10a20yg.gif)
Центр масс — очень “инертная” точка. Он не может быстро замедляться или ускоряться, его траектория всегда должна оставаться плавной, хотя траектории отдельных частей тела могут быть очень резкими.
Баллистика
![](https://habrastorage.org/webt/hj/fj/by/hjfjbysgq_punwluto-0b76ne3y.png)
Другой важный момент: когда персонаж находится в воздухе, траектория его центра масс всегда должна быть параболической. Какие бы действия ни совершал персонаж в воздухе, двигаться он должен по баллистической траектории.
В Cascadeur есть инструмент для создания таких траекторий. Аниматору достаточно создать кривую, задать начальную и конечную позы и, если нужно, добавить промежуточную анимацию. Высоту кривой можно настроить вручную, она определяет, как долго персонаж находится в воздухе.
Как только все готово, Cascadeur рассчитывает траекторию и остается только привязать к ней центр масс персонажа. В результате мы получаем правдоподобную, физически корректную траекторию прыжка.
Угловой момент
Угловой момент определяет вращение персонажа в данной позе. Он зависит от момента инерции и скорости вращения персонажа.
На изображении ниже момент инерции представлен в виде двух окружностей серого цвета. Радиус этих окружностей определяется позой персонажа. Чем более раскрыта поза, тем больше момент инерции.
![](https://habrastorage.org/webt/er/lc/hm/erlchmtb6eimytgrysfc87hqxws.jpeg)
Стрелка же представляет угловой момент. Чем больше момент инерции, тем медленнее вращается персонаж, так как стрелке требуется больше времени, чтобы описать полный круг. И наоборот, чем меньше круг, тем быстрее вращение.
![](https://habrastorage.org/webt/dq/1n/yb/dq1nyboczvhfz5y2dul4irqjdbs.gif)
Вот эта фигуристка, например, вращается медленнее, когда отводит ногу в сторону, чем когда ее тело собрано.
Как и центр масс, угловой момент — очень инертная величина. Она не может внезапно появляться или исчезать и должна изменяться плавно. Также она сохраняется в полете, когда нет точек опоры. Энергия на момент начала вращения не должна меняться до окончания полета.
Из-за всех этих нюансов реалистичное вращение в прыжке почти невозможно анимировать вручную: настолько точными должны быть повороты в промежуточных кадрах. Но в Cascadeur есть инструмент и для этого.
Все, что ему требуется, это черновая анимация: начальная и конечная позы и, возможно, сколько-то промежуточных поз. Наш алгоритм вычисляет точные значения вращения и корректирует положение персонажа во всех кадрах.
Силы в точках опоры
![](https://habrastorage.org/webt/9f/rc/u7/9frcu7vkyznogzjj1kf3daeeyau.jpeg)
Точки опоры тоже играют важную роль в движении персонажа, так что физические инструменты должны учитывать и их. Когда сила в точке опоры и сила, приложенная к центру масс персонажа, лежат на одной линии, они не влияют на вращение. Когда же это не так, персонаж начинает вращаться.
Cascadeur способен визуализировать эти силы и учитывать их при расчете движения персонажа.
Например, мы хотим, чтобы персонаж приземлился на колонну в определенной позе. Наша программа самостоятельно рассчитает все необходимые вращения с учетом точек опоры, так что персонаж приземлится именно в той позе, которая нам нужна, и не упадет.
Помимо физических законов, при создании боевых анимаций мы используем еще два принципа. Мы называем их разделение и компенсация, и они удачно дополняют законы физики.
Разделение
Разделение — это накопление энергии в одном месте и передача ее в другое место. Этот принцип применяется при анимации мощных ударов. Здесь, например, персонаж переводит всю энергию своего прыжка в удар мечом.
![](https://habrastorage.org/webt/al/p5/rb/alp5rbzjzstprqgejoh-zyfjo_m.gif)
Другой пример: вот этот таэквондист. Он очень сильно закручивается, затем его тело практически останавливается, и только нога продолжает движение. В результате вся энергия вращения передается в ногу.
![](https://habrastorage.org/webt/p_/ml/fd/p_mlfdvf7rgbuekct6z0z5unv2w.gif)
Компенсация
Компенсацией же называется движение одной или нескольких частей тела персонажа в сторону, противоположную общему направлению движения. Нужно это для сохранения равновесия и сглаживания траектории центра масс.
Взгляните на этот удар цепом. Во время удара персонаж проводит цеп над головой. Но цеп тяжел и может потянуть его назад, заставив потерять равновесие.
![](https://habrastorage.org/webt/fx/23/hx/fx23hxqi4h49en-xao3xzxhvcwy.gif)
Чтобы компенсировать это движение, персонаж выносит свое тело вперед и немного доворачивается. Их общий центр масс движется вверх и затем вниз, но центр масс самого персонажа всегда движется вперед, компенсируя это движение.
Заключение
Реализм анимации часто разрушают мелкие детали: центр масс, который движется не так, как должен, или угловой момент, который ускоряется не вовремя. Вместе эти мелочи становятся заметны и портят общее впечатление.
12 принципов — хорошая основа для анимации, но их одних недостаточно, когда требуются реалистичные движения. Мы полагаем, что эти принципы стоит дополнить нашими физическими инструментами. Они могли бы взять на себя вопросы физического реализма и позволить аниматорам сконцентрироваться на художественной составляющей.
Узнать больше о Cascadeur:
Cascadeur: задача о падающей кошке
Cascadeur: будущее игровой анимации
Cascadeur: предсказание позы персонажа по шести точкам
В команду Banzai Games требуется Senior Unity Developer. Подробнее о вакансии можно прочитать здесь.
ссылка на оригинал статьи https://habr.com/ru/company/banzai/blog/494458/