Motion Capture в Blender. Выбор инструментария

Ну вы же знаете, что такое Motion Capture, да? Этой статьей я начинаю серию, посвященную полному циклу создания и обработки Motion Capture в Blender с использованием некоторых дополнительных средств (оборудования и софта). Процесс этот не очень сложный, но содержит множество подводных камней. Чтобы вы не наступали на те же грабли, что и я, и не тратили лишнего времени на эксперименты — постараюсь описать максимально подробно все этапы и их особенности. Ну а в первой статье как раз постараемся определиться с используемым оборудованием и софтом.

Motion Capture в Blender

Впрочем, не факт, что серия будет продолжена. Если я увижу, что интереса к ней нет и бессмысленно тратить свое время на продолжение, то этой статьей все и закончится. Так что если вы заинтересованы увидеть новые статьи по этой теме — пишите пожалуйста в комментарии.

А теперь ближе к делу. Помните эти демонстрационные голливудские ролики, в которых человек в специальном костюме бегает и прыгает, а его движения передаются анимированному компьютерному персонажу? Это и есть тот самый Motion Capture (сокращенно Mocap). Вот этим и займемся, только для записи движения будем использовать HTC Vive с несколькими дополнительными трекерами к нему (это в десятки/сотни раз дешевле, чем специализированное оборудование).

Для собственно захвата движений (Motion Capture) будем использовать IKinema Orion, для быстрого создания модели человека — MakeHuman, для переложения записанных движений на полученную модель и последующей постобработки — Blender. Причем некоторые из этих этапов можно будет исключить. Так, если вам не нужны специфические движения, то велика вероятность, что вы сможете найти и использовать уже готовые записи, и переложить их на свою модель. А если у вас уже имеется готовая модель человека (или человекоподобного существа) со скелетом, то этап работы с MakeHuman можно будет пропустить (хотя я в любом случае рекомендую вам познакомиться с этой замечательной программой).

Полученную анимацию можно будет использовать на ваше усмотрение — для создания мультфильмов (полный цикл можно делать прямо в Blender), разработки игр (привет, Unity, Unreal и прочие игровые движки) и любых других целей.

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

Оборудование для захвата движения (того самого Motion Capture)

Использование HTC Vive для Motion Capture

Собственно, почему HTC Vive?
А потому, что на сегодняшний день из бюджетных вариантов (умещающихся в одну-две тысячи долларов) это самый адекватный и точный. Были и другие попытки использования простых средств для Mocap-а. Из простейших вариантов для этих целей пытались приспособить обычные веб-камеры, но точность результатов оставляла желать лучшего. Из более поздних и более точных — использовали Kinect. Но с появлением и относительно широким распространением шлемов виртуальной реальности (и дополнительных аксессуаров к ним) стало ясно, что это решение гораздо более точное и удобное. А среди шлемов виртуальной реальности на сегодняшний день HTC Vive пожалуй является самым распространенным и удобным решением (во многом благодаря сотрудничеству с Valve и интеграцией со Steam).

Так почему же VR-оборудование (в нашем случае HTC Vive) так хорошо подходит для записи Mocap-ов? А потому, что сам шлем, идущие в комплекте к нему контроллеры, а также приобретаемые отдельно дополнительные трекеры способны передавать свое точное положение в пространстве, включая углы наклона. Правда, шлем с проводом использовать для мокапа не очень удобно. Поэтому избавимся от него, надев один из трекеров прямо на голову. Также взяв в каждую руку по контроллеру и навесив на себя в нескольких точках дополнительные трекеры, мы фактически получаем простой вариант того самого голливудского костюма для захвата движения.

Причем поскольку мы определяем не только расположение оборудования в пространстве, но и углы наклона, то многие промежуточные точки (например, локти и колени) могут вычисляться автоматически. Таким образом мы можем сэкономить на количестве используемых трекеров (каждый из них стоит $150).

Кстати, о трекерах. Принятым (и во многих случаях достаточным) минимумом дополнительных трекеров считается 4. Именно такое количество я буду использовать в примерах. Один из них мы навесим на голову (на лоб), а оставшиеся три закрепим на ступнях и поясе, ну и в руки возьмем по контроллеру. Все, этого количества достаточно, чтобы достичь очень приличных результатов. Подробности об этом будут в описании софта.

Софт для захвата движения

Итак, поскольку мы не претендуем на голливудский размах и решили (пока?) отказаться от милионных затрат на специализированное оборудование, то будем рассматривать только варианты программ, которые обеспечивают запись движений при помощи HTC Vive. Забегая вперед, сразу скажу, что собственно для записи движений я использовал программу IKinema Orion, но перед тем, как перейти к ее описанию, расскажу еще про несколько вариантов.

Vive Setup и Steam VR

Разумеется, до того как переходить к работе, нужно настроить оборудование. В первую очередь нужно установить софт от HTC (Vive Setup) и настроить работу баз, шлема и контроллеров.

Также не помешает установить Steam VR. Это софт от Valve для работы с VR-приложениями (играми и не только). Отношения к Mocap-у он не имеет, но я все равно рекомендую установить его для настройки и тестирования оборудования. Кстати, в Steam есть немало бесплатных VR приложений, которые позволят вам провести время весело (игры) и с пользой (графика, скульптинг). Но сейчас не об этом.

Motion Capture в Blender

Конечно, раз уж мы работаем в Blender, то идеальным вариантом был бы захват движения прямо из него, без использования стороннего софта. Но, к сожалению, рабочих решений мне пока найти не удалось. Если вам удастся — пожалуйста, напишите об этом в комментариях, буду очень благодарен (и дополню статью).

Причем технически такая возможность явно есть, просто не нашлось пока умельца, у которого возникло бы желание написать под Blender аддон, заточенный именно под захват движения при помощи VR-шлемов типа Vive. Аддоны для Blender пишутся на Python, и если вы владеете этим языком — можете взяться за написание такого аддона, очень многие вам скажут спасибо.

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

Ну а за неимением встроенных в Blender средств захвата движения приходится пока искать сторонний софт для этих целей (с последующим переносом записанных движений в Blender при помощи соответствующего аддона, но об этом позже).

Motion Capture в Unity 3D

Зато к игровым движкам аддоны написаны. Например, вот один из таких аддонов для Unity (аж от самой команды HTC). Он бесплатен, у меня получилось установить его (на бесплатную версию Unity) и потестировать. Как минимум, работает в режиме реального времени. Я не стал подробно разбираться с записью анимации и возможностями ремаппинга, поскольку более простые варианты типа IKinema меня устраивают больше.

Motion Capture в Unreal Engine

Примерно то же самое можно сказать по поводу Mocap-плагина для Unreal. Он платный, ставить и тестировать его я не пробовал, но видел по поводу него много хвалебных отзывов в сети.

Motion Capture в Brekel OpenVR Recorder

Brekel OpenVR Recorder — программа (к сожалению, только под Windows), предназначенная специально для записи позиций трекеров HTC Vive. Программа платная, стоит 139 долларов, но есть триал-версия, позволяющая делать записи до 10 секунд. Довольно интересная и достойна внимания программа, экспортирует анимацию в FBX-формате, результаты открываются и нормально работают в Blender (проверено). Однако она не подходит для наших целей по одной причине — программа записывает только положение трекеров, никакого анимированного скелета на выходе мы не получаем.

Motion Capture в IKinema Orion

Ну и наконец победитель нашего хит-парада — IKinema Orion. К сожалению, Linux-версии тоже нет, и программа довольно дорогая, стоит 400 британских фунтов (около 530 американских долларов). Но есть двухнедельная полнофункциональная триал-версия, для моих целей этого оказалось достаточно.

На этом пока все. Если хотите продолжения — отписывайтесь пожалуйста в комментариях.