Unity3D + Kinect, или анимации на коленке

в 13:40, , рубрики: animations, Gamedev, Kinect, motion capture, unity3d, Блог компании KamaGames Studio, метки: , , , ,

Вступление


Здравствуй, уважаемый читатель. Прежде чем начать, мне хотелось бы немного рассказать о цели и формате моей статьи. Обычно с такими заголовками статьи носят обозревательный характер, в них описываются технические стороны реализации того или иного решения или приводится инструкция по эксплуатации и т.д. Выводы же читатель делает самостоятельно. Прежде чем написать эту статью, я провел небольшую исследовательскую работу на предмет аналогов. И нашел несколько статей как на самом хабре, так и массу видео материалов на ютубе. Поэтому я решил не писать очередной обзор технологии, а поделиться впечатлениями, рассказать о граблях, на которые мы наступили, и привести немного “кухонной” аналитики.
Цель этой статьи – помочь вам определиться, использовать или нет данный метод. В первую очередь она рассчитана на технических специалистов, хотя и не пестрит техническими деталями. Но так же будет полезна и всем остальным – арт-специалистам, менеджерам проектов да и просто всем, кто, так или иначе, связан с разработкой игр. Возможно, ссылка на данную статью поможет выбить бюджет у начальства и ускорить разработку/повысить качество вашей будущей игры. Итак, приступим.

Предпосылки

Анимация – зачастую это “проблемное место” множества 3D-проектов. Конечно, все зависит от специфики проекта, но частенько эта специфика определяется именно сложностью и дороговизной производства качественной анимации. Модели, текстуры, скетчи, эффекты и даже интерфейс найти/заказать проще, чем пакет специфических анимаций для персонажа вашей игры. Иногда геймдизайн ограничен рамками, которые устанавливает анимация. Наиболее ярко это заметно в инди-проектах и проектах небольших команд. Увы, порой мы наблюдаем проблемы с анимацией и у крупных разработчиков. Например, выходит новая игра, в которой вроде бы все хорошо: и геймплей на высоте, и модели красивые, и стилистика выдержана, и даже эффекты вроде ничего… Но игра смотрится уныло, потому что персонажи бегают как на кол посаженные или все способности в игре имеют три анимации. Неоднократно я был свидетелем смерти интересных проектов, которые так и не родились, потому что разработчики не смогли найти ресурсы именно на анимацию. В итоге среди разработчиков бытует мнение, что качественная и разнообразная анимация – это дорого по ресурсам. И по деньгам, и по времени. Особенно, если мы хотим реалистичную анимацию гуманоидных персонажей. Именно с проблемой анимации мы столкнулись в одном из наших проектов и хотим поделиться опытом ее решения, который, возможно, будет полезен и вам, уважаемые читатели.Итак, у нас было две проблемы.
Во-первых, конфликт желаний и возможностей. Хотелось много, качественно и разнообразно. Бюджет и ресурсы были ограничены, а времени – в обрез.
Во-вторых, экспериментальный геймплей. В процессе разработки некоторые игровые концепции менялись, соответственно, менялась и визуализация. Хотелось, чтобы можно было быстро отреагировать на возможные изменения или добавление фичей. После небольшого исследования вариантов и возможностей мы задумались об использовании технологии Motion Capture, так как она отвечала всем нашим потребностям. Качество, разнообразие, возможность менять анимации на лету и т.д. Но цена технологии оказалась слишком высока. В среднем снять студию Motion Capture в Москве стоит 800-1000 у.е. в день, чистка анимации после записи 1–2 у.е. секунда. Мы стали искать альтернативы… и нашли – использование Kinect + iPi Motion Capture Software.

Впечатления и пути решения проблем

Я не буду описывать процесс записи анимации и вдаваться в технические детали, так как он подробно описан на сайте разработчиков софта (iPi Motion Capture Software) и в этой статье. Впечатления от использования данной технологии более чем положительные. При минимальных затратах ресурсов мы получили качественный результат. Весь процесс – от записи движений до импорта результатов в Unity3D – занимает в среднем 1–3 часа в зависимости от длительности записи (большая часть времени – это автоматический процесс распознания и пост-обработки). На выходе вы получаете готовый fbx файл, который просто импортируете в Unity3D, при этом, даже не занимаясь чисткой, можно получить вполне приемлемый результат. И участие профессионального аниматора не требуется. Нет необходимости в специальном помещении и спецодежде. Инструментарий предоставляет возможность как автоматической “чистки” анимации, так и ручной доводки в процессе. Самым главным плюсом является то, что можно экспортировать собственный скелет и связывать его со скелетом из записи. Это позволяет “на лету” увидеть будущий результат и откорректировать его по необходимости, ну и естественно, экспортировать конечный результат, заточенный под ваши нужды.

Естественно, в процессе работы мы набили шишки и сделали выводы:

1. Знание – сила – не спешите записывать и экспортировать анимацию. Внимательно ознакомитесь с примерами и мануалами, посмотрите видео на ютубе. Полное понимание процесса сэкономит вам много времени и нервов.

2. От простого к сложному – не кидайтесь сразу записывать длинные и сложные анимации. Начните с простых. Таким образом вы постепенно познакомитесь с технологией и наберетесь опыта ее использования.

3. Калибровка – при калибровке 2х Kinect-ов мы не сразу разобрались, как правильно нужно настраивать камеры, и пару дней получали плохие результаты. Очень важно, чтобы после автоматической калибровки по специальной записи камеры в редакторе софта максимально точно совпадали с тем пространственным расположением, которое вы использовали при записи калибровочного видео. Этого можно добиться, двигая камеры в редакторе после калибровки. Обычно приходится сделать несколько итераций, пока совпадение не будет точным.

4. Подготовьте место – хотя для записи и не требуется специального места, но все же стоит заранее подготовиться. Учтите, что вам нужно 4х4 метра свободного пространства. Также стоит пометить на полу положение для ног, например с помощью изоленты. Это поможет занимать правильное положение между записями движений. Поставьте вне пределов видимости камер большое зеркало, так, чтобы вы видели себя с его помощью: так вы сможете контролировать точность движений.

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

6. Пост-обработка – софт предоставляет неплохие инструменты пост-обработки. Даже если при распознании какие-либо кости были потеряны, можно подвигать, настроить их прямо в редакторе. Также присутствуют инструменты для сглаживания мелкого дрожания и т.д. После нескольких записей мы пришли к выводу, что доработку удобнее делать в редакторе, так как после экспорта настраивать анимации в другом редакторе не очень удобно. Хотя этот пункт скорее субъективен.

Итоги

Использование Kinect для записи анимаций на практике показывает себя как быстрый, простой в эксплуатации и недорогой способ получить качественные анимации для ваших игр и не только. Цена вопроса в среднем получается 12–40 тысяч рублей в зависимости от выбранной лицензии на ipiSoft и количества Kinect-ов, что не является большой финансовой преградой не только для студий, но и инди-разработчиков. При этом
если учесть, сколько будет сэкономлено времени и ресурсов при работе с аутсорсерами или штатными аниматорами, то этот подход получается очень выгодным. К тому же опробовать технологию можно абсолютно бесплатно. На весь необходимый софт распространяется 30-дневный триал, а достать 1–2 Kinect-а – это вообще не проблема. Конечно, Kinect – это не панацея от всех проблем. Нельзя, естественно, записать анимации
негуманоидных персонажей. И сложную анимацию с резкими движениями записать не получится. Но технологии развиваются, например тот же Kinect – Демонстрация возможностей Kinect 2.0 – с таким распознанием качество анимаций будет просто великолепным. Преимущества использования Kinect для MotionCapture очевидны. Просто нужно попробовать. С удовольствием отвечу на любые вопросы связанные с темой статьи в комментариях.

Ссылки

Так как лень – это двигатель прогресса, привожу список полезных ссылок, кому лень гуглить самостоятельно:

1. ipiSoft Motion Capture — собственно сайт софта, где есть все необходимое. Уроки, примеры, дистрибутивы софта и т.д.

2. Экспорт MoCap данных в Unity3d — полезная статья с описанием процесса калибровки, экспорта анимации и пост-обработки.

3. Подборка роликов на YouTube — множество примеров как, что, куда и зачем.

4. Демонстрация возможностей Kinect 2.0 — демонстрация второй версии контролера. Перспективы открываются очень интересные.

Автор: DarkMasster

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js