Уроки: Общие принципы

Мой дом - моя студия... для Motion - Capture

Здравствуйте!!!

Зовут меня Виктор Кулачкин, живу в г. Кишинёве.

CG для меня является давним увлечением, самое интересное, для меня, направление - Matchmoving. Вот мне захотелось поделиться полученными знаниями в этой области, для чего и был написан этот урок - «Мой дом - моя студия... для Motion - Capture»

В этом уроке я хочу рассказать, как можно сделать Motion - Capture, буквально, в домашних условиях. Для этого будет использована программа от REALVIZ, она создана именно для Motion - Capture, и называется Movimento. Программа с довольно обширными возможностями, может работать с большим количеством камер, при загрузке материала мы не утруждаем себя синхронизацией, установкой параметра Non - rigid Object (motion - capture) это всё активно изначально, а благодаря калибровке камер, последующий трэкинг маркеров не составляет особых проблем.

Для этого нам нужно 15 - 20 шт. шариков для настольного тенниса и 2 камеры, конечно лучше 4 или 8, но это уже сложно, а найти 2 камеры совсем не сложно, я снимал на любительские камеры Panasonic DX - 100.

Я обошёлся 18 шариками, вот что у меня получилось, крепил их с помощью липкой ленты.

Ставим две наши камеры, строгих условий здесь нет, потому что Movimento калибрует их для качественного трэкинга. Единственное условие - камеры нужно разместить справа и слева от актёра... И так нажимаем REC и наш актёр начинает двигаться, учитывая то, что у нас всего 2 камеры, желательно, что бы маркеры (шарики) не выходили из зоны видимости объективов, но если это произойдёт ничего страшного, как решить эту проблему будет рассказано дальше. Записываем движения, видео переносим в компьютер. Не называйте папки и файлы кириллицей, программа просто не увидит.

В After Affects синхронизируем два наших видео, для лучшего результата делаем из цветной картинки чёрно-белую, затем считаем в последовательность кадров, я сделал JPG

Полученный материал импортируем в Movimento для начала можно импортировать небольшую часть материала, потому что первым нашим действием будет калибровка камер, это заменяет внесение данных о камерах, в данном случае понадобилось 50 кадров из 400, выбираем 25 кадров в секунду и экспортируем материал с обеих камер.

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

Далее идём в панель и находим MotionTracks, калибровка у нас будет именно по движению актёра, по умолчанию в MotionTrack установлено значение Non Rigid Motion, как раз то, что нам необходимо. Жмём правую кнопку и видим New Track.

Устанавливаем наш Track на маркер, удобство программы в том, что при установке Track зумируется зона поиска и не составляет труда установить Track в центр маркера, это видно слева, потом жмём F3 и ждём пока пройдёт трэкинг, контролировать его мы так же будем в увеличенной зоне поиска Track, находящейся справа.

Это необходимо проделать со всеми маркерами и на каждом из нашего материала. Устанавливаем Track слева, делаем трэкинг и тот же самый Track устанавливаем на том же маркере, но уже справа.

После того, как проделан трэкинг всех маркеров, самое время нажать F9.

Если всё прошло хорошо, то мы увидим зелёные точки на наших маркерах, несколько жёлтых (результат похуже) тоже допустимы, а вот красные говорят о неправильном трэкинге. Таким образом, мы откалибровали наши камеры, полпути уже пройдено. Можно проверить качество калибровки, нажмём на любую точку в одном из окон, а в другом увидим зелёную полосу, которая проходит по центру того же маркера, только с другой камеры.

Если всё прошло хорошо, мы можем экспортировать полученные данные. Даём имя файлу и сохраняем.

Сделаю отступление, программа Movimento позволяет произвести автоматическую калибровку, для этого нам понадобится снять на наши камеры несколько маркеров, я просто прикрепил шарики к палке. Снял на камеру, импортировал в программу обе последовательности (это мы проделывали при ручной калибровке) причём хватает 15 - 20 кадров.

Далее жмём F10

В появившемся окне устанавливаем параметры маркеров, в данном случае они белые, поэтому отмечаем Bright Blob, а Solve for Camera (F9) тоже пройдёт автоматически.

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

Так же полученные данные от автокалибровки, мы экспортируем, как описано выше.

Когда камеры откалиброваны и данные экспортированы, самое время приступить непосредственно к Motion - Capture.

Не выходя из программы, создаём новый проект File=>New и импортируем, только что сохранённый файл, это наша калибровка.

Мы видим как вверху Calibration поменялась на Motion, это и есть сама процедура Motion - Capture.

