Render.ru
Поддержать
Сохранить
Sergo Ovchinnikov
ПОДПИСАТЬСЯ
  • ПРЕДЛОЖИТЬ ПРОЕКТ
  • ДОБАВИТЬ В КОНТАКТЫ
1Записей
1Следят
0Читает
123 KЗаходов

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
Комментарии:43
по поступлениюВсе языкиТолько русский
30
0
Громов Игорь
11.12.2007 13:49
Отличный урок!!!
11
0
Руль! Маладца 5/5
33
0
АrchiZ
11.12.2007 15:45
Гениально!!! Дайте ему 9 тысяч)))
5
0
Alex Big
11.12.2007 17:38
Черт мою дею стырили!=) я хател так же, ток вместо PFTRACK использовають боуджоу. Но ниче отличный урок получился!пипец, это вы представляете какие возможности появились?Автор респект!5\5...
5
0
YO!
11.12.2007 18:55
точно пригодиться! 5/5
4
0
LEX_milliON
11.12.2007 20:27
Вот, что творят наши ребята когда с деньгами туго, 5/5
5
0
SirWalrus
11.12.2007 20:59
а вот на большом видео он пару раз моргает:))) а актер нет:))) это уже после делалось???
5
0
Alex Big
11.12.2007 21:29
[b]SirWalrus[/b] да, потом канешн.
19
0
Ozz
12.12.2007 3:56
Вот это да! Да эт можно ого-го! ваще.... в закладки! Просто суперский результат используя такие средства! На приз зеркала закупишь? =) интересно,а можно подобным методом при помощи больших зеркал сделать анимацию полностью,т.е. анимацию (например:поворот вокруг себя) реально осилить таким девайсом?? Или всё таки если точка скроется из видимого поля,то уже никак? Было бы вообще супер пусть там при помощи 4-х камер даже.. вобщем 5/5 !
26
0
За зеркала 5\5.
2
0
Шрэк74
12.12.2007 8:44
Отлично!!!5/5)))
11
0
Alexey Ost
12.12.2007 8:50
Молодчага! Лови мои пятёрки!
11
0
Alexey Ost
12.12.2007 8:56
Ещё б дал ссылку на "где слить" PFTrack вообще б было супер!!!
12
0
alexufo
12.12.2007 10:53
Поговорим об ограничениях :-) Технология сама по себе предназначенная для локальной анимации лица.Двигать головой нельзя, поворачивать ее тоже. Может кто помнит был такой плагин на макс FaceStation. Он тоже привязывался к анимации лица.Я баловался, он в реальном времени определил положение носа глаз и губ.( плаг их старался распознать) Но плагин умер, вернее он больше не обновлялся... Современные системы проецируют сетку на лицо, а потом распознают деформацию этой сетки.
5
0
Sergo Ovchinnikov
12.12.2007 11:01
в ПФ трэке можно тоже сетку наложить, но не реалтайм (:
55
0
White
12.12.2007 11:05
Полный отстой, шутка... 5/5
353
0
Очень интересно!) 5/5
2
0
Костя Маер
12.12.2007 12:10
5/5! Молодца!!! Идея давно бродит в народе, но чтоб ее кто-то еще кроме нас на коленке сделал, первый раз прочитал! Кстати, интересный факт для тех, кто смотрел Беовульф: использовали эту же технологию с небольшими отличиями. Использовали 240 камер на сцену. И для определения направления взгляда со всех сторон от глаз приклеивали электрические датчики, которые "по степени напряжения глазных мышц определяли его положение".
10
0
Levas
12.12.2007 16:04
Ребята ! Как полезно !!! Этож просто супер !! Автору респект 5+5 = 4 без капли сожаления , дал бы больше но ...
5
0
Werewolf3d
12.12.2007 20:56
5/5 Круть!
197
0
Shiva
12.12.2007 21:29
Молодца!
197
0
Shiva
12.12.2007 21:37
2 Серго: Только обрати внимание - на лице НЕТ таких точек которые бы оставались неподвижными при Любой мимике - попробуй нахмурится или удевленно поднять брови - скалп Скользит по верепу вперед и назад что ставит Крест на всем треке. =\ Сам пробовал. Единственная Точка - переносица(более менее стабильна). Но увы - этого мало. Так что.. приходится извращатся. ) Но все равно Молодец. Урок действительно весьма позновательный. И соображалка у тебя тож наместе. ;) Эт радует. А то все ищут волшебную кнопку, а зеркала поставить в жизни не додумаются. ;) Еще раз - Молодец!
87
0
RoNiNk
13.12.2007 0:18
Долго потом точки оттерал ? =) 5/5
11
0
Bayt
14.12.2007 18:07
Безусловно, автор заслуживает приза! Жаль я не могу проголосовать. Молодец!
11
0
Royal
16.12.2007 7:54
безусловно 5-5
7
0
SergTTL
17.12.2007 12:25
Нелюблю писать комментарии, но сейчас просто немогу удержатся. Урок - полная фигня! Тоже шучу, конечно :))). Урок шикарный! 5/5. Автору респект и спасибо! Идея давно уже висит в воздухе, Серго ее правильно реализовал и замечательно изложил, а заодно познакомил с хорошей программой. Обязательно пеши исчо.
35
0
Dance Macabre
17.12.2007 19:21
Отлично! 5/5
0
0
kilo1991
19.12.2007 11:44
Не ставил оценку пока не попробовал... А теперь 5/5 Зеркалами просто убил -))
41
0
МюФ
23.12.2007 22:19
5/5 !.. :) почти никогда не голосовал... но тут блин... победы вообщем!
5
0
Sergo Ovchinnikov
24.12.2007 5:14
Всем спасибо, замечания учту, планирую скоро ещё один урок про ПФтрак написать.. (:
11
0
Viger
25.12.2007 16:55
Замечательно! Надо попробовать
68
0
firetwister
27.12.2007 15:05
что ж, и от мня 5/5... видимо твой урок полезнее моего :)
12
0
Wardal
25.01.2008 11:57
а где можно скачать прогу? =(
53
0
9yma
08.02.2008 8:44
Супер счас тоже чтонить такое сделаю
2
0
N80
25.07.2008 20:09
супер...
54
0
RockSPb
10.11.2008 12:49
жаль не могу проголосовать, просто замечательно!
29
0
"Встаем в самое начало видео, вызываем контекстное меню трэкера (кликнем на нём правой кнопкой мыши) и выбираем пункт Track Forwards, наблюдаем как программа находит траекторию движения нашей метки." У меня нет варианта Track Forwards. PFTrack V5.0
18
0
c зеркалами-то ловко придумано!
15
0
Andrey3D У меня нет варианта Track Forwards. PFTrack V5.0
У меня тоже! Подскажите кто нибудь, а то теме сто лет уже! Проще денег накопить и накупить оборудование для Motion Trаcker в реальном времени, пока кто то ответит.
2
0
а кто нибудь может рассказать как подробно подогнать и сделать конструкцию под поинты, а этот шаг опустили
2
0
На форуме ненашёл темы где можно задать такой вопрос...Если кто знает в чём проблема и как исправить напишите пожалуйста [img]http://vkontakte.ru/album4172919_103854575?z=photo4172919_277216656%2Falbum4172919_103854575[/img]
2
0
[img]http://imageshack.us/photo/my-images/29/11186430.jpg/[/img]
2
0
Blit
15.03.2012 14:28
Спасибо, действительно круто, меньше проблем с анимацией.