
Новости • Форум • Помощь • Поиск • Участники • Календарь • База |
Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
Страницы: (2) [1] 2 ( Перейти к первому непрочитанному сообщению ) | ![]() ![]() |
MAX Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 0 ![]() |
Motion Capture в домашних условиях В компьютерной графике используются два основных способа захвата движений (motion capture): магнитный и оптический. Каждый из них имеет свои достоинства и недостатки. (см. http://www.softimage.com/education/3D/tutorials/AnimatingCharacters/mocap/mocap96_i.htm ) При оптическом захвате движений объект снимается в инфракрасных лучах, специальными камерами с высокой скоростью затвора. В то же время существуют и программы, позволяющие работать с изображением, снятым обычными камерами (как, например, SIMI°Motion). В четвертой версии SOFTIMAGE|XSI появился новый оператор – Tracking, что позволяет произвести оптический захват несложных движений даже в домашних условиях с помощью обычных бытовых видеокамер. Никакого дополнительного программного обеспечения для этого не требуется, за исключением разве что программы для оцифровки видеосигнала. Рассмотренный способ позволяет также анимировать мимику лица и производить захват движений животных Для полноценного захвата движений объект должен быть снят как минимум с двух, или даже трех разных точек. Для эксперимента был отобран клип, снятый лишь одной камерой - фрагмент из рабочего материала художественного фильма. Изображение было оцифровано с компрессией 1:20, так что о высоком качестве говорить не приходится. И так, обо всем по порядку.
1. В первую очередь, выставим в одном из окон проекции Fx Tree, а в другом – Fx Viewer. В окнеFx Tree выберем операторы Ops>Image>File Input и Ops>Transform>Tracking. Соединим выход оператора File Input с входом оператора Tracking. 2. Двойным щелчком по оператору Tracking откроем его редактор свойств, одновременно трекер отобразится в окне Fx Viewer. Трекер состоит из трех элементов: области поиска (search area), шаблона (template) и точки трекинга (track point). Шаблон определяет группу пикселей, за перемещением которых, собственно, и следит трекер. Область поиска определяет анализируемую часть изображения. Точка трекинга отображает путь перемещение трекера и непосредственно используется для просчета - при стабилизации видеоизображения, например. По умолчанию, она находится в центре шаблона. Размеры шаблона и области поиска можно менять по своему усмотрению. 3. Для эксперимента была выбрана готовая модель Biped – Rig из стандартного набора SOFTIMAGE|XSI. Нам предстоит провести анализ движения в семи контрольных точках: в области головы, грудной клетки, поясницы, щиколотки и запястий рук. Система трекинга позволяет одновременно работать с четырьмя трекерами, но во избежание лишней путаницы мы проведем анализ каждой точки по отдельности. В редакторе свойств оператора Tracking, на странице Mode оставьте включенным режим Edit и отключите галочки для параметров Apply Scaling и Apply Rotation. Все остальные параметры оставьте установленными по умолчанию.
4. В окне Fx Viewer наведите курсор на шаблон трекера так, чтобы он принял вид крестика со стрелочками, нажмите клавишу Shift и перетащите трекер на первую анализируемую точку: При необходимости отрегулируйте размеры шаблона и области поиска. Шаблон по возможности должен охватывать высококонтрастные пиксели перемещаемого объекта, пиксели фона в эту область попадать не должны. В редакторе свойств оператора Tracking, на странице Track1 щелкните по кнопкам Clear All Track Data и Reset Current Frame Key.
Если удалить анимацию параметров таким образом не удается, щелкните правой кнопкой мыши по иконке параметра Template (или Track Point, при необходимости) и в открывшемся меню выберите Remove Animation. Проследите, чтобы точка трекинга оказалась в центре шаблона. 5. В верхней части редактора свойств щелкните по кнопке Track From Start и дождитесь окончания трекинга. Щелкните правой кнопкой мыши по иконке параметра Template или Track Point и в открывшемся меню выберите Animation Editor. В левой части открывшегося редактора анимации выделите параметр TrackFullPos1posx и выберите во внутреннем меню File>Save (.fraw2), чтобы сохранить функциональную кривую (function curve) анимации. Во избежание дальнейшей путаницы следует тщательно подбирать имена для этих файлов. В данном случае мы назовем его Head_X. Повторим то же самое для параметра TrackFullPos1posy и назовем файл Head_Y.
Если трекер по какой-либо причине «срывается» с назначенной точки, следует довести процесс до конца и затем вернутся к кадру, в котором произошел срыв. Если, предположим, в этом кадре выбранный регион перекрывается другим объектом, следует отыскать последующий кадр, в котором эти пиксели вновь появляются, навести на них трекер и щелкнуть по кнопке From Current (или покнопке Step, для покадрового трекинга). В этом случае вместо функциональной кривой точки трекинга следует сохранить на диске кривую шаблона (TemplatePos1.posx, например), так как после принудительного перемещения трекера функциональная кривая точки трекинга может оказаться частично потерянной. Для обеспечения стабильного трекинга в контрольных точках на теле актера следует закрепить специальные высококонтрастные маркеры – например, клетчатые повязки. Наилучшие результаты обеспечивают маркеры с мелким, но хорошо различимым на видеопленке рисунком. Избегайте элементов, однородных по цвету и яркости! 6. Повторите шаги 4 – 5 для оставшихся шести контрольных точек и сохраните функциональные кривые анимации на диске. Особые сложности могут возникнуть при анализе движения поясницы, так как маркер в этом месте периодически будет перекрываться при отмашке рук. Можно, конечно, попросить актера не размахивать при ходьбе руками и анимировать отмашку вручную, но это отрицательно скажется на естественности движений. Можно также изготовить какое-нибудь несложное приспособление - например, закрепить на поясе актера выпуклый маркер. Или установить маркер на привязанной к поясу актера длинной веревке, которую при съемке следует поддерживать в натянутом состоянии (может, и не очень эстетично, зато дешево, надежно, практично). 7. Настало время применить полученные данные к 3D персонажу. На панели инструментов Model выберите Get>Primitive>Model>Biped – RigМожно, конечно, применить функциональные кривые непосредственно к узлам управляющей оснастки (Rig) и отредактировать их в редакторе анимации, но удобнее использовать для этой цели промежуточные заказные параметры (custom parameters) и математические выражения (expressions). 8. Создадим сначала панель для заказных параметров. Выделите в проводнике узел Scene_Root, на панели инструментов Animate выберите Create>Parameter>New Custom Parameter Set, в открывшемся меню назовите панель MOCAP. 9. Найдите узел MOCAP в проводнике и двойным щелчком откройте его редактор свойств. Нажмите клавиши Shift + P, в открывшемся меню напечатайте название параметра в соответствие с узлом применения, например, Head_X. Задайте значение Value Range>Maximum равным 800 (стандартный размер видеокадра – 768х576 или 720х576 пикселей, поэтому значение параметров не будет превышать 800). Щелкните по кнопке OK, на панели появится первый заказной параметр. Таким же образом создайте заказной параметр Head_Y, а так же заказные параметры для остальных контрольных точек. 10. При движении элементы оснастки (Rig) могут менять ориентацию, соответственно меняется и ориентация осей локальных координат. Выйти из положения можно, назначив анимацию на параметры не локальной, а глобальной трансформации (Global Transform). В этом случае невозможно будет переместить всю иерархию модели целиком, поэтому необходимо создать собственные функциональные кривые и для локальных параметров. Мы сделаем это после окончательной настройки всей анимации. Для начала займемся анимацией положения головы. Заблокируйте редактор свойств панели MOCAP щелчком по иконке Lock. Выделите в одном из окон проекции оснастку головы (Biped_Rig.Head) и щелкните по кнопке Selection на панели Select. В открывшемся проводнике дважды щелкните по узлу Biped_Rig.Head>Global Transform. Заблокируйте открывшийся редактор свойств. Поскольку направлению функциональной кривой Head_X в данном случае соответствует ось Z, перетащите иконку параметра Head_X с панели MOCAP на иконку параметра Position Z в редакторе свойств Global Transform.
Теперь нам предстоит внести некоторые коррективы в открывшемся редакторе математических выражений (Expression Editor). При трекинге видеоизображения параметры отсчитываются в пикселях, а при анимации персонажа – в условных единицах SI, поэтому значения для всех кривых анимации надо будет разделить на одно и тоже число. Величина этого числа зависит как от масштаба фигуры актера на видео, так и от размеров 3D персонажа. В данном случае «рост» актера на видеоизображении составлял около 460 пикселей, а высота 3D персонажа - около 19 «у. е.», то есть значение коэффициента должно было быть равным 460:19=24,2. Точное значение коэффициента устанавливается методом проб и ошибок. В нашем случае неплохие результаты были достигнуты при значении 25. Кроме того, актер на экране движется справа налево, поэтому по мере его продвижения вперед значение параметра Head_X уменьшается, а для 3D персонажа оно наоборот, должно увеличиваться. Поэтому нам необходимо ввести в редактор выражений отрицательное значение коэффициента. 11. Итак, в нижнем окне редактора выражений добавляем делитель -25:
MOCAP.Head_X / -25 Щелкните по кнопке Apply в верхней части редактора. 12. Убедитесь, что на линейке времени выставлен первый кадр. На панели MOCAP щелкните по зеленой иконке параметра Head_X и нажмите клавишу 0, чтобы открыть редактор анимации. Выделите в редакторе параметр Head_X и выберите из внутреннего меню File>Open (.fraw2). Загрузите сохраненный ранее файл Head_X.fraw2. Чтобы избежать «подергивания» анимируемых элементов, при выделенном параметре Head_X выберите из внутреннего меню Curves>Smooth. Иногда эту операцию приходится проделывать несколько раз. Следите, чтобы не потерять первоначальное очертание кривой в начале и конце анимации. При необходимости измените настройки в меню Curves>Curve Processing Options. Можно также значительно сократить количество ключевых кадров, выбрав во внутреннем меню Curves>Fit. Кривые со значительными искажениями можно отредактировать в режиме высокоуровневого редактирования (high-level editing, HLE). Подробнее обо всем этом можно узнать из документации программы. 13. Вернемся к нашему персонажу. Как видим, голова его сместилась далеко назад. Чтобы заставить персонаж «танцевать от печки», то есть с нулевой точки, все элементы оснастки нужно сместить на определенное расстояние. В редакторе выражений подберем величину смещения так, чтобы вернуть голову на положенное место. В данном случае смещение составит 26,5: Смещение необходимо вводить еще по одной причине: как правило, закрепить все маркеры на теле актера в точном соответствии с эффекторами скелетона практически невозможно. Смещение позволяет скомпенсировать это расхождение. 14. Аналогичным образом создадим анимацию для параметра Global Transform>Position Y. В редакторе выражений в качестве делителя введем «опять 25», только на этот раз с положительным значением и подберем величину смещения так, чтобы голова оказалась «на должной высоте». Что касается параметра Global Transform>Position X, его придется анимировать вручную, так как съемка производилась всего одной камерой. Прокрутите созданную анимацию: голова должна смещаться вперед, повторяя движения головы актера. 15. Чтобы при точной настройке анимации не приходилось каждый раз открывать редактор выражений и вписывать новые значения параметров, создадим единую заказную панель настройки. В проводнике выделите узел Scene_Root, на панели инструментов Animate выберите Create>Parameter>New Custom Parameter Set, в открывшемся меню назовите панель Tune. 16. Найдите узел Tune в проводнике и двойным щелчком откройте его редактор свойств. Нажмите клавиши Shift + P, в открывшемся меню напечатайте название параметра Factor. Чтобы настройка была более точной, диапазон изменения параметра должен быть по возможности меньшим. Так как, по предварительным расчетам, примерное значение делителя составляет 24 – 25, задайте значение Value Range>Minimum равным 23, а значение Value Range>Maximum равным 27. 17. Чтобы создать на панели Tune отдельный раздел для параметров смещения, выделите в проводнике узел Tune, на панели инструментов Animate выберите Create>Parameter>New Custom Parameter Set, в открывшемся меню назовите панель Offset. 18. Найдите в проводнике узел Offset и двойным щелчком откройте его редактор свойств. Нажмите клавиши Shift + P, в открывшемся меню напечатайте название параметра Head_Offset_Y. Предварительно задайте значение Value Range>Maximum равным 30. В будущем вы сможете более точно установить диапазон изменения параметра, щелкнув правой кнопкой по его иконке на заказной панели и выбрав в открывшемся меню Edit Parameter Definition. Таким же образом создайте на панели Offset все остальные заказные параметры. Выделите в одном из окон проекции оснастку головы (Biped_Rig.Head) и щелкните по кнопке Selection на панели Select. В открывшемся проводнике дважды щелкните по узлу Biped_Rig.Head>Global Transform. Откройте редактор выражений для параметра Position Z. Вместо числа 25 впишите Tune.Factor, а вместо 26,5 впишите Tune.Offset.Head_Offset_Z.
Таким образом, величина Tune.Factor является общей для всех контрольных точек, а вторая величина меняется для каждого конкретного параметра. Так например, для параметра Position Y выражение примет вид MOCAP.Head_Y / Tune.Factor + Tune.Offset.Head_Offset_Y и т. д. На заказной панели Tune подвигайте ползунки параметров Factor и Head_Offset_Z, голова персонажа при этом должна перемещаться. С помощью панели настройки можно не только точно настраивать движения персонажа, но и видоизменять их. Так например, анимируя параметры Head_Offset_Z и Head_Offset_Y, можно заставить персонаж наклонять и задирать голову, и т. д.
20. Все остальные контрольные точки анимируются таким же образом. Правая рука актера осталась практически невидимой, поэтому ее придется анимировать вручную. После анимации всех параметров необходимо произвести общую точную настройку. В окне проекции Right выберите режим Rotoscope, в редакторе свойств Rotoscopy Options загрузите видеофрагмент и разместите 3D персонаж рядом с фигурой актера. На заказной панели Factor настройте величину смещения для каждого из параметров таким образом, чтобы движения скелета максимально точно повторяли движения актера. 21. Теперь, как уже было сказано, необходимо создать функциональные кривые для локальных трансформаций (Local Transform) всех параметров. Рассмотрим это на примере запястья левой руки. В одном из окон проекции выделите оснастку левого запястья (Biped_Rig.LArmEff) и щелкните по кнопке Selection на панели Select. В открывшемся проводнике дважды щелкните по узлу Biped_Rig.LArmEff >Local Transform. Промаркируйте параметры Position X, Y, Z, удерживая нажатой клавишу Shift и щелкая по названиям параметров. На панели инструментов Animateвыберите Tools>Plot>Marked Parameters.В открывшемся редакторе свойств задайте значения первого и последнего кадра, отключите галочку для параметра Process rotations to ensure continuity и щелкните по кнопке OK. После просчета можно удалить в проводнике узел PlotToAction. Удалите анимацию для параметров Global Transform> Position X, Y, Z. Можно также удалить анимацию соответствующих параметров на панелях MOCAP и Tune, а после создания кривых для всех локальных трансформаций – и сами панели. И в заключение, несколько рекомендаций по съемке видеоматериала для захвата движений: Для полноценного захвата движений рекомендуется произвести съемку тремя камерами: как правило, одна из них располагается впереди актера и две - по бокам. Съемку необходимо производить со штатива. Фокусное расстояние объективов должно быть по возможности высоким, особенно для фронтальной камеры. Перед началом съемки следует записать синхронизирующий сигнал - с помощью фотовспышки, например. Старайтесь работать с максимально высокой скоростью затвора, чтобы уменьшить «смаз» движущихся деталей. Для многих любительских камер этому соответствует режим «спорт». Оцифровывать видеоизображение следует с минимальным уровнем компрессии, обязательно с полной резолюцией. Трекер в SOFTIMAGE|XSI позволяет работать с видеополями (Fields), тем не менее, рекомендуется предварительно произвести деинтерлейсинг материала. Особенно это необходимо при масштабировании изображения. При подготовке фрагментов изображение одной из боковых камер следует развернуть по горизонтали, после чего совместить масштаб и позицию актера с изображением второй боковой камеры. Сделать это можно как в самом композере XSI, так и в другой программе, Adobe After Effects, например. Для фронтальной камеры следует анимировать масштаб изображения, чтобы по мере приближения актера к камере его размеры в кадре оставались неизменными. Естественно, они должны соответствовать масштабу изображения боковых камер. Copyright © 2005. Телетонстудио. |
smsdesigner Профиль Статус: Йода Группа: Элита Рейтинг: 0 ![]() |
забавно..
когдато я экспериментировал в этом направлении в 3dsmax.. Добавлено @ 23:05 проикол,. . даже видео сохранилось, где на части тела вешал тенисные шарики, скотчем прилепленные с резинками ... а мокап лица ... некие клеющиеся бумажки .. естественно снималось все ночью на работе.. ... думаю не я один этим занимался.. видео так и никому непоказывал ... :) :) :) |
eXed Профиль Статус: Pacific Группа: Администраторы ![]() |
Как человек неумеющий выкладывать свои знания в доходчивом виде - восхищен понятливостью статьи. Огромное спасибо. Остается опробывать понятое на практике - для закрепления...
|
MAX Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 0 ![]() |
Все это старо, как и сама CG. Просто ИМХО в XSI, благодаря встроенному композеру и заказным параметрам, делать это намного удобнее. Насколько мне известно, встроенный композер есть еще только в Houdini. :unsure:
|
NRat Профиль Статус: Серый кардинал Группа: Серый кардинал Рейтинг: 12 ![]() |
Вах, попробовать чтоль как-нить... )
|
Summatr Профиль Статус: некто Группа: Администраторы ![]() |
MAX а можешь выложить результат эксперемента ? Хотелось бы увидить сцену с анимированым скелетом. Слабо верится что таким способом можно сделать цикл походки.
|
MAX Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 0 ![]() |
Пожалуйста! (Кодек DivX) Можно было и дальше продолжить, но там актер перекрывался таймкодом, а снимать сначала просто времени не было – спешил закончить статью.
Я ее писать и не собирался, но случайно наткнулся на программу SIMI Motion, вот и подумал сдуру типа: «А что, слабо Вольдемару нырнуть?!». :) Не думал, что из этого хоть что-то получится, вот и взял первый попавшийся фрагмент. P. S. Правая рука анимировалась вручную – ее просто не было видно, т. к. не было обратной камеры. ![]() |
uno Профиль Статус: Мексиканский Тушкан Группа: Редакторы Рейтинг: 15 ![]() |
пробовал выполнять трекинг в FX Tree,
но возникла проблемма: при изменении размера области поиска > XSI молча падает (footage sequence Pic ) есть очень интересная программа для трекинга PFHoe (бывший ICARUS) (PFHoe is an extremely cost effective DV tracking application for Mac and Windows, aimed at DV hobbyists and budding CG artists. For the first time it is possible for those wanting to learn about match moving or experiment with matching computer graphics to video footage, to use cutting edge tools without price tag to match. http://www.thepixelfarm.co.uk/contentfull....pfhoe_more.htm) увы только триал ( но полная версия может PFHoe 1.0 supports the following exports: 3D Studio Max Maya XSI Animation Master Lightwave Cinema 4D (via Lightwave export) Combustion After Effects |
Leshiy Профиль Статус: моделирую в майе )) Группа: Элита Рейтинг: 0 ![]() |
Прикольно однако, но для домашних условий думаю не всем сгодится.
Не у всех есть камеры, особенно хорошие. |
MAX Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 0 ![]() |
2uno
Странно! Только что попробовал с .PIC секвенцией, все отлично работает (XSI4.0). Я вообще то .MOV файлом пользовался, но это вроде не принципиально. Может, с железом проблемы, с видеокартой, например. Попробуй на другой машине. Трекер и правда немного глючный, но работать можно. А вот если PFHoe может данные в XSI экспортировать, это здорово. Надо попробовать. :) 2Leshiy Для этого дела любая камера сгодится, разве что кроме WEB-камер. Камеру б/у можно где-то так за сотню баксов приобрести, новенькую – в районе 200. Приличная видеокарта и то дороже стоит. Можно, в конце концов, на прокат взять. |
Summatr Профиль Статус: некто Группа: Администраторы ![]() |
MAX ну это сбоку. Хотелось бы посмотореть в разных ракурсах. Сценку бы
|
MAX Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 0 ![]() | |
Leshiy Профиль Статус: моделирую в майе )) Группа: Элита Рейтинг: 0 ![]() |
ну раз пошла такая пьянка...
для удобства можно воспользоваться штукой с готовыми маркерами: оригинал |
Yves Профиль Статус: zombie Группа: Артисты Рейтинг: 0 ![]() |
есть еше в нетвью скрипт для импорта тракеров из Combustion
правда их по одному надо затягивать - геморно я когдато пробовал так лицевую мимику сделать но потом обламался и сделал руками )))))) |
MAX Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 0 ![]() |
2 Leshiy
Мда... Круто, конечно. :rolleyes: Как я понял, они используют специальные камеры, у которых вокруг объектива расположен инфракрасный излучатель, а маркеры отражают свет в одном направлении. В наших условиях можно, например, одеть актера в черный костюм и наклеить белые маркеры. Или прицепить лампочки и снимать в темноте, но все это - дополнительные трудности. Можно вообще обойтись без всяких прибамбасов - просто одеть актера в костюм с контрастным, хорошо различимым на видео мелким рисунком. |
![]() |
![]() ![]() |