Cascadeur: будущее игровой анимации

image

Всем привет! Мы — студия разработки Banzai Games. Рады наконец открыть здесь свой блог. Будем писать о наших технологиях, проектах и делиться историями из жизни компании. Первый материал — перевод интервью с основателем студии Евгением Дябиным, которое он дал коллегам из издания 80lv. В нем он рассказал о нашей программе для создания physics-based анимации Cascadeur и ее преимуществах перед mocap-анимацией.

Евгений, расскажите немного о себе и чем вы сейчас занимаетесь.

Я являюсь основателем и ведущим продюсером студии разработки Banzai Games. Наш офис располагается в Москве, а ключевой партнер — компания Nekki, для которой мы разрабатываем ряд проектов, в том числе флагманский мобильный файтинг Shadow Fight 3. Я занимаюсь продюсированием и гейм-дизайном, а также участвую в разработке игровых механик. Но с давних пор меня очень интересует тема анимации, и именно анимация играет ключевую роль в наших проектах. За годы работы мы вместе с аниматорами выработали особый подход к созданию анимации и используем его в нашем ПО. Так и появился Cascadeur — программа для создания физически корректных анимации без использования motion capture.

Современные игры обладают очень продвинутой анимацией, но большая ее часть создается либо в Maya с применением простых ключевых кадров, либо с помощью motion capture. В чем вы видите ограничение этих подходов, и как они могут усложнить простые задачи?

Я согласен с тем, что анимация в играх сегодня очень продвинутая. Люди, которые ее создают, обладают огромным опытом. Но каким бы профессионалом ты ни был, создать правдоподобную анимацию даже падающего на стол кубика по ключевым кадрам очень непросто. Многие обязательно заметят, что анимация была сделана вручную и отличается от того, как бы кубик падал в реальной жизни. Поэтому главной проблемой покадровой анимации является то, что физически корректного результата добиться трудно.

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

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

И это даже не говоря о том, что в играх полно монстров, движения которых не так-то просто снять с человека.

Каким образом Cascadeur решает эти проблемы? Как вы применили 12 принципов Диснея в создании этой программы?

Первое, что мы добавили в процесс создания анимации — это физический скелет. Он соединен с ригом персонажа, и когда вы создаете анимацию, то анимируете также и движение твердых тел. А наши инструменты, имея информацию о них, анализируют ее и показывают вам физические характеристики позы или движения.

Кроме того, у нас есть инструменты для правки физических характеристик анимации. Например, когда персонаж делает сальто, угловой момент в прыжке должен оставаться неизменным. Если вы не учитываете это, то сальто выглядит нереалистично. А наша программа старается найти такой вариант вращения, который сохранит угловой момент неизменным.

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

Что касается 12 принципов Диснея: если внимательно посмотреть, то почти все они учитывают физику. Но когда аниматор имитирует ее без доступа к точному моделированию, он вынужден преувеличивать, утрировать законы физики. Поэтому мы получаем выразительную, но мультяшную анимацию. Удивительно, но если строго соблюсти законы физики, то многие принципы Диснея являются просто следствием инерции. Но главное отличие — при точной физической симуляции мы можем избежать эффекта мультяшности.

image

На Animation Bootcamp в Сан-Франциско вы говорили, что многие реалистичные анимации, например, волос, тканей и мускулов являются лишь симуляцией. Тогда почему мы до сих пор используем ключевые кадры не только в мультфильмах, но и в крупных ААА проектах? Вот разработчик создал анимацию, но вынужден ее дополнительно править вручную. Почему?

Обычно симуляция применяется только для «вторичного» движения. То есть у вас есть какая-то основная анимация персонажа, и вы хотите знать, как с ней будут взаимодействовать его волосы и одежда. При этом вторичная анимация никак не влияет на основную. Но анимация тела персонажа зависит от всех его частей. Если взмахнуть рукой в реальной жизни, то это повлияет на поворот всего тела. Именно поэтому так сложно править мокап-анимацию, не нарушая ее реалистичности. А вносить изменения в такую анимацию приходится практически всегда. Даже на поздних стадиях производства часто возникают какие-то новые требования и идеи.

Кроме того, иногда в играх нужны движения, которых вы не добьетесь с помощью мокапа. Например, вам нужно, чтобы персонаж прыгал выше, чем это физиологически возможно. Или у вас есть файтинг (как наш Shadow Fight 3), где все движения, включая прыжки, происходят очень быстро — потому что это важно для геймплея. Только вот прыжок при земной гравитации всегда будет довольно медленным. Значит, вам потребуется увеличенная гравитация, которую мы и использовали для всех прыжков в Shadow Fight 3.

В целом, главная проблема анимации персонажа — это контроль аниматора над результатом. Даже если мы когда-нибудь создадим нейронную сеть, которая сама сможет создавать и симулировать движения персонажа, то все равно остается вопрос: как вообще донести до нейронной сети, какое именно движение она должна создать? Как объяснить ей, чего конкретно мы хотим?

Поэтому нужен комбинированный подход: аниматор должен иметь инструменты редактирования анимации, а искусственный интеллект должен помочь ему добиться качественного и реалистичного результата. Сейчас Cascadeur помогает нам только с физикой, но мы не собираемся останавливаться на этом.

