Анимация в 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.
И конечный результат: