- Digitrode
- цифровая электроника вычислительная техника встраиваемые системы
- Motion capture в домашних условиях на основе ESP8266 и MPU6050
- Как начать работать с Motion Capture
- Что это такое?
- Как это работает?
- Во сколько всё это обходится?
- Каковы противоположные доводы?
- Хотите попробовать?
- Motion Capture – своими руками
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Motion capture в домашних условиях на основе ESP8266 и MPU6050
Технология захвата движения (motion capture) все чаще используется в анимации, кинематографе и робототехнике. Профессиональные системы захвата движения, которые используются, например, в Голливуде, достаточно дорогие и непросты в эксплуатации. Но благодаря развитию и упрощению технологий систему захвата движения можно сделать своими руками. При этом она будет дешевой, поскольку она основана на популярном недорогом WiFi модуле ESP8266 и датчике MPU6050, включающем в себя акселерометр и гироскоп.
Проект Bewegungsfelder позволяет самостоятельно создать такую систему захвата движения. Она состоит из нескольких автономных инерциальных модулей, в состав которых входит датчик MPU6050 для регистрации движений, модуль ESP8266 для передачи данных и аккумулятор для питания этого автономного узла. Модуль ESP8266 считывает информацию с инерциального датчика MPU6050 с помощью интерфейса I2C. Данные, полученные от узлов, отправляются по беспроводному каналу на центральный сервер захвата движения. Приложение на сервере преобразует входные данные в скелетную анимацию, они визуализируются в режиме реального времени, а также сохраняются в памяти для дальнейшего использования. Поскольку датчиковые узлы являются полностью автономными, их можно с легкостью применять в отношении практически любой скелетной топологии, то есть их можно надеть на человека, кошку, робота или другой объект, движение которого нужно зарегистрировать.
Каждый датчик передает кватернион, содержащий информацию о текущей ориентации узла, а также необработанные данные об ускорении и угловой скорости. Протокол связи достаточно простой, и его легко реализовать на других микросхемах (в том числе на смартфонах).
В серверное приложение проекта Bewegungsfelder уже включена поддержка определения типов скелета, а также имеется функция импорта/экспорта файлов BVH для использования полученных данных в популярных 3D редакторах, таких как Maya или Blender.
Программная часть проекта выпущена с открытым исходным кодом и распространяется по лицензии MIT License. Прошивка для модуля ESP8266 и код для серверного приложения находятся в открытом доступе, и их можно скачать с репозитория GitHub.
С помощью этого проекта можно собрать действительно дешевую систему захвата движения, поскольку благодаря дешевым компонентам цена одного инерциального узла не превышает $5.
Источник
Как начать работать с Motion Capture
Закройте глаза и вернитесь… вернитесь в прошлое. Представьте Джа Джа Бинкса и «Полярный экспресс», подверженных эффекту «зловещей долины». Я знаю, что воспоминания не из приятных, но новые технологии (и захват движений – motion capture или сокращённо mocap – в их числе) могут быть… несколько странными в свои ранние годы. Теперь же забудем об этом и продвинемся вперёд – во времена, когда технология стала набирать обороты – от Голлума из «Властелина колец» до «Аватара» и Халка из «Мстителей». И про игры не забудем: в The Last of Us проделана самая впечатляющая работа с mocap-анимацией, а Electronic Arts использует её ещё с Madden NFL 94. Но что же представляет из себя данный метод и как он работает? Способен ли motion capture заменить живых актёров или оставить 3D-аниматоров без работы? Для ответа на эти вопросы мы отправимся на 100 лет назад.
Что это такое?
Вы, вероятно, представляете себе motion capture как актёров, скачущих в обтягивающей одежде с прикрепленными теннисными шариками. Но что же всё это значит? Проще говоря: авторы фильма или игры переносят все движения тела (и лица) актёра на анимированного персонажа. Участие компьютера в процессе по большому счёту и не требуется. В 1914 аниматор Макс Фляйшер (Max Fleischer) изобрёл «ротоскопию» – метод создания мультфильмов с помощью покадрового отслеживания действий актёров. Первым мультфильмом с ротоскопией в 1937 стала диснеевская «Белоснежка и семь гномов».
Даже при том, что аниматоры рисуют все движения персонажей от руки, они сравнивают картинку с игрой актёров на плёнке или даже глядя на себя в зеркало.
Ручное создание цифровой анимации называется анимацией по ключевым кадрам – при этом заполняются недостающие движения между «ключевыми» позами персонажа.
Для автоматизации процесса аниматоры обратились к motion capture. Исследователи биокинетики, например, Том Калверт (Tom Calvert) из Университета Саймона Фрейзера, открыли новые возможности с применением специальных костюмов. Одна компания создала устройство для захвата движений лиц и тела «Waldo» (на картинке выше), использующееся для управления аватаром нинтендовского Марио, общающимся с публикой на выставках. Между тем, Массачусетский технологический институт разработал свою «графическую марионетку» на основе LED – одну из первых технологий оптического отслеживания движений. Одним из первых её применений стал ужасный видеоклип Dozo от фирмы-первопроходчика Kleiser-Walczak (на видео ниже).
Поначалу захват движений был исключительно студийным процессом и актёры работали в пустой комнате, окружённой специальными камерами и лампами. «Аватар» явил нам «performance capture» («захват актёрской игры»), при котором совместно работали несколько актёров и захватывались выражения их лиц и движения губ. В играх наподобие L.A. Noire степень реализма также значительно повышается за счёт параллельного захвата движений лица и всего тела.
А создатели «Властелина колец» в своё время вынесли motion capture за пределы студии, что позволило Энди Серкису (Andy Serkis) взаимодействовать с другими актёрами в роли Голлума. В наши дни захват движений (в том числе и лица) прямо на съёмочной площадке стал нормой в производстве художественных фильмов с оцифрованными персонажами, как это видно ниже на примере съёмок картины «Планета обезьян: Революция» (да, тут у нас снова Серкис – он довольно популярен).
Как это работает?
Motion capture передаёт движения актёра персонажу, созданному на компьютере. Системы, которые для их отслеживания используют камеры (с маркерами или же без них), условно называют «оптическими», а замеряющие инерцию или механические движения – «не оптическими». В качестве примера вторых можно привести костюм захвата инерции XSens MVN, в котором работал Сет Роган (Seth Rogan) в роли инопланетянина Пола. Позже появились и другие системы, такие как оптический отслеживатель пальцев Leap Motion и браслет MYO, распознающий мышечную активность запястья и всей руки. Project Tango от Google используется преимущественно для построения виртуальных трёхмерных пространств, но благодаря Kinect-подобному сенсору обладает потенциалом и для захвата движений.
Оптические системы замеряют положение позиционных маркеров или отличительных элементов и на основании полученных данных создают приблизительную трёхмерную модель движений актёра. Активные системы используют горящие или мерцающие лампочки, а пассивные работают с инертными объектами, вроде белых шариков или просто точек, нанесённых краской (так часто делают при захвате движений лица). В безмаркерных системах используются алгоритмы распознавания, которые отслеживают положение каких-либо отличительных элементов – например, одежда актёра или его нос. Захваченные движения переносятся на виртуальный «скелет» анимированного персонажа такими программами, как MotionBuilder от Autodesk. Что в результате? Компьютерные персонажи с движениями живых актёров.
Сложно предугадать, как живые движения будут выглядеть на виртуальном персонаже, так что нередко используется придуманная Джеймсом Кэмероном (James Cameron) для «Аватара» так называемая «виртуальная кинематография». По сути, она в реальном времени отображает движения актёра на его персонаже – в виртуальной среде – так что режиссёр может сразу наблюдать сырую версию «актёрской игры». Такой процесс требует интенсивных вычислений, но в наши дни процессоры и видеокарты уже достаточно мощные, чтобы справиться с ними. Приведённый ниже ролик от Weta Digital наглядно демонстрирует процесс на примере фильма «Хоббит: Пустошь Смауга».
Во сколько всё это обходится?
Всё, что связано с 3D-анимацией, дешёвым не назовёшь, и захват движений не исключение. Но при этом все цифровые технологии со временем становятся дешевле. Если рассматривать самые простые варианты, то для дома мы с вами можем позволить себе безмаркерную систему отслеживания – будь то Kinect или iPi Motion Capture – приблизительно за $295. На противоположном краю ценового диапазона можно обнаружить новую студию EA, Capture Lab (на фото ниже), покрывающую 1600 квадратных метров и оснащённую новейшим программным обеспечением Vicon Blade и 132 камерами Vicon. Мы не знаем, сколько именно это стоит, но двухкамерная система Vicon вместе с одной лицензией на ПО обходится в $12500 (держите в уме, что вам ещё понадобится софт вроде MotionBuilder для переноса захваченных данных на персонажа – а это ещё плюс $4200 за копию для каждого сотрудника). Несмотря на такие цифры, захват движений обходится примерно в четверть или в половину затрат, необходимых на анимацию по ключевым кадрам, а результат выходит более реалистичным.
Каковы противоположные доводы?
Отношение к реалистичности? Хех. Многие люди попросту ненавидят motion capture. Если вы – один из них, то оцифрованные персонажи не заменят вам классический стиль Nintendo или мультфильмы с ручной рисовкой старой школы – «Унесённые призраками» или «Looney Tunes». Светила анимации в лице Чака Джонса (Chuck Jones) и Хаяо Миядзаки (Hayao Miyazaki) вкладывают свою душу – и множество часов ручного анимирования – в создание запоминающихся персонажей. Хотя исполнение Серкиса и послужило прочной основой для шизофреничного Голлума, персонаж ещё долго дорабатывался аниматорами. Впрочем, Серкис забрал все лавры себе, заявив, что аниматоры просто накладывают «цифровой макияж».
Для продюсеров motion capture может выглядеть заманчивым способом сэкономить. Но захваченные данные не всегда можно сразу же пускать в ход – в большинстве случаев им предстоит пройти значительную (и сложную) обработку. К тому же итоговый результат может не совпадать с изначальным представлением продюсера. Анимация близка к натуральной, но всё же не полностью реалистичная, так что есть риск оттолкнуть зрителя «зловещей долиной».
Но всё же, для технологии захвата движений найдётся применение. Современные игры требуют продвинутой анимации для повышения степени реализма. Такие персонажи, как Голлум, Дэйви Джонс и Смауг уже практически стали классикой, отчасти благодаря актёрам, вдохнувшим в них жизнь. В этом и суть захвата движений, не так ли? Лучший способ создать запоминающегося компьютерного персонажа – запоминающаяся актёрская игра талантливых людей.
Хотите попробовать?
Подробнее про типы систем захвата движений и оборудование можно прочитать в переводе книги «Choosing a real-time performance capture system». Имея в запасе пару тысяч долларов стоит присмотреться к iClone Motion LIVE, который работает с Leap Motion, Faceware и костюмами захвата движений Perception Neuron, OptiTrack, Xsens.
Желаете попробовать себя в 3D-анимации/motion capture в домашних условиях? Есть масса бесплатных возможностей! Autodesk предлагает бесплатно и без ограничений использовать большинство своих продуктов в течение 30 дней (студентам – 3 года) – начать стоит с MotionBuilder и Maya или 3DS Max. Также у Autodesk есть много обучающих руководств и советов в разделе Area. Если у вас под рукой найдётся пара камер Sony PS Eye или Kinect, можете побаловаться с бесплатной пробной версией iPi Soft. Если вы хотите пропустить процесс захвата и поэкспериментировать с уже готовыми файлами движений, у Университета Карнеги-Меллон их полным-полно здесь. Если вас просто заинтересовала данная тема, можете поискать информацию на сайтах, посвящённых цифровым эффектам и игровой тематике.
Источник
Motion Capture – своими руками
Всем привет, меня зовут Серго, живу я в городе Чебяркуля, катаюсь на байке, работаю в небольшом продакшене.
Хочу рассказать о реализации motion-capture без участия студии и прочего дорогостоящего оборудования. Данный способ получения движений занимает какоето время, но если всё грамотно один раз настроить, чтобы можно было потом быстро использовать в какихнибудь проектах, эта техника найдёт своё применение.
Рассмотрим пример лицевой анимации персонажа, что нам понадобится:
- Камеры, — будет очень неплохо, если у Вас под рукой 2 или более камеры, но в этом примере мы обойдёмся одной, я использовал встроенную веб-камеру в ноутбук;
- Зеркала, 2шт – они и заменят нам недостающие камеры;
- Маркеры — можно использовать кусочки липкой ленты, но они бликует на свете и плохо отлипают от кожи или, же наоборот хорошо прилипают не туда куда надо (проверено автором :), будем использовать синий фломастер (маркер), синий потому, что его будет хорошо видно на коже;
- Свет, — важно осветить актёра равномерно со всех сторон съёмки, будем использовать настольную лампу;
- Актёр — я снимал сам-себя почти без посторонней помощи (;
- И наконец программа, без которой нам не обойтись — PFTrack
И так начнём!
Организовываем съёмочную площадку — установим камеру на небольшом расстоянии от лица актёра, далее установим зеркала так, чтобы в видоискателе было хорошо видно лицо актёра и его отражения, примерно вот так:
Вид сверху нашей студии будет выглядеть так:
Небольшое отступление, важно чтобы соблюдалось равенство: Z = A + B = X + Y, где Z — фокусное расстояние нашей одинокой камеры, а A+B и X+Y — фэйковые фокусные расстояния двух других камер соответственно. Но на самом деле равенство выполнятся не будет, Z будет всегда меньше, что приведёт к небольшой погрешности в виде немного углублённой формы лица в бедующем, но это нестрашно (: вот такая вот геометрия.
Далее займёмся гримом нашего актёра, посмотрим в интернете как работают наши коллеги, и возьмем нечто среднее, я сделал 8 точек вокруг рта, по три на щеках, ну и ещё несколько на лбу и на носу, обратим внимание, что при любом движение человеческой мимики точки носа и лба остаются неподвижными относительно друг друга, это нам поможет в дальнейшем.
Мотор!
Произносим заранее подготовленную речь, ну или что-нибудь в духе «Превед, я креведко!», стоп. Смотрим чего у нас там отснялось, если всё нормально, все точки отчетливо видны и не уходят за пределы видоискателя идём дальше.
Загружаем отснятый материал в какой-нибудь композер, я использовал After Effects, режим кадр на три части, и сохраняем каждую в отдельную секвенцию предварительно отцентровав и флипнувпо горизонтали видео из зеркал, можно ещё немного поиграть с шарпеном и цветом. Для удобства назовём их center.avi, left.avi и right.avi
Переходим в PFTrack.
PFTrack — позволяет реализовывать различные задачи по трэкингу и нахождению движения камеры, мы же в данном уроке коснёмся только задач связанных с motion capture.
Создаём новый проект File — New Project, смотрим, что тут есть интересного.
Интерфейс программы интуитивно понятен, я разобрался со всем с первого раза непребегая к help
Жмём кнопку Import Footage, в появившемся окне выбираем наши центральную камеру center.avi, жмём load. Видим, что имя камеры автоматически поменялось на center, далее заходим в свойства нашей камеры — Camera — Camera Parameters или «ctrl+p» на клавиатуре.
Меняем тип камеры на Motion Capture, а также указываем, что фокусное расстояние мо время съёмки неменялось и нам неизвестно.
Жмём close. Обратим внимание, что ранее неактивная кнопка Import Footage, снова стала активной. Добавляем оставшиеся сиквенции left.avi и right.avi.
Теперь нужно синхронизировать все наши сиквенции, на самом деле нам этого делать ненужно, потому что снимали всё одной камерой, просто проверим, что все камеры стоят на начале и нажмём кнопку Sync
можно сильно упростить себе жизнь, если выставить окошки камер так, чтобы можно было всё сразу отслеживать, воспользуемся кнопками меню New Window и Tile Window Layout.
Дальше начинается самое интересное. (: Чтобы получить трёхмерные координаты наших маркеров, сначала нужно получить их двухмерные координаты на каждой камере, для этого воспользуемся трэкингом.
Смотрим на нашу центральную камеру, начнём с неё, потому-что на ней отчётливо видны все маркеры на протяжении всего видео. В PFtracke существует два типа 2d трэкеров: автоматические — Auto Features и пользовательские — User Features, мы воспользуемся вторыми, они позволяют точнее контролировать нужные нам области. И так, нажмём ctrl-F3 или выберем в меню Tracking — New User Features и выберем наш центральный маркер на лбу, раздвинем области трэкера как показано на рисунке, назовём его lob_c
Встаем в самое начало видео, вызываем контекстное меню трэкера (кликнем на нём правой кнопкой мыши) и выбираем пункт Track Forwards, наблюдаем как программа находит траекторию движения нашей метки.
В процессе трэкинга программа может выдавать ошибки, это нестрашно. Они могут быть вызваны несколькими причинами, восновном неправильно настроенной выдержкой из-за плохой освещённости, как это было с моей веб камерой. Решить эту проблему можно покрутив параметры в меню Trackig — Tracking parameters. либо использовать больше света при съёмках и более лучшую камеру, надеюсь, что у Вас таких проблем невозникнет (:
Далее нужно повторить все эти действия с каждым маркером, т.е. встаём на начало видео, заново нажимаем ctrl-F3 выбираем следующий маркер, двигаем ограничители трэкера, жмём Track Forwards. Советую называть трэкеры так чтобы было понятно чему она соответствует, например я следовал такому принципу: eye_L, eye — в переводе Глаз, _L — слева, всё это пригодится в дальнейшем.
Далее нам нужно сделать трэкинг всех этих же маркеров, но уже в другой камере. Для этого встаём в начало видео, выбираем какой-нибудь созданный нами трэкер в списке слева, и указываем его заново, но в уже в другом окне вида соответственно, также указываем его границы, и жмём Track Forwards. Проделываем эту операцию со всеми маркерами которые видны из этой камеры на всём промежутке времени, маркеры которые невидны, либо видны в начале видео, а потом невидны или наоборот- не трогаем. Потом всё тоже самое с последней камерой.
Итак мы имеем 2д координаты всех трэкеров со всех камер, теперь нам нужно преобразовать их в трёхмерные координаты, сделать это очень просто, основная работа позади (:
Чуть не забыл, для ускорения и точности дальнейшего просчёта необходимо указать неподвижные участки лица, выделяем точки носа и лба о которых было сказано выше, жмём Tracking — Constraints, в появившемся окне сначала нажимаем New потом выделяем наши точки справа, потом кнопку » 766 0 850 130
Источник