Анимация в KAPIA

Добрый день! Меня зовут Павел. Я являюсь программистом и аниматором маленькой семейной команды по разработке игр. Я и моя жена делаем 3Д адвенчуру в постапокалиптическом мире. За время разработки мы изобрели свои технические “велосипеды” с которыми я хотел бы с вами поделится. Хочу начать с анимации и рассказать как мы ее делаем.
Уже много лет мы работаем в 3D пакете Softimage XSI. Хоть проект уже давно не поддерживается и закрыт, но мы до сих пор им пользуемся. Я думаю, что примерно такой же пайплайн возможно воспроизвести и в других пакетах. Поехали!
Риггинг
Для риггинга я использую Gear. Очень удобный и простой инструмент для автоматического риггинга персонажей.

Иногда для не человекоподобных персонажей приходится собирать риггинг вручную или модифицировать собранный с помощью Gear.
Анимация
Анимацию мы снимаем с помощью мокап костюма Perception Neuron. Все пропорции персонажей перенесены в программу от Axis Neuron (родная программа от Perception Neuron). Сначала мы пробовали использовать Motion Builder для чистки анимации. Но это отнимало слишком много времени, так как нужно использовать 3 программы(Axis Neuron -> MotionBuilder ->Softimage). Но затем стали использовать Softimage. Для этого был написан драйвер для Perception Neuron чтобы можно было его напрямую использовать в Softimage в реально времени. Чистить мокапы в Softimage оказалось очень удобно. Единственный минус это конечно проскальзывания ног. Но и этим мы быстро справились написав соответствующий плагин.
Затем чистим анимацию.
И немного пайплайна, как делаем это мы.
Процесс анимации выглядит так.
1. Сначала идет озвучка текста.

Как видите. Весь текст разбит по цветам(персонажы), а также у каждой фразы есть свое имя-номер(G11,R12,I13 и т.д.).
2. После озвучивания персонажей мы получаем аудиофайл, который затем помечаем маркерами.
И каждому маркеру даем то самое имя-номер.

3. После этого этапа идет запись мокапа и его чистка.

Для того чтобы анимация точно совпадала с маркерами из Adobe Audition маркеры выгружаются в csv файл такого вида:
Name Start Duration Time Format Type Description
Eye29 00:00:00:00 00:00:02:14 30 fps Cue
Ren30 00:00:02:26 00:00:04:29 30 fps Cue
4. Затем этот файл загружается скриптом в Softimage.

После небольшой регулировки по таймингу автоматически строится таблица всех анимаций для экспорта в Unity.
5.И далее все улетает в Unity. Вместе с файлом fbx формируется файл *.agrd
…
_Ren67;5832.0;5950.0
_Ren65;5601.0;5656.0
в котором лежит разметка анимации. С помощью класса наследуемого от AssetPostprocessor Unity автоматически нарезает всю анимацию, которая идеально совпадает с озвученным голосом.
Вообщем весь процесс не сложный и не отнимает много времени. На 10 минут анимации сейчас уходит примерно 5-6 часов (съемка, чистка, экспорт).
Далее идет автоматизация загрузки аудио и анимации в Unity.
Articy
Все диалоги построены в Articy:


Если посмотреть внимательнее на поля, то видно все те же названия маркеров.
Был написан импорт из Articy в Unity. Он автоматически считывает весь текст и вилки диалога и сопоставляет им аудиофайлы и анимацию так как названия аудио файлов, липсинка, анимации совпадают с названиями маркеров, которые считываются из articy.

Lipsync
Для липсинк�� мы используем Softimage Face Robot. Здесь есть очень удобный инструмент риггинга лица.

После того как риггинг построен подгружаются фонемы. Этот этап автоматизирован.
Всего их 25: 9 на звуки речи, 6 на движение и моргание глаз и 10 на мимику.

После риггинга голова с костями приклеивается обратно к модели. И снова делаем небольшой риггинг глаз. Чтобы можно было записывать их движение отдельно вместе с веками.
По сути анимация глаз это притреканный null объект к видео движения реального глаза.
Далее персонаж грузится в unity. И там уже все это подгружается в lypsinc.
Таким образом анимация глаз и век пишется вместе с анимацией персонажа, а анимация рта анимируется автоматически в unity. Дополнительно к этому вручную добавляются движение бровей во время разговора если это необходимо.
Вот так вкратце устроен наш пайплайн анимации мимики и персонажей в игре. С помощью
небольших утилит и скриптов получилось идеально скрестить Unity, Articy, Axis Neuron и Softimage.
И конечный результат: