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

Комментарии (20)


  1. GCU
    31.07.2019 19:15
    +3

    Т.е. это IK Solver по сплайнам (сглаженной интерполяции) с учётом физики?


    1. epsonic
      01.08.2019 14:53
      +1

      Судя по роликам похоже на full-body IK + rigid body-динамика для прогнозирования и, собственно, симуляции перемещения рига в пространстве. Чем-то напоминает Эйфорию, но та в первую очередь на процедурку заточена, а не для canned-анимации.

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


  1. Brightori
    01.08.2019 03:15
    -1

    Если бы не игры, то хотелось бы разрабатывать такой софт )


    1. Wernisag
      01.08.2019 17:09

      Чем Вас так расстраивают игры?


      1. Brightori
        01.08.2019 17:19

        Меня ничем не расстраивают, я именно ими и занимаюсь, и видимо местный токсичный народ меня неправильно понял, что если бы я не занимался играми, то хотел бы заниматься разработкой софтом для анимаций/3д


  1. amarao
    01.08.2019 09:27

    Я с интересом посмотрел все gif'ки в статье — и не могу отделаться от ощущения, что это бандаевский пластмассовый body-kun (фигурка). Туловище у вас какое-то квадратно-гнездовое, плечи почти не двигаются.

    Можно вас попросить показать человечка вот в такой позе, например:


    или вот в такой:



    Я понимаю, что это «для игр», но если мы говорим про человеческую фигуру, то пластику поз всё-таки хотелось бы видеть похожей на людей, а не на пластмассовые/деревянные модельки.


    1. Sadenly
      01.08.2019 16:33

      С поведением геометрии в Cascadeur все стандартно. Используется обычная скелетная анимация. Модель достаточно простая, так как предназначена для мобильной игры, где лишние ресурсы лучше не тратить.


  1. White_Scorpion
    01.08.2019 10:20

    Первое, что мы добавили в процесс создания анимации — это физический скелет.

    Т.е. это подаётся как инновация? Типа абстрактные "другие разработчики" — до сих пор не используют скелетную анимацию?


    1. GCU
      01.08.2019 10:50
      +1

      Я думаю тут скорее упор на физический т.е. Ragdoll. Сам по себе скелет со скиннингом не даёт физически корректное поведение, наличие скелета обычно необходимо, но не означает наличие Ragdoll-физики (например в Half-Life 2 скелет для Ragdoll физики сильно упрощён по сравнению с анимационным — там нет лица, пальцев и многих других деталей) — для Ragdoll к скелету ещё нужно прикрутить ограничения на соединения, тензор инерции и т.д.
      Но вопрос инновации всё равно остаётся, Ragdoll давно есть в 3DS Max например.


      1. Sadenly
        01.08.2019 16:19
        +1

        Инновации не в самом Ragdoll, а в инструментах, позволяющих использовать информацию о расположении твердых тел в пространстве (и времени) на этапе создания и редактирования анимации.

        В программе есть инструменты для визуализации различных физических характеристик (положения центра масс, углового момента, момента инерции) и для исправления этих физических характеристик — на интервалах свободного полета, интервалах с точками опоры.

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

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

        Наша цель — сделать инструменты, позволяющие и вручную сделать анимацию реалистичной.


  1. chirkin
    01.08.2019 12:28

    А в чем принципиальное отличие от технологий десятилетней давности? https://www.youtube.com/watch?v=87qdmuOesRs


    1. GCU
      01.08.2019 15:38

      Думаю дело в доступности. На текущий момент вообще не понятно как воспользоваться Euphoria от NaturalMotion стороннему разработчику игр.


    1. Sadenly
      01.08.2019 16:21

      Euphoria предназначена для использования в самой игре, для генерации анимации, когда игра уже запущена. По сути — это умный Ragdoll, который будет более красиво вести себя в падении, при столкновении с объектами.

      Cascadeur — программа для создания анимации человеком. Такие анимации делаются на этапе производства контента для игры. Созданные в Cascadeur анимации потом экспортируются из программы, импортируются в игру и используются уже внутри анимационного движка игры. Но то, что мы получаем на выходе из Cascadeur — это такая же анимация, как и анимация, сделанная с помощью другой программы или motion capture.

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


  1. engine9
    01.08.2019 13:22

    Выглядит многообещающе, кто хоть раз пробовал анимировать существ, тот знает сколько это труда.

    Кстати, а ваш софт может только антропоморфные скелеты просчитывать? Например робо-паука осилит?


    1. Sadenly
      03.08.2019 08:38
      +1

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


      1. engine9
        03.08.2019 12:49

        Круто.


  1. WhisperingOak
    01.08.2019 17:20

    Разработкой игр совершенно не интересуюсь, но люблю красивые и качественные интерфейсы, поэтому задам другой вопрос. На чем написан ваш софт? Что-за GUI фреймворк?


    1. DFooz
      01.08.2019 20:16

      Qt


      1. WhisperingOak
        02.08.2019 08:58

        Но наверняка это не готовая тема? Потому что во всяких примерах Qt-шные приложения довольно страшненькие.


        1. Sadenly
          03.08.2019 18:04

          Сейчас переходим с QtWidgets на QML. На QML все элементы кастомизированы, но при использовании QML это стандартный подход.


          Макет интерфейса рисовали к художники, у которых уже был большой опыт работы с интерфейсами в мобильных играх.