В чем проблема симуляции двуногих человеческих персонажей? Что делает их такими сложными для работы и как избежать эффекта “зловещей долины” с помощью Cascadeur?

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

Обмануть человеческий глаз при создании анимации очень сложно. Если вы нарушаете законы физики при анимировании даже самых простых вещей, человек это заметит. Физическое моделирование простых объектов не составляет труда, но целый персонаж — это куда более комплексная задача. И именно поэтому мокап так важен: человек, чьи трюки записываются с помощью этой технологии, выполняет их в соответствии с законами физики. Он не может иначе. Правда, это хорошо работает в основном с человекоподобными персонажами.

Следовательно, если мы хотим избежать эффекта “зловещей долины” и заставить зрителя поверить в происходящее, движение должно быть не только красивым, но и учитывать законы физики. Аниматоры отлично справляются с постановкой поз и красотой движения, но учитывать при этом еще и физику — это практически невозможно. Cascadeur может помочь с этим.

Работа Cascadeur похожа на какую-то магию. Не могли бы вы рассказать о том, как это работает и как вы используете это при разработке игр?

Возвращаясь к технологиям — то, что есть у нас сейчас, я бы точно не назвал магией. Я сам удивлен, что инструменты, которые вы видите в Cascadeur, не включены по умолчанию в большинство 3D-пакетов, предназначенных для работы с анимацией.

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

На магию это будет похоже в том случае, если мы сможем автоматизировать эти инструменты — и они будут предлагать аниматору физически корректный результат без каких-либо усилий с его стороны. Но пока это именно что инструменты, которые все же нужно освоить.

Как вообще происходит симуляция? У вас есть какая-то база движений? Вы моделируете всю физику движения тела? Например, вы даете каждой части тела определенные физические свойства, импульс и вектор, затем смотрите, что получается?

Аниматор сначала делает драфт. В нем у нас есть позы персонажа в каждом кадре — ключевые и интерполированные. Если мы сделаем прямое моделирование этих поз, то увидим, как будет двигаться персонаж при учете именно таких движений частей тела относительно друг друга. Скорее всего, это приведет к тому, что персонаж просто упадет, чего аниматор бы не хотел. Поэтому мы заходим с другой стороны.

Например, если персонаж прыгает, то мы знаем, из какого положения прыжок начинается, а в каком — заканчивается. Аниматор может пометить важные для него промежуточные кадры. Далее алгоритм сдвигает и поворачивает персонажа в каждом кадре так, чтобы его центр масс двигался по баллистической кривой, а угловой момент сохранялся. При этом алгоритм пытается сохранить каждую позу и сделать анимацию максимально близкой к изначальному драфту. Когда есть точки опоры, задача становится сложнее, но суть та же.

Аниматор может изменять анимацию и наблюдать за тем, как это влияет на результат. Чем ближе мы к желаемому результату, тем меньше серьезных изменений мы вносим в физику. Шлифовать и улучшать анимацию можно сколько угодно.

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

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

Мы называем эту концепцию “Зеленый Призрак”. В наших мечтах это выглядит так: аниматор ставит ключевые позы, а искусственный интеллект сам понимает, где находятся точки опоры, где начинаются и заканчиваются прыжки и какова их высота. Эта система может предложить не только корректную физику, но и естественные позы и траектории для каждой части тела. Аниматор наблюдает это в виде Зеленого Призрака, который двигается параллельно с драфтом анимации.

Возможна ситуация, когда уже на первых этапах создания анимации вы увидите на Призраке результат, который вас устроит, и скопируете его себе. Но если это не то, что нужно, то вы сможете продолжить работу, добавить еще ключей, поменять позу — и Призрак учтет все это. А вы сможете в любой момент скопировать те позы и фрагменты, которые вам нравятся. Таким образом человек и ИИ работают совместно, двигаясь навстречу друг другу.

Такой подход может сэкономить кучу времени, ведь концепция движения часто понятна уже по нескольким кадрам. 90% времени аниматора уходит отнюдь не на творчество, а на рутинную шлифовку финального результата.

Как вы планируете распространять Cascadeur?

Мы пока не готовы говорить о распространении, т.к. наша программа еще не выпущена официально, ее нельзя приобрести. Но мы запустили закрытое бета-тестирование. Вы можете лично ознакомиться с программой — для этого нужно подать заявку на сайте cascadeur.com, и мы отправим вам ссылку на скачивание в течение 2 недель.

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

На данный момент мы поддерживаем экспорт .fbx, что дает возможность работать с Unity и Unreal. В будущем мы надеемся добавить поддержку для большего числа игровых движков. Также стоит добавить, что хоть мы и сосредоточены в основном на экшн-анимации, но у нас есть цель охватить весь необходимый набор инструментов для анимации, чтобы вы могли создавать с нуля анимацию любой сложности.

На проект Cascadeur требуется C++ Developer. Подробнее о вакансии можно прочитать здесь.


Следите за новостями о разработке Cascadeur:
Facebook
ВКонтакте
Youtube
FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *