Motion Capture – своими руками

Motion Capture – своими руками



Всем привет, меня зовут Серго, живу я в городе Чебяркуля, катаюсь на байке, работаю в небольшом продакшене.


Хочу рассказать о реализации motion-capture без участия студии и прочего дорогостоящего оборудования. Данный способ получения движений занимает какоето время, но если всё грамотно один раз настроить, чтобы можно было потом быстро использовать в какихнибудь проектах, эта техника найдёт своё применение.


Рассмотрим пример лицевой анимации персонажа, что нам понадобится:

  1. Камеры,  - будет очень неплохо, если у Вас под рукой 2 или более камеры, но в этом примере мы обойдёмся одной, я использовал встроенную веб-камеру в ноутбук;
  2. Зеркала, 2шт – они и заменят нам недостающие камеры;
  3. Маркеры - можно использовать кусочки липкой ленты, но они бликует на свете и плохо отлипают от кожи или, же наоборот хорошо прилипают не туда куда надо (проверено автором :), будем использовать синий фломастер (маркер), синий потому, что его будет хорошо видно на коже;
  4. Свет, - важно осветить актёра равномерно со всех сторон съёмки, будем использовать настольную лампу;
  5. Актёр - я снимал сам-себя почти без посторонней помощи (;
  6. И наконец программа, без которой нам не обойтись - 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 потом выделяем наши точки справа, потом кнопку "<<" и Close

Выбираем вновь камеру Center в списке слева и жмём в меню Camera - Solve Camera... или ctrl-F7, немного ждём наблюдая за непонятным процессом.

Всё! Мы получили координаты всех наших маркеров и камер в 3д, что с ними делать уже плод вашего воображения, задачу можно считать решенной!

А всё-даки, что делать дальше? Дальше экспортим всё это добро в ваш любимый пакет 3д графики, в моём случае 3dsmax9, ищем слева пункт Camera Exports..., правой на нём! - New, сохраняем в формате 3DS max script (*.ms). запускаем макс, в меню жмём MAXScript - Run Script... и.. дабл-клик по ранее сохраненному .ms

Встаем из-за стола, кланяемся говоря "О спасибо! великий пээфтрэк!", садимся, закрываем его, больше он нам не понадобится

Далее я не буду вдаваться в подробности макса, просто расскажу мой принцип привязки точек к модели головы

Начнём с подгонке нашей конструкции точек под модель головы, я делал это так: немного увеличил размер всей конструкции, немного повернул её и придвинул к лицу модели так, чтобы точки почти лежали на поверхности. Тут могут возникнуть несколько сложностей, идеально было бы начать с кадра в котором лицо актёра симметрично и не выражает никаких эмоций и подгонять всё под него, но если по каким-то причинам такой кадр отсутствует его нужно будет создать, можно условно назвать его Reset Pose. Чем аккуратней будет проделана эта часть, тем лучше будет смотреться конечная анимация.

Теперь создадим риг для лица, в нашем случае он будет состоять из:

  1. Группы костей состоящих из пары позвонков и большой кости которая будет служить головой, делаем для неё IK контролер по всей длине и привязываем его к точке лба;
  2. Группы костей для губ, в которой будет 8 IK контроллеров, аттачим их к нашим точкам губ соответственно;
  3. Кость для подбородка, также делаем ей IK контроллер и аттачим его к точке подбородка.

Я использовал сцену примера, из поставки макса, и немного изменил её.

Теперь кидаем на нашу модель модификатор skin, добавляем в него наши кости и точки щёк, правим развесовку, нажимаем плэй и наслаждаемся проделанной работой (:

ссылка на ролик подлинее

766 0 850 130
43
2007-12-11
Отличный урок!!!
2007-12-11
Руль! Маладца 5/5
2007-12-11
Гениально!!! Дайте ему 9 тысяч)))
2007-12-11
Черт мою дею стырили!=) я хател так же, ток вместо PFTRACK использовають боуджоу. Но ниче отличный урок получился!пипец, это вы представляете какие возможности появились?Автор респект!5\5...
2007-12-11
точно пригодиться! 5/5
2007-12-11
Вот, что творят наши ребята когда с деньгами туго, 5/5
2007-12-11
а вот на большом видео он пару раз моргает:))) а актер нет:))) это уже после делалось???
2007-12-12
[b]SirWalrus[/b] да, потом канешн.
2007-12-12
Вот это да! Да эт можно ого-го! ваще.... в закладки! Просто суперский результат используя такие средства! На приз зеркала закупишь? =) интересно,а можно подобным методом при помощи больших зеркал сделать анимацию полностью,т.е. анимацию (например:поворот вокруг себя) реально осилить таким девайсом?? Или всё таки если точка скроется из видимого поля,то уже никак? Было бы вообще супер пусть там при помощи 4-х камер даже.. вобщем 5/5 !
2007-12-12
За зеркала 5\5.
2007-12-12
Отлично!!!5/5)))
2007-12-12
Молодчага! Лови мои пятёрки!
2007-12-12
Ещё б дал ссылку на "где слить" PFTrack вообще б было супер!!!
2007-12-12
Поговорим об ограничениях :-) Технология сама по себе предназначенная для локальной анимации лица.Двигать головой нельзя, поворачивать ее тоже. Может кто помнит был такой плагин на макс FaceStation. Он тоже привязывался к анимации лица.Я баловался, он в реальном времени определил положение носа глаз и губ.( плаг их старался распознать) Но плагин умер, вернее он больше не обновлялся... Современные системы проецируют сетку на лицо, а потом распознают деформацию этой сетки.
2007-12-12
в ПФ трэке можно тоже сетку наложить, но не реалтайм (:
2007-12-12
Полный отстой, шутка... 5/5
2007-12-12
Очень интересно!) 5/5
2007-12-12
5/5! Молодца!!! Идея давно бродит в народе, но чтоб ее кто-то еще кроме нас на коленке сделал, первый раз прочитал! Кстати, интересный факт для тех, кто смотрел Беовульф: использовали эту же технологию с небольшими отличиями. Использовали 240 камер на сцену. И для определения направления взгляда со всех сторон от глаз приклеивали электрические датчики, которые "по степени напряжения глазных мышц определяли его положение".
2007-12-12
Ребята ! Как полезно !!! Этож просто супер !! Автору респект 5+5 = 4 без капли сожаления , дал бы больше но ...
2007-12-12
5/5 Круть!
2007-12-13
Молодца!
2007-12-13
2 Серго: Только обрати внимание - на лице НЕТ таких точек которые бы оставались неподвижными при Любой мимике - попробуй нахмурится или удевленно поднять брови - скалп Скользит по верепу вперед и назад что ставит Крест на всем треке. =\ Сам пробовал. Единственная Точка - переносица(более менее стабильна). Но увы - этого мало. Так что.. приходится извращатся. ) Но все равно Молодец. Урок действительно весьма позновательный. И соображалка у тебя тож наместе. ;) Эт радует. А то все ищут волшебную кнопку, а зеркала поставить в жизни не додумаются. ;) Еще раз - Молодец!
2007-12-13
Долго потом точки оттерал ? =) 5/5
2007-12-14
Безусловно, автор заслуживает приза! Жаль я не могу проголосовать. Молодец!
2007-12-16
безусловно 5-5
2007-12-17
Нелюблю писать комментарии, но сейчас просто немогу удержатся. Урок - полная фигня! Тоже шучу, конечно :))). Урок шикарный! 5/5. Автору респект и спасибо! Идея давно уже висит в воздухе, Серго ее правильно реализовал и замечательно изложил, а заодно познакомил с хорошей программой. Обязательно пеши исчо.
2007-12-17
Отлично! 5/5
2007-12-19
Не ставил оценку пока не попробовал... А теперь 5/5 Зеркалами просто убил -))
2007-12-24
5/5 !.. :) почти никогда не голосовал... но тут блин... победы вообщем!
2007-12-24
Всем спасибо, замечания учту, планирую скоро ещё один урок про ПФтрак написать.. (:
2007-12-25
Замечательно! Надо попробовать
2007-12-27
что ж, и от мня 5/5... видимо твой урок полезнее моего :)
2008-01-25
а где можно скачать прогу? =(
2008-02-08
Супер счас тоже чтонить такое сделаю
2008-07-26
супер...
2008-11-10
жаль не могу проголосовать, просто замечательно!
2009-09-28
"Встаем в самое начало видео, вызываем контекстное меню трэкера (кликнем на нём правой кнопкой мыши) и выбираем пункт Track Forwards, наблюдаем как программа находит траекторию движения нашей метки." У меня нет варианта Track Forwards. PFTrack V5.0
2010-03-14
c зеркалами-то ловко придумано!
2010-07-21
[quote=Andrey3D] У меня нет варианта Track Forwards. PFTrack V5.0 [/quote] У меня тоже! Подскажите кто нибудь, а то теме сто лет уже! Проще денег накопить и накупить оборудование для Motion Trаcker в реальном времени, пока кто то ответит.
2010-10-10
а кто нибудь может рассказать как подробно подогнать и сделать конструкцию под поинты, а этот шаг опустили
2012-01-22
На форуме ненашёл темы где можно задать такой вопрос...Если кто знает в чём проблема и как исправить напишите пожалуйста [img]http://vkontakte.ru/album4172919_103854575?z=photo4172919_277216656%2Falbum4172919_103854575[/img]
2012-01-22
[img]http://imageshack.us/photo/my-images/29/11186430.jpg/[/img]
2012-03-15
Спасибо, действительно круто, меньше проблем с анимацией.
RENDER.RU