Проделываем ту же операцию, что и при ручной калибровке, жмём New Track, обратите внимание, у нас появилось 2 группы Motion Tracks, результат калибровки находится в нижней группе, а вот  Motion - Capture мы начнем в другой группе, та что сверху.

Как только Track будет установлен на маркер в одном из окон, мы сразу увидим зелёную полосу, проходящую по центру того же маркера, но в другом окне, значит Motion - Capture пройдёт без ошибок, для этого нам и нужна была калибровка камер.

Повторяем уже знакомую операцию, устанавливаем Track на наш маркер, жмём F3 и производим трэкинг каждого маркера. Но вот один из них вышел из поля зрения камеры, той, что слева, при этом Track может перескочить на соседний маркер или начнёт «ездить» по экрану, в поисках своего маркера. Я намеренно снял так, что бы маркер исчез, для того, что бы рассказать о решении этой проблемы. Вы можете сразу снять движение так, что бы все маркеры были видны на протяжении всего времени.

В проблемной зоне необходимо остановить процесс трэкинга, нажав Esc, на последнем кадре, где маркер ещё виден, нажимаем на наш Track и устанавливаем ему End, на этом кадре он закончит трэкинг, после этого идём к кадру, где маркер опять появляется, нажимаем на него и наш Track снова установится на маркере, затем выбираем Begin, с этого кадра трэкинг продолжится. Внизу мы видим, что полоса трэкинга прерывается и возобновляется. То, что нашего Track не будет в течении 5 - 7 кадров - никак не скажется на качестве Motion - Capture, а вот проблем с беспорядочно двигающейся точкой, мы избежим.

После того, как будет произведён трэкинг всех маркеров, снова жмём F9 и получаем 3D данные о движении наших маркеров.

После этого мы видим наши точки зелёного цвета, значит всё прошло отлично.

Хорошо бы ещё сделать трэкинг нескольких статичных точек, в данном случае я не расставлял маркеры, а просто нашёл белые точки на полу. New Track необходимо создать в Static Tracks, эта группа находится прямо под Motion Tracks. Как обычно жмём New Track, устанавливаем его на маркер, который находится на полу, жмём F3 и это тоже нужно сделать как в правом, так и в левом окнах и снова жмём F9.Отмечаем одну из созданных статических точек и жмём Set Ground Plane, это будет наша условная поверхность.

Сейчас соединим наши точки линиями, так будет наглядней выглядеть наш результат, создаём New Relation в группе Point Relation, а справа появятся 2 колонки, одна пустая, а в другой все наши Track(и) выбираем по номерам, последовательность точек и с помощью стрелочки переносим их в пустую колонку, затем вверху ставим значение Line.

Всё, можно экспортировать данные Motion - Capture в 3D пакет, я использовал 3D Max, значит и сохранять мы будем в формат .ms

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

Запускаем 3D Max, далее открываем наш скрипт. Видим наши точки, если запустить Play мы увидим, как наши точки двигаются.

Далее используем полученный результат на своё усмотрение, я не силён в максе, а уж тем более в создании системы Bones, единственное, что мне удалось выяснить, это то, что Spline можно использовать в качестве костей, я соединил наши точки Spline применил модификатор Spline IK Control, далее Create Helpers, а полученные Helpers просто привязал к нашим точкам. Теперь наши Spline двигаются так же, как и актёр.

Вот и всё мы получили то, над чем трудились целый день.

Я думаю мой урок поможет в освоении такого интересного направления в CG, как Motion - Capture, мне хотелось передать всё подробно, при этом не писать много текста. Конечно двух камер и 18 - ти маркеров маловато, но для общего представления о Motion - Capture, этого вполне достаточно. В любом случае даже в таких условиях я успешно произвёл Motion - Capture на  20 - ти секундах видео, а это довольно немало.

В следующем уроке будет рассказано как сделать Motion - Capture с 4 - х камер, при этом три камеры Fixed, а четвёртая Free т.е. двигающаяся камера. Конечно же количество маркеров(шариков) тоже будет гораздо больше.

Желаю успехов в освоении Motion - Capture.

124860 Автор:
Актуальность: 838
Качество: 837
Суммарный балл: 1675
Выбор Публики
Голосов: 194 оценки

Отзывы посетителей:

аватар
 
Jigit 1 0
упс!!! в место експорта написал импорт.
аватар
 
Jigit 1 0
Super! mallok! Спасибо за урок. Не обращяйте внивание на безосновонную критику, я довно интересуюсь MoCap-ом и знаю что говорю.
Я уже пробовал данную прогу и прекрасно знаю а чом реч, у меня проста нет двух камер по этому работал только с туториалом. Насчот перекрытия маркеров скажу вот что, веть в этой проге (Movemento) есть кнопка "Interpolate Track" которая соединяет розрыв, и всё, проблема решена.
А что косается импорта то там есть импорт fbx а bvh нету, придётся самому привязывать или к Bones или Character Studio или ка показал автор этого урока к сплайнам. Да кстати Viktor вы немоглибы выслать мне экспортированный файл .ms я попробую решить проблему с привязкой в 3D max.
Ещё раз большое спасиба за урок, вы ответили на многие вопросы возникшие у меня, которые без практики мнебы не решить.
studio.emil@gmail.com
аватар
 
Виктор Кулачкин 322 0
Paul_Winex там в пропущеных кадрах ничего не будет,т.е. точка пропадает,но это не влияет на скилет,на GIF видно как одна нога уходит за другую,а "кости" двигаются как нужно,В случае если этого не сделать,трэк будет искать свой маркер и начнёт беспорядочно двигаться по экрану.

Bogdan Francishko материал уже снят,с поворотом актёра,уже начал трудиться над уроком,но там работы побольше,поэтому будет не скоро,думаю пару недель надо будет повозиться.

Rinocrosser я больше скажу,это вообще не имеет никакого смысла,ну вообще никакого,кто же в квартире будет мокапить для серьёзных работ,а что касается следующего,обещаного,урока,то уверяю тебя он не будет интересней,а даже наоборот намного скучнее и больше по количеству текста и картинок,так что твои надежды не оправдаются.
аватар
 
Paul_Winex 126 0
Долго я соображал, чувствовал, но не мог понять как сказать. Действительно, шарики не имеют перспективы при поворотах. А кости можно привязать к ним в таком же отношении как и на человеке, то есть как бы не в самой кости а там же где и на актере. Ну это для тех кто спрашивал о пригодности такой постановки.
Теперь вопрос, требующий пояснений тем, кто не может в данный момент эксперементировать непосредственно с софтом.
Цитирую:

Цитирую:"То, что нашего Track не будет в течении 5 - 7 кадров - никак не скажется на качестве Motion - Capture"


а что же тогда там остается? как заполняются те кадры??? Ну не знаю как точно описать, думаю Вы поняли.
аватар
 
Paul_Winex 126 0
Да, если можно, поясните про подстановку фона. только не забудьте!!! Хоть это к трекингу и не очень относится, но ядумаю Вы сможете подкорректировать тему следующего урока давая зеленый свет несколько бОльшим темам чем предполагали ранее. Хотя бы приложением к уроку в двух словах, ПЛЗ!!!
аватар
 
Dr.One 9 0
Классный урок,куплю камеры,буду пробовать. :)

PS: У меня вопрос: а если у меня нет кота,то наверное ничего не получится,кот обязательно нужен? :))

PPS: Прикольный кот! :)
аватар
 
Виктор Кулачкин 322 0
Paul_Winex ответить на все вопросы словами сложно,необходимо наглядно показать,но на некоторые вопросы отвечу.В Boujou мокап не предусмотрен,а вот PFTRack и Mathmover PRO обладают такой функцией,но есть там одно НО,в двух словах этого не опишешь,если коротко,то там невозможно сделать трэкинг маркеров,которые не видны в одной из камер,точнее трэкинг пройдёт,а вот при Solve Camera,программа просто выдаст сообщение об ошибке,в общем трэкинг необходим ВСЕХ маркеров со ВСЕХ камер,а если в правой камере не видны точки слева и наоборот,что делать тогда ? вот на этот и многие другие вопросы я попробую подробно ответить в следующем(щих) уроках,т.е. наглядно.
Что касается использования маркеров,конечно лучше шарики,в отличии от плоских маркеров,шарики не уходят в перспективу,как бы выразится... не становятся в виде узких полосочек (в виде сплюснутого овала) и Track не сбивается,но при захвате мимики вполне хватает нарисованных точек.
По поводу фона за ногой,тоже попробую ответить на этот вопрос на практике.
аватар
 
Виктор Кулачкин 322 0
Игорь спасибо за отзыв,20 лет назад и подумать не могли,что будем жить в разных государствах и заниматься CG,привет горду Таганрогу
аватар
 
igornu 1 0
Витёк, молодца! Это очень интересно а главное подробно!!! Жду с нетерпением продолжения!
аватар
 
Paul_Winex 126 0
Конечно, урок для старта, так сказать. Будем ждать продолжения.
Теперь вопросы (что не удивительно)...

- Я полагаю что аналогичную работу может сделать другая аналогичная программа. Например PFTrack или Boujou. Я прав? Или Movimento заточен именно под такую работу?

- Во время калибровки на одной прямой, двигать этой прямой требуется? Ну например что бы отколибровать углы или расстояния до камер.

- Могу ли я вместо шариков просто обмотать ногу вокруг белой лентой чтобы маркер из этой ленты не скрывался за самой ногой? Или требуется именно круглая цель? Хотя такой метод и не обеспечит того что лента не перекроется другой ногой, а так же центр маркера, а в последствии хелпера, будет в разных местах.

- Совет\просьба: если получится, сделайте небольшое дополнение или отступление в следующем уроке о том, как сдлеать следующую картину: наматываем на руку\ногу пару шариков, трекаем их, переносим в Макс, делаем кибернитическую руку. В общем-то не сложно, но для меня всегда было загадкой, как такие вставки делают с отверстиями? Например 3D-рука состоит из одной тонкой трубки, как подсталяют на место оригинала фон??? И если про фон я как-то могу предположить, то про то как закрывают фон за рукой когда она попадает на самого актера?.... Еще видел такую штуку: дополнения в фильму "Я-робот". Там актеры одевались в зеленые костюмы и ходили по улице вместе с обычными людьми. Но в фильме эти зеленые человечки заменялись на роботов, которые в кадре занимали на много меньше места в силу того что они из металлоконструкций. Откуда берётся недостающий фон в отверстиях роботов? Если уж совсем уростить ворпос - как сделать дырку в человеке по средствам CG? То есть со вставкой туда фона. Откуда берется информация об изображении, которое перекрывает актер?
Могу предположить что оно снято отдельно от актера и потом идет обычный композинг, но сцена со съемками "Я-робот" это не объясняет. Там снято всё в один проход и зеленушек заменили потом на роботов.
(извените за вопрос не по теме, хотя и близко к ней)

- 2Михаил Куркубет. Результат мачмувинга, являющийся хелперами, не есть законченная анимация, на основе которой надо делать её часть. Это всего лишь Helpers, как бы опора для неё. То есть скелет может быть как угодно заанимирован, потом в процессе анимации он подводится к этим хелперам и просто привязывается к ним, как если бы это бы созданный Вами же Demmy. И этот хелпер может располагаться в том же месте скелета, в каком располагался шарик у актера. Тут может решиться вопрос с анатомией движений. А уж потом эту анимацию сохраняйте как Вам угодно.

SP. Урок хороший, заслуживает внимания. Но хочется всегда бОльшего раскрытия материала. Так сказать - исчерпывающего. Чего мы и ждем в следующем уроке!
аватар
 
Abdu 11 0
5/5
аватар
 
vet007 1 0
5 баллов!! :)
аватар
 
Gennadiy SF 20 0
спасибо за суперовый урок \давно искал подобную информацию
аватар
 
Михаил Куркубет 24 0
Очень хороший урок, сам всю жизнь не равнодушен к мэчмовингу. Все подробно и доступно, разжеваны моменты о которых в хелпах не пишут. В общем высший бал. Единственный небольшой недостаток это то что результат экспортирован в *.ms. Такой файлик не замесишь с другими движениями в миксере ну и остальные недостатки связанные с совместимостью и универсальностью форматов. Может быть в этом Мовименто есть форматы для экспорта более универсальные типа bhv или fbx ? Ну это уже вопрос к 3дэшным спецам. Если хорошенько подумать то и здесь можно что нить выкружить. :-)
аватар
 
delcon 6 0
Урок интересный и полезный.
DEATHLIFE а если ты узнаешь сколько стоят эти программы,тогда всё это не просто глупость,а бессмысленная глупость.
аватар
 
DEATHLIFE 1 0
по мойму это глупо
аватар
 
Виктор Кулачкин 322 0
Так я именно для пингпонга (настольный теннис) использовал,если прилепить мячики для большого тенниса,тогда колготки упадут,но даже ширики для пингпонга в большенстве жёлтые.

Александр Карабардин абсолютно верно,для хорошей анимации необходимо раставить маркеры обращаясь к анатомии,но в интернете не проблема найти образцы,в следующем уроке постараюсь сделать проект,который будет соответствовать всем требованиям,надеюсь получится.
аватар
 
Ямабуси 2 0
Спасибо за урок.
Имхо шарики для пинг-понга лучше.Белые и лёгкие ;)
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 2586 уникальных посетителей