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

Автор оригинала: 80 level
  • Перевод
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
Banzai Games
60,19
Компания
Поделиться публикацией

Похожие публикации

Комментарии 25

    +3
    Т.е. это IK Solver по сплайнам (сглаженной интерполяции) с учётом физики?
      +1
      Судя по роликам похоже на full-body IK + rigid body-динамика для прогнозирования и, собственно, симуляции перемещения рига в пространстве. Чем-то напоминает Эйфорию, но та в первую очередь на процедурку заточена, а не для canned-анимации.
      Возвращаясь к технологиям — то, что есть у нас сейчас, я бы точно не назвал магией. Я сам удивлен, что инструменты, которые вы видите в Cascadeur, не включены по умолчанию в большинство 3D-пакетов, предназначенных для работы с анимацией.
      Вот за это респект. Редко бывает, когда разработчик нового инструмента не бахвалится, набивая цену себе и продукту, а честно говорит, что все это реализуемо в традиционных 3D DCC, но почему-то схожих возможностей не видать (либо они существуют только in-house как приватные разработки в крупных студиях, к примеру).
      0
      Если бы не игры, то хотелось бы разрабатывать такой софт )
        0
        Чем Вас так расстраивают игры?
          +2
          Меня ничем не расстраивают, я именно ими и занимаюсь, и видимо местный токсичный народ меня неправильно понял, что если бы я не занимался играми, то хотел бы заниматься разработкой софтом для анимаций/3д
        0
        Я с интересом посмотрел все gif'ки в статье — и не могу отделаться от ощущения, что это бандаевский пластмассовый body-kun (фигурка). Туловище у вас какое-то квадратно-гнездовое, плечи почти не двигаются.

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


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



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

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

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

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

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

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

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

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

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

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

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

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

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

                    0
                    Круто.
                      0
                      Это чертовски хорошие новости. Обычно такие инструменты жетко и ограничено затачиваются исключительно на человеческую анатомию, или иногда даже на исключительно конкретную иерархию костей.
                    0
                    Разработкой игр совершенно не интересуюсь, но люблю красивые и качественные интерфейсы, поэтому задам другой вопрос. На чем написан ваш софт? Что-за GUI фреймворк?
                      0
                      Qt
                        0
                        Но наверняка это не готовая тема? Потому что во всяких примерах Qt-шные приложения довольно страшненькие.
                          0

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


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

                      0
                      Здравствуйте

                      Пишете: «В настоящее время риггинг не включен в билд», «мы готовы сделать для вас персональный риг»
                      — Значит в бете «по умолчанию» можно пока использовать только Ваши скелеты.
                      1. Один скелет или несколько?
                      2. Редактор скелета в ближайших планах или в «долгий ящик» после беты?

                      — На видео про сальто видно, персонаж сгуппировывается, а центр масс отклоняется в сторону рук и ног. Значит центр масс просчитывается от фигуры.
                      3. Костям задан свой центр масс (соответствующие координаты цнтр масс находятся по координатам центров масс костей), фигуре задана плотность (центр масс = тройной интеграл плотности по координатам) или свой вариант?
                      4. Оружие имеет свой ц.масс/плотность?

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

                      6. Красный сектор коррекции момента вращения завязан на центр масс и тазовую (или другую) кость?
                      7. Как в предыдущем примере, мах ногой во время сальто задаст положительный или отрицательный момент и угловое ускорение. Это тоже в ручную подбирать или программа учитывает (или в планах разработки)?
                      Всё равно проще от базовой параболической траектории.

                      Спасибо за Ваш труд, буду следить.
                        0
                        «1. Один скелет или несколько?»

                        В последней ЗБТ версии у нас два скелета — наш персонаж из Shadow Fight 3 и «саблезубая кошка». Также в комплект ЗБТ входит скелет Unreal Mannequin.

                        2. Редактор скелета в ближайших планах или в «долгий ящик» после беты?

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

                        3. Костям задан свой центр масс (соответствующие координаты цнтр масс находятся по координатам центров масс костей), фигуре задана плотность (центр масс = тройной интеграл плотности по координатам) или свой вариант?

                        Часть костей связаны с твердыми телами, из которых состоит физический скелет модели. Имея данные о расположении (и массе) твердых тел в каждой позе всегда можно рассчитать общий центр масс персонажа.

                        4. Оружие имеет свой ц.масс/плотность?

                        Да, у оружия свой центр масс. Также, в случае с оружием обычно создается общий для оружия и персонажа центр масс.

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

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

                        6. Программа будет выделять кадры красным, а мы подтверждаем истинность и сохраняем кадры?

                        Тут также нагляднее посмотреть туториал по инструменту «ballistic ghost»

                        6. Красный сектор коррекции момента вращения завязан на центр масс и тазовую (или другую) кость?

                        Красный сектор рассчитывается на основании положения и ориентации всех твердых тел в персонаже.

                        7. Как в предыдущем примере, мах ногой во время сальто задаст положительный или отрицательный момент и угловое ускорение. Это тоже в ручную подбирать или программа учитывает (или в планах разработки)?

                        Программа рассчитывает вклад маха ноги во вращение автоматически (на основании данных о расположении твердых тел в кадрах анимации).

                        Спасибо за интерес! В будущем мы планируем подробнее рассказать о том, как устроены наши инструменты и наш физический скелет.
                        0
                        Стоит добавить ссылку на статью про версию 2012 года:
                        «Cascadeur — зачем аниматорам физика?»
                        habr.com/ru/company/Nekki/blog/143967
                          0
                          Восхитительно. Я в дичайшем восторге!!!

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

                          Самое читаемое