Мой дом - моя студия... для 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.