company_banner

CGI в домашних условиях при помощи Unreal Engine и iPhone

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

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

    Год назад я наткнулся на следующее видео:

    Смотреть видео


    Что мы здесь видим? Парень нацепил на себя костюм захвата движения тела (пока ничего необычного), повесил перед собой iPhone (а вот это уже интересно) и таким образом транслирует анимацию лица и тела персонажа напрямую в режиме реального времени в Unreal Engine, и выглядит результат для столь незамысловатой реализации довольно качественно.

    Классная идея, подумал я. Затем закрыл видео. И продолжил дальше работать.

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

    Смотреть видео


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

    Начался долгий процесс изучения различной документации.

    Что в результате получилось и как мы этого добились, читайте дальше.


    Анимация лица


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

    Для того, чтобы записать анимацию лица, нам нужен был только iPhone с TrueDepth front-facing camera ― то есть, от iPhone X и выше. Именно эта технология считывала топологию лица и передавала необходимые значения в Unreal уже на нашу модель.



    За различные выражения лица отвечают блендшейпы ― 3D-модели идентичной топологии, то есть, с одинаковым количеством вершин, но отличающиеся формой. Face AR использует 51 блендшейп, и благодаря подробной документации Apple, в которой описано, какие конкретно блендшейпы используются в DAZ, нам удалось их сделать достаточно быстро.

    Примерно так выглядит набор эмоций и блендшейпов в 3D-модели:


    Блендшейпы из интернета


    Наши блендшейпы

    Итак, сначала мы заводим наше лицо Unreal Engine для тестов, затем билдим приложение и возвращаемся обратно в Unreal для получения результата.




    Анимация тела


    Для создания тела необходимо было учитывать специфику софта для работы с костюмом. Мы работали с костюмом захвата движения Perception Neuron 2.0 Motion Capture System компании Noitom. Стоит таковой примерно 2500 долларов. Это самый дешевый костюм на рынке и не самый лучший представитель среди аналогов: он очень чувствителен к электромагнитным излучениям, отчего координаты датчиков могут съехать, если он будет находиться в радиусе активного излучения, и чистить анимацию окажется ещё труднее. К счастью, мы как раз переехали на другой этаж, и на новом месте было достаточно безлюдно, а значит, электромагнитные излучения сократились до минимума, ― то есть, было идеально для нас.



    Почему именно костюм? Готовые анимации из различных библиотек нам не подходили, поскольку наш персонаж должен иметь уникальный характер и поведение, а лицо и тело должны точно их отражать. Если бы мы делали анимацию с нуля, это заняло бы месяц, а то и два. Использование же оборудования для захвата движения помогло сэкономить это время.

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



    Для того, чтобы анимация передавалась точно, доработки были минимальными или вообще удалось их избежать, а также чтобы транслировать анимацию с костюма прямиком в Unreal Engine, необходимо было правильно выставить кости и убрать ненужные значения у нашей модели. У компании Noitom есть черновая 3D-модель для Unreal Engine, используя которую в качестве референса, нам было необходимо доработать нашу собственную модель: поставить ее в T-позу, расположить ладони и пальцы в нестандартные для моделирования позиции и сбросить все значения до нуля. Было очень важно, чтобы все кости были без лишних поворотов, иначе программа их умножит, тем самым сильно исказив движения.

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


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


    Затем у нас ушло около трех недель до финальной версии, а если исключить доработки определённых факторов как в модели лица, так и в теле, этот срок можно сократить еще на неделю.


    Для чего мы это используем


    Давайте отвлечемся от процесса CGI и поговорим о том, какие цели преследовал проект.

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

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

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



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


    На данном видео вы видите практически все тесты, которые мы проделали с лицевой анимацией и анимацией тела. Так как спецификация у них разная, приходилось тестировать их по очереди и только в конце смешивать. Для тестов анимации тела была взята модель костюма из CGI-трейлера под новый релиз:


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



    Итог


    Имея костюм для захвата движения, iPhone, 3D-модель и Unreal Marketplace c огромным выбором бесплатных качественных ассетов, мы можем буквально за пару недель собирать для наших игроков интересные истории. У нас также появился опыт и понимание того, как можно быстро создать нового персонажа и уже на этапе его создания учесть все особенности производства для достижения наилучшего результата за короткое время.

    Почему мы не ставили целью добиться качества крутых синематиков, как у Blizzard? Для комьюнити- и маркетингового контента текущего качества вполне достаточно, чтобы дать нашим пользователям новый взгляд на игровой мир. Однако, пусть пока и нет необходимости в улучшении качества роликов, мы всегда находимся в поиске новых решений.
    Pixonic
    Разрабатываем и издаем игры с 2009 года

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

      +1
      А в чем тут специфика iPhone (камера, софт)?

      >с TrueDepth front-facing camera
      Я так понял, это для мимики лица. Для захвата движений тела сгодится что-то более обычное?
        +1
        Специфика iPhone как раз в его фронтальной TrueDepth камере, которая представлена в iPhone X, iPhone XS, iPhone XS Max и iPhone XR, а так же iPad Pro (11-inch) or iPad Pro (12.9-inch, 3rd generation). Специально для камеры разработан Face AR, который используется, например, в Animoji.

        Верно, совместно камера и софт использовались для захвата мимики лица.

        Представленные аналоги и приложения на рынке разработаны как раз на основе Face AR.

        Для захвата движения можно использовать записанные анимации, например, с камеры Microsoft Kinect 360 (которая также использует похожую технологию Structured light), или использовать Moves by Maxon. Но при их использовании будет совершенно другой пайплайн, который может усложнить процесс. Также из-за неидеальности технологии может увеличиться время производства, которое придется потратить на чистку анимации. Костюм тоже работает не идеально, но все же более точен, чем камеры для захвата движения.
        0
        Не знаю почему, но от превью первого видео меня корежит изрядно, нелохо было бы скрыть шок-контент под кат.
          0
          Да, персонаж для анимации там выбран на любителя. Шок-контент убран :)
          0
          Связка Vive trackers (SteamVR tracking) + IKinema Orion вышла бы по цене также как Neuron, но гораздо лучше по качеству, как мне кажется. Меньше работы по очистке потребовалось бы.
            0
            Дело в том, что Neuron приобретался изначально для записи уникальных анимаций для топ-даун шутера в помощь аниматорам. Не думаю, что им была бы удобна такая связка для игровых анимаций. Мы же просто позаимствовали у них костюм под свои нужды.

            Но за подсказку спасибо, если будет возможность, рассмотрим и этот вариант.
            0
            Так у вас же богатая компания, могли же вместо айфона какое-то профессиональное оборудование для захвата мимики взять?
              0
              Изначально перед нами не стояло цели создавать CGI при помощи захвата движения, идея пришла уже исходя из имеющегося оборудования. Пока нас устраивает качество, которое мы получаем описанным способом, поэтому нет смысла закупать что-то еще. Собственно, в том и основная идея статьи — что можно получать видео вполне неплохого качества при минимальных затратах.
              +1
              Вроде скоро должен выйти плагин для Daz, реализующий все это без UE
              www.youtube.com/watch?v=CXl8hz1q93U
                0
                Спасибо за информацию, надо будет опробовать

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

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