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? Для комьюнити- и маркетингового контента текущего качества вполне достаточно, чтобы дать нашим пользователям новый взгляд на игровой мир. Однако, пусть пока и нет необходимости в улучшении качества роликов, мы всегда находимся в поиске новых решений.
Источник: https://habr.com/ru/company/pixonic/blog/494942/


Интересные статьи

Интересные статьи

Делимся с вами подборкой вебинаров на тему разработки игр. Вы узнаете, как сделать простую консольную игру на PHP, 3D-арканоид на движке Unreal Engine 4, космическую аркаду и AR-приложение на...
«В 1665 году Кембриджский университет закрылся из-за эпидемии чумы. Исааку Ньютону пришлось работать из дома. Он открыл дифференциальное и интегральное исчисление, а также закон всемирного тяготе...
Привет, Хабр! Как законодатели мод по теме Unity на российском рынке предлагаем вам почитать интересное исследование о практическом использовании алгоритма WFC (Wave Function Collapse), постро...
В этой статье рассматривается кейс по ускорению браузерного приложения через замену вычислений JavaScript на WebAssembly.
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...