Capture Animation с использованием CAT

Об авторе:

Зовут меня Поклонов Максим Александрович, в сети могу встретиться как MaxGoodwin. Мне 30 лет, живу в Казахстане в городе Усть-Каменогорске. Занимаюсь графикой около 10 лет, профессионально последние года три или четыре. Работал в основном в видео рекламе, в последний раз, в небольшой анимационной студии. Сейчас нахожусь в свободном полете, занимаюсь бизнесом и фрилансом. Наконец-то волен делать такую графику, которую я хочу. Не утратил веру сказку, чего и вам желаю.

Предисловие к уроку

Здравствуйте, друзья. Вот, тут на форуме, поднялся разговор о том, как можно передать движение с Point Cloud (облака точек) на скелет. Об этом, собственно и пойдет речь. Но сначала я бы хотел дать общее представление об этом способе, что представляет собой Point Cloud и каким образом мы перенесем с него данные на скелет. Сразу скажу, я работаю со скелетами CAT, и соответственно повествование рассчитано на использование CAT Rig, то есть скелетов созданных при помощи Character Animation Toolkit.

Идея для урока была взята с официального сайта CAT http://cat.wiki.avid.com/. Там же был взят и пример облака точек. Однако на сайте, пример был выложен как один из вариантов, и не было абсолютно никаких пояснений к нему. Данный пример был взят как основа для дальнейших размышлений на эту тему. Хотя он и работал, но там был ряд недоработок, которые пришлось устранять. Так, например некоторые джоинты были ориентированы на объекты, которые постоянно сохраняют глобальную систему координат, а это значит, что при локальных трансформациях облака джоинты будут сохранять некорректное положение в пространстве. Так же, при помощи некоторых скриптов, пришлось добавлять две недостающие точки в Point Cloud и так далее. Эта система была полностью воссоздана в том виде в котором ее можно видеть сейчас и считать полностью готовой к работе.

Итак, Point Cloud, это точки, которые захвачены оптическим способом, при съемке актера, на некоторое количество видео камер. Point Cloud не несет информации о вращении точек. Наша задача заключается в том, чтобы на основе положения точек, внутри облака, создать правильно ориентированные джоинты (Joint - сустав) и по ним выстроить BOX Rig, то есть элементарный коробчатый скелет с правильно выстроенной иерархией и координатной системой. Уже с него мы перенесем анимацию на CAT Rig, при помощи CAT-овской утилитки Capture Animation.

Практически все решение построено на применении Look At и Position Constraint контроллеров. Вот это, очень сложный момент, потому, что в сценах у разных людей могут быть по-разному устроены системы координат, и в разных сценах, контроллер может иметь разные настройки. Поэтому я подробно, и на примерах, объясню, как настраиваются контроллеры, и как они работают, а непосредственно в уроке буду пояснять, что к чему и как должно относиться. Я буду говорить, как поставлены настройки в моем файле, но когда вы будете выполнять урок, настройки, при достижении нужного результата, могут отличаться. Скажем на примере офсайта основная ось BOX Rig-а - Z, а при построении рига оказалось, что он имеет ось X в качестве направляющей. Не исключено, что в различных верисях CAT оси ригов могут отличаться.


Особенности захвата

Далее, приведу описание и объясню, как и почему должны располагаться маркеры на актере. На схеме показано правильное (для данного случая) расположение маркеров на актере. Красным показаны маркеры, на видимой, передней стороне актера, синим, показаны не видимые маркеры, находящиеся с обратной стороны, за актером. Очень важно точно позиционировать маркеры, так как они все выполняют важную роль при создании и ориентировании джоинтов и костей.

Маркеры, находящиеся на голове, должны быть расположены: передние на лбу, слева и справа, задние, на затылке соответственно. По этим четырем маркерам выстраивается система из трех вспомогательных хелперов, для правильного позиционирования головы в пространстве. Такая система будет использоваться для всех хабов, иначе сказать центров, а именно, головы, груди и таза. Позже рассмотрим ее более подробно. Обратите внимание, что в районе всех хабов, присутствует по четыре маркера.

Руки. Здесь нужно уделить особое внимание на размещение маркеров, так как имеет значение с какой стороны виден маркер, спереди, сзади или сбоку. Итак, два маркера располагаются на плечах сверху. Они нужны для построения плечевых ждоинтов. Вот посмотрите, точка на плече и ближайшие к ней две точки грудного хаба. По этим трем точкам, примерно в центре между ними, будет строиться плечевой джоинт. Следующие два маркера размещаем чуть ниже по середине плеч по бокам. Эти маркеры будут использоваться для правильного ориентирования плечевых костей. Следующие маркеры – локтевые. Они размещаются, тоже важно, со стороны спины, то есть если руки актера по швам, то локтевые маркеры должны быть видны со спины. Далее размещаем два маркера по середине предплечья, их как раз должно быть видно спереди. Замечу, что если разместить их с внутренней стороны, со стороны ладони, то маркер может быть вообще, основное время, невидим для камер. Избегайте ошибок. По два маркера крепим на запястья, если смотреть прямо на ладонь, то они должны быть справа и слева. Эти маркеры, будут задавать вращение кистей рук. И последний маркер размещаем с внешней стороны ладони, по середине, в районе начала среднего пальца.

Ноги. Четыре маркера крепим в районе таза: два спереди, на выпирающих тазовых костяшках, и два сзади, соосно передним. По одному на ногах, в середине бедра, по одному на коленях, по одному, по середине голени, по одному на подъеме и по одному, на пятках. Далее важный момент, внимание. Для правильного позиционирования ступни, оставшиеся маркеры размещаем так: по два маркера, на каждую ногу, слева и справа от начала пальцев точнее сказать от места сгиба, и по одному по середине ступни, в конце пальцев или, иначе сказать, на носке обуви, по высоте ближе к подошве. При таком расположении маркеров ступни, мы легко можем задать правильную ориентацию ступни в пространстве по трем точкам по краям пальцев и на носке. Остальные маркеры размещаем, как показано на схеме.

Каким именно образом будет происходить трекинг и обработка маркеров, здесь рассматривать не будем. Это довольно обширная тема со своими тонкостями и особенностями. На эту тему, как вариант, смотрите  колоссальный  труд  Виктора Кулачкина: http://www.render.ru/books/show_book.php?book_id=701, в этом уроке автор рассказывает, как можно сделать облако точек в домашних условиях. Единственное, добавлю, что четыре камеры, непосредственно для работы, это мало даже для минимума, минимум желательно сделать шесть камер. Так будет точнее вычисление и меньше ошибок.


Важные моменты до начала работы

1. Во-первых, перед тем как начинать работу над созданием BOX Rig-а, надо обязательно сделать некоторые приготовления. Сначала надо построить CAT Rig, на который будем переносить анимацию. Дело в том, что кости BOX Rig-а и некоторые хэлперы, участвующие в ориентировании костей, при работе с облаком точек, должны иметь одинаковую локальную систему координат в основании. И поэтому перед построением каждой кости, будем сверяться с костями CAT Rig-а, чтобы оси костей имели одинаковую локальную систему координат.

2. Теперь разберем как работает Look At контроллер, чтобы было понятно, что крутить, на случай если надо установить свои настройки. На рисунке ниже, показана следующая система: объект BOX01 имеет Look At контроллер, ось Z которого направлена на объект Pont01, она установлена в группе Select Look At Axis, а в качестве системы координат, в группе Select Upnode, указан объект Pont02. В группе Upnode Control активирована установка Look At. Это значит, что ось, указанная в группе Source Axis, в нашем случае X, будет направлена на объект Pont02. Если активировать флажок Flip, то ось будет направлена в противоположную сторону.

Другой вариант заключается в том, что вместо установки Look At в группе Upnode Control, активирована установка Axis Alignment. Это значит, что ось X, указанная в группе Source Axis будет ориентирована так же как ось X объекта Pont02, указанная в группе Aligned to Upnode Axis.

Еще один момент. Когда вы сделаете свой Point Cloud, создайте еще один Point Helper и разместите его на уровне ступней этого Point Cloud-а, потом выделите все точки облака и прилинкуйте их к этому новому хелперу. Для чего это нужно вы узнаете в конце урока.


Часть 1. Вспомогательные хелперы.

Итак, начнем урок. Сначала построим три системы вспомогательных хелперов, необходимые для правильного позиционирования всех трех хабов, головы, груди и таза. Эти системы, позиционируются и ориентируются относительно объектов облака точек.

Тазовый хаб

Первым делом выбираем локальную систему координат и смотрим как расположены оси тазовой кости CAT Rig-а.

Теперь нужно построить систему хэлперов которая показана на рисунке зелеными точками. Все хелперы должным иметь точно такое же направление осей как и у тазовой кости CAT Rig-а. Первым делом строим Point Helper в любом удобном месте вьюпорта, назначаем желаемый размер и цвет. Затем, назначаем на позицию хелпера контроллер Position Constraint и в качестве цели указываем переднюю левую и заднюю левую точку облака точек. Вес по 50% на каждую точку.

Все, одна точка на месте. Теперь нужно правильно ориентировать ее относительно точек облака. На вращение назначаем Look At контроллер. В качестве цели указываем переднюю левую тазовую точку облака (на рисунке отмечено зеленым кружком), и далее смотрим на тазовую кость CAT Rig-а. Ось X у нас направлена вверх, Y – вперед, Z – вправо. Значит и хелпер нужно ориентировать так же. Для этого Look At ось указываем Y, а в качестве системы координат или Upnode (кнопка в группе Select Upnode) указываем заднюю правую тазовую точку облака (на рисунке отмечено синим кружком), и указываем, что ось Z будет направлена на нее, по типу Look At.

Чтобы не создавать по новой следующие точки, и не назначать на них контроллеры, просто скопируем получившийся хелпер через меню Edit -> Clone. В опциях клонирования выбираем тип Copy, Ok. И теперь не снимая выделения правим настройки контроллеров, в панели Motion. Удаляем цели из списка контроллеров и указываем новые. Это будут передняя правая и задняя правая, тазовые точки облака. Вес, также, по 50% на каждую точку. Удаляем цель в Look At контроллере и назначаем новую, переднюю правую тазовую точку облака (на рисунке отмечено зеленым кружком). В качестве системы координат Upnode указываем заднюю левую тазовую точку облака (на рисунке отмечено синим кружком) и указываем, что ось Z будет направлена от нее, по типу Look At, для этого устанавливаем флажок Flip. Обратите особое внимание, чтобы оси были как у тазовой кости CAT Rig-а, иначе, в случае ошибки, потом не просто будет разобраться, особенно по началу.

И теперь строим третью, основную точку этой системы. Ради того, чтобы правильно позиционировать именно ее, мы и строили первые два хелпера. Так же клонируем один их хелперов, удаляем все цели с контроллеров, и указываем их по новой. Теперь, в качестве целей для Position Constraint контроллера указываем первые два хелпера. И третий хелпер должен разместиться между ними по середине. На вращение третьего хелпера, вместо Look At, теперь назначаем контроллер Orientation Constraint и в качестве целей, указываем те же первые два хелпера. Теперь третий хелпер привязан к первым двум в пространстве, а так же копирует их ориентацию.

Вот, мы построили систему вспомогательных хелперов. Именно по среднему хелперу мы будем строить и ориентировать тазовую кость BOX Rig-а. Обратите внимание, что локальная система координат полностью соответствует системе тазовой кости CAT Rig-а и при движении сохраняет правильную ориентацию.

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

Грудной хелпер

Вы спросите, что за лишний хелпер изображен в районе солнечного сплетения, все просто, это Look At цель для тазовой и грудной костей BOX Rig-а, позже будет понятно. Давайте построим его. Скопируйте третий (средний) хелпер тазовой системы хелперов, удалите все цели с контроллеров, и назначьте новые цели для Position Constraint. Это будет точка облака на груди в области солнечного сплетения, точка на спине по середине, и точка на спине в начале шеи. Вес распределите так, чтобы хелпер разместился ближе к середине спины. На Orientation Constraint назначьте среднюю точку грудной системы хелперов, путь она копирует вращения грудной клетки.

Ну вот, на этом можно считать, первую часть законченной. Как можно видеть, мы смогли сделать первые привязки на Point Cloud и они уже корректно работают.

 

Часть 2. Построение джоинтов.

Пришло время, проделать следующую часть работы. Сейчас будем строить хелперы которые обозначат суставы будущего скелета. Суть построения в следующем: маркеры при съемке находились на поверхности, а нам нужно обозначить джоинты внутри тела. Именно поэтому нужно соблюдать точность при размещении маркеров на актере при съемке.

Джоинты ног

Начнем с левой ноги. Построим Point Helper в любом удобном месте экрана, в настройках устанавливаем желаемый размер, цвет и тип отображения. Я поставил Center Marker, чтобы хелпер всегда отображался в виде маленького крестика. Далее, так же как и в предыдущем случае, назначаем ему контроллер Position Constraint и в качестве целей указываем две точки облака, слева и справа от начала пальцев (на рисунке обведено красным), вес точек по 50%. Теперь клонируем его как Copy, очищаем список контроллера от целей и указываем новые цели, это две точки облака, на пятке и на подъеме (на рисунке обведено зеленым). Этот хелпер помещается в голеностопном суставе, поэтому вес распределяем так, чтобы он выровнялся примерно в том месте, где должен быть сустав. И теперь, снова клонируем хелпер как Copy, удаляем цели с контроллера, назначаем три точки: точку по середине бедра, точку на колене и точку по середине голени (на рисунке обведено синим). Вес распределяем так: коленная точка 100% остальные две по 15%.

Теперь внимательно, пожалуйста. Сейчас будем строить группу джоинтов, которая будет отвечать за ориентацию кости бедра. Итак, сначала построим вспомогательный хелпер, будет служить ориентиром, для правильного расположения координатных осей. Для этого копируем, как раньше, один из предыдущих хелперов, и на Position Constraint назначаем две новые цели: это точка облака, спереди-слева на костяшке таза и точка по середине бедра.

Тазобедренный джоинт

Теперь строим тазобедренный джоинт. Он будет не простой, и очень важно построить его правильно. Джоинт будет состоять их двух хелперов каждый из которых будет иметь свою ориентацию на вращении. Это нужно для того, чтобы оптимально настроить ориентацию бедренной кости по этим двум хелперам. Дело в том что если при съемке актера не точно прикрепить маркер по середине бедра, например левее, то поворот всей кости BOX Rig-а будет ориентирован на этот маркер. И чтобы иметь возможность настроить оптимальную ориентацию сторим такой сложный сустав. Клонируем как Copy предыдущий хелпер. На Position Constraint назначаем новые цели (показано кранным кружком). Это будут три точки облака: передняя левая точка тазового хаба, задняя левая точка тазового хаба и точка посередине бедра левой ноги. Вес расставляем так: две точки хаба по 50%, точка посередине голени 20%. В параметрах хелпера устанавливаем размер, у меня он равен 5, а тип отображения я Bох.

На вращение назначаем Look At контроллер, Look At цель указываем коленный ждоинт, который вы только что построили (в желтом кружке). Теперь смотрим на систему координат бедренной кости CAT Rig-а. Ось X смотрит на коленный сустав, Y – вперед, Z – влево. Соответственно Look At ось указываем X. Чтобы ось Y заставить смотреть вперед, в Select Upnode указываем хелпер, который мы строили как ориентир для бедренного джоинта. (в зеленом кружке). В Source Axis указываем, что ось Y ориентирована на указанный Upnode по типу Look At.

Теперь, если проиграть анимацию, можно увидеть, что джоинт сохраняет правильное положение и ориентацию в пространстве. Однако, нужно построить еще один джоинт. Он будет почти полностью копировать только что созданный тазовый джоинт за исключением Upnode и координатной системы. Клонируем как Copy наш джоинт, все оставляем как было, только: в параметрах хелпера увеличиваем размер до 8 (для удобства работы), а в Look At контроллере в Select Upnode указываем голеностопный джоинт (в желтом кружке). И в Source Axis указываем в качестве оси ориентира - инвертированный Z. Таким образом, ось Y которая у CAT Rig-а направлена вперед, у нас направлена во внутрь ног или вправо, то есть координатная система получилась повернута внутрь. При помощи этих двух независимых джоинтов, с правильной и повернутой координатной системой, мы сможем отрегулировать вращение бедренной кости, но об этом позже. А пока, чтобы не путаться в терминологии, для удобства, джоинт с правильной системой координат назовем «левый тазовый правильный джоинт», а развернутый «левый тазовый развернутый джоинт». Так будет проще работать с ними при создании костей.

Ну вот, с одной ногой мы закончили. Джоинты правой ноги делаем так же. Создаем хелперы в районе начала пальцев, в голеностопном суставе, и на колене. Далее строим ориентирующий хелпер и приступаем к созданию правого тазового правильного джоинта. Копируем левый тазовый правильный джоинт. На Position Constraint назначаем другие цели: переднюю правую точку тазового хаба, заднюю правую точку тазового хаба и точку посередине бедра правой ноги. Вес распределяем аналогично левой ноге. В Look At контроллере цель указываем правый коленный джоинт, в Select Upnode теперь указываем правый ориентирующий хелпер. Готово. Теперь Копируем левый тазовый развернутый джоинт, так же на Position Constraint назначаем другие цели, такие же как в правом правильном джоинте. В Look At контроллере цель указываем правый коленный джоинт, а в Select Upnode теперь указываем правый голеностопный джоинт, только теперь в Source Axis указываем в качестве оси ориентира - НЕ инвертированный Z.

Джоинты рук

Все, с ногами закончили. Теперь то же самое проделываем с руками. Принцип такой же, поэтому дальше подробно рассказывать не буду, только подскажу необходимые настройки контроллеров. И так, поехали. Так же начнем с левой руки. Строим хелпер, на Position Constraint в качестве целей указываем две точки облака в области запястья. Вес по 50%. Это джоинт - запястья. Следующий джоинт – локтевой, цели – три точки: точка на середине запястья (вес 20%), точка на локте (100%) и точка по середине плеча (20%). Далее. Ориентировочный джоинт на плече, цели – точка на плече, точка по середине плеча. Вес по 50%.

Плечевой джоинт

На руке будет та же система из сдвоенного джоинта с различными координатными системами. Поэтому теперь, строим левый плечевой правильный джоинт. Копируем левый тазовый правильный джоинт, На Position Constraint назначаем цели (помечены красным кружком): точка на плече (вес 100%), передняя левая точка грудного хаба (30%), задняя левая точка грудного хаба (30%).

В качестве цели для Look At контроллера указываем локтевой джоинт (помечен красным кружком), Look At ось – X, в качестве Upnode указываем ориентировочный хелпер (помечен зеленым кружком), Source Axis – Z.

Теперь копируем левый тазовый развернутый джоинт, на Position Constraint назначаем те же цели, что и на правильный джоинт. В качестве Look At цели указываем локтевой джоинт (помечен красным кружком). Look At ось – X, в качестве Upnode указываем джоинт запястья (помечен зеленым кружком), Source Axis – Y. В данном случае координатная система развернута так же, во внутрь. Сверяйтесь с CAT Rig-ом, избегайте ошибок, обидно, если они вылезут при мэпинге и кости будут торчать в разные стороны.

Все. Другую руку стройте сами. Только покажу, настройки Look At для правого плечевого правильного и развернутого джоинтов. Поясню. Look At правильного джоинта нацелен на локоть, Upnode указываем - плечевой ориентир, ось Z смотрит от него. Look At развернутого джоинта нацелен на локоть, Upnode указываем - запястье, ось Y ориентирована на него, так чтобы ось относительно правильной была развернута немного во внутрь.

Джоинт ключицы

И еще один штрих, создадим джоинт на груди. К нему будут крепиться кости ключицы. Копируем какой-нибудь джоинт без Look At контроллера, например с запястья и на Position Constraint назначаем новые цели: две точки облака грудного хаба (вес по 50%), и одна точка на спине, между лопатками (вес ослабить до 15% чтобы точка сместилась ближе к груди).

Ура! Мы сделали это. Теперь строим кости.

 

Часть 3. BOX Rig.

Обратите внимание, какая ось является основной у костей CAT Rig-а. В моем случае это ось X. Она используется как основная для всех Look At контролеров сцене. Значит и объект, представляющий кость должен иметь ось X в качестве основной, и проходить эта ось должна сквозь него. Для этого, в окне вида сверху построим обычный BOX, небольшого размера. Основная ось объекта, получилась Z, она проходит сквозь BOX. А нужно чтобы проходила X. Идем во вкладку Hierarchy, в свитке Ajust Pivot нажимаем кнопку Affect Pivot Only и разворачиваем Pivot так, чтобы ось X проходила сквозь BOX.

Тазовая кость

Сначала я нажму Alt+X, чтобы BOX стал прозрачным. А дальше все просто, назначаем на BOX контроллер Position Constraint, и в качестве цели указываем средний вспомогательный хелпер, той системы, что мы строили в самом начале (показан синим кружком). BOX тут же сместится в эту точку. Теперь это тазовая кость. Далее, назначаем ей Look At контроллер. В качестве цели указываем вспомогательный хелпер по середине спины (показан желтым кружком). Теперь самое интересное, чтобы сохранить правильную ориентацию тазовой кости в пространстве, указываем в качестве Upnode среднюю точку вспомогательной системы (показан синим кружком), а тип влияния (в группе Upnode Control) ставим Axis Alignment. Смотрим, чтобы в группе Source/Upnode Alignment были выставлены одинаковые оси, например Z, Z, что означает, что ось Z кости, будет направлена соответственно оси Z Upnode. Можно поставить и Y,Y, будет тот же эффект, но нельзя выбирать ось X, так как она используется в качестве Look At оси. Теперь только осталось настроить размеры бокса и сместить Pivot Point в центр, надеюсь не надо пояснять, как это делается…

Если все сделано правильно, то система координат тазовой кости BOX Rig-а должна быть такая же как у CAT Rig-a. Тазовая кость готова.

Бедренная кость

Строим еще один BOX небольшого размера, и так же разворачиваем Pivot, чтобы ось X проходила сквозь Bох. Нажимаем Alt+X, так, для удобства. Теперь, привычным движением, назначаем контроллер Position Constraint и в качестве цели указываем левый тазовый правильный джоинт. BOX тут же смещается в позицию джоинта. Теперь это левая бедренная кость BOX Rig-а. Теперь зададим ориентацию бедренной кости. Для этого, на вращение, назначаем ей контроллер Orientation Constraint. В качестве целей указываем левый тазовый правильный джоинт, левый тазовый развернутый джоинт. Вот теперь вам станет понятно, зачем мы делали такой сложный, сдвоенный джоинт. Настраивая вес целей, мы можем ориентировать кость наиболее оптимальным образом. У меня цель на правильный джоинт имеет вес 100% а на развернутый 30%.

Голень

Ок, едем дальше. Клонируем как Copy эту кость, и в Position Constraint удаляем старую цель и назначаем коленный джоинт. Теперь это голнь. На вращение, назначаем контроллер Look At, взамен старого Orientation Constraint. Look At цель указываем голеностопный джоинт. Upnode указываем бедренную кость, Upnode Control меняем на Axis Alignment, а в группе Source/Upnode Alignment указываем, что ось Y голени (source) направлена в сторону оси X бедра (upnode). Настраиваем размер в настройках бокса.

Обязательно сверяйтесь с CAT Rig-ом, оси у костей должны быть расположены одинаково.

Лодыжка

Теперь построим лодыжку, но перед этим сделаем одно маленькое дополнение. Чтобы задать ориентацию лодыжке, а так же кости пальцев нужно сориентировать джоинт в начале пальцев. Именно по нему мы будем ориентировать лодыжку и пальцы.

Выделите джоинт в начале пальцев и назначьте ему на вращение Look At контроллер. Look At цель – точка облака на носке (показана красным кружком), Ось Look At укажите X, а Upnode – точку облака с левой (или внешней) стороны пальцев (показана синим кружком). Upnode Control – Look At, ориентировочная ось – Z. Таким образом этот джоинт будет сориентирован в плоскости ступни.

Вот теперь можно строить лодыжку. Скопируйте голень, на Position Constraint назначьте новую цель – голеностопный джоинт. На Look At контроллере, так же, назначьте новую Look At цель – джоинт в начале пальцев, Ось Look At укажите X, Upnode – этот же джоинт в начале пальцев. Upnode Control – Axis Alignment, ориентировочные оси – Z, Z. Так же настройте размер кости.

Вот, теперь лодыжка будет выровнена относительно ступни.

Кость пальцев

Настало время построить кость пальцев. Но локальные оси этой кости мы будем выравнивать не по кости пальцев CAT Rig-а, а по Foot Platform, иначе сказать по ИК-цели ступни. Делаем так, потому, что нам нужно передать движение ступней именно на Foot Platform.

Клонируем лодыжку, на Position Constraint назначаем новую цель – джоинт в начале пальцев. Так же меняем Look At цель на точку облака на носке ступни. Ось Look At указываем Y, Upnode – оставляем джоинт в начале пальцев. Upnode Control – Axis Alignment, ориентировочные оси – Z(flip), Z. Таким образом мы добились, чтобы система координат соответствовала системе Foot Platform CAT Rig-а. Но мы видим, что кость выгнулась в другую сторону. Чтобы исправить это, идем во вкладку Hierarchy и в свитке Ajust Pivot нажимаем кнопку Affect Object Only и поворачиваем кость как надо. При этом координаты останутся без изменений.

Вот мы и построили левую ногу. Теперь займемся правой. Ее будет строить намного проще. Сначала копируем левое бедро и просто назначаем такие же цели, только на правой ноге. Вес точек, так же аналогично левой.

Теперь копируем голень, здесь так же перекидываем цели на правую ногу, и меняем Upnode на правое бедро.
Теперь назначаем Look At контроллер на джоинт в начале пальцев. Только меняем Upnode на точку облака, только теперь с внутренней стороны стопы.
Теперь копируем левую лодыжку. Здесь так же меняются левые цели на правые и Upnode на правый джоинт возле пальцев.
И наконец, копируем левый палец, также переправляем цели и Upnode. Готово!

Руки будет строить намного проще, потому, что принцип построения точно такой же. Я лишь немного прокомментирую и подскажу настройки контроллеров.

Плечевая кость

Итак, начнем строить левую руку. Поскольку она строится так же как нога, то для создания костей руки мы будем копировать соответствующие кости ноги. Итак, копируем левое бедро, на Position Constraint назначаем новую цель - левый плечевой правильный джоинт, а на Orientation Constraint назначаем левый плечевой правильный джоинт (вес 30%) и левый плечевой развернутый джоинт (100%). Настройте вес так, чтобы задать оптимальное положение кости. Правим размер кости. Вот у нас получилась плечевая кость.

Проверяйте координатные оси. Сверяйтесь с CAT Rig-ом. Хотя здесь уже должно быть все правильно, так как ориентацию кости задают плечевые джоинты и если что то не так, то значит, была ошибка при построении джоинтов.

Предплечье

Ладно, поехали дальше. Строим предплечье. Для этого копируем левую голень и на контроллеры назначаем новые цели: на Position Constraint – локтевой джоинт, а на Look At контроллер – джоинт запястья. Ось Look At указываем X, а в качестве Upnode указываем плечевую кость. Upnode Control – Axis Alignment, ориентировочные оси – Y(flip), X, что значит что инвертированный Y предплечья будет смотреть на X плеча. То есть принцип построения точно такой же как и при построении ноги. Опять же сверяемся с CAT Rig-ом, настраиваем размер кости, Готово.

Ладонь

Теперь строим ладонь. Поскольку на ноге нет похожих на ладонь костей, копируем любую обычную кость, например то же предплечье. Так же переправляем цели в Position Constraint на джоинт запястья, и далее настраиваем Look At. Цель - указываем точку облака на внешней стороне ладони в начале пальцев (помечено красным кружком), Look At ось - указываем X, Upnode - указываем точку облака на запястье дальнюю от большого пальца (помечено желтым кружком), Upnode Control – Look At, ориентировочная ось – Z. Теперь ладонь будет ориентирована по точкам запястья. Опять же настраиваем размер кости, ладонь готова.

Я надеюсь принцип построения понятен. Теперь можете строить правую руку самостоятельно. Просто копируйте кости левой руки на правые джоинты, меняйте цели и обязательно сверяйтесь с CAT Rig-ом при этом. Например, при указании Upnode в Look At контроллере правого предплечья ориентировочная ось будет инвертирована, а в качестве Upnode для првой ладони мы будем выбирать не дальнюю, а ближнюю к большому пальцу точку облака на запястье. Будьте внимательны.

Грудная клетка

Ну вот, практически все готово, осталось только сделать ключицу и два оставшихся хаба – грудь и голову. Принцип построения хабов, такой же как и при построении таза, так что копируем тазовую кость и строим грудную клетку. Выделяем таз, Edit -> Clone тип Copy, все как обычно. Назначаем на на Position Constraint в качестве цели – среднюю точку в системе вспомогательных хелперов грудного хаба (обозначил желтым кружном). Настройки остаются такие же как и на тазовой кости, только меняется Upnode на среднюю точку группы вспомогательных хелперов грудного хаба (ту, что в желтом кружке) и инвертируется Look At ось, чтобы ось X была направлена так же, как у CAT Rig-а, вверх. Ну и размер кости, конечно.

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

Голова

И теперь строим последний хаб – голову. Ну, это совсем просто. Так же копируем какой-нибудь готовый хаб, например грудной, и правим контроллеры. В Position Constraint, в качестве цели указываем среднюю точку группы вспомогательных хелперов головного хаба, на вращение, вместо Look At контроллера, выбираем Orientation Constraint и в качестве цели выбираем ту же среднюю точку группы вспомогательных хелперов головного хаба. Настраиваем размер кости… вот как раз анекдот вспомнил: один другому говорит – «голова болит», а другой первому отвечает: - «как она может болеть – это же кость!!!» Так и у нас. Настраиваем размер этой самой кости и смещаем Pivot так, чтобы голова правильно разместилась «на плечах».

Ключицы

Осталось построить ключицы. Копируем какую-нибудь кость с Look At контроллером, например предплечье. Назначаем новую цель на Position Constraint, это будет джоинт посередине груди, который мы строили специально для этого. В качестве Look At цели указываем левый плечевой правильный джоинт (можно и не правильный, просто для порядка выбираем этот, он как вроде основной). Ось Look At указываем X, а в качестве Upnode указываем среднюю точку в системе вспомогательных хелперов грудного хаба (к которой крепится грудная кость). Upnode Control – Axis Alignment, ориентировочные оси – Y, Y.

Для построения, правой ключицы просто копируем левую и просто меняем Look At цель на правый джоинт. Все оси и прочие настройки остаются как были.

Я поздравляю вас! Все получилось. Мы проделали большую и сложную работу. Теперь мы можем видеть как скелет корректно размещен внутри облака точек и двигается, четко повторяя его перемещения.

Но расслабляться рано, теперь надо сделать то ради чего все это было задумано, а именно перенести анимацию на CAT Rig.

 

Часть 4. Bone Mapping

Здесь постараюсь обойтись минимумом лишнего текста. Ситуация проста и понятна, есть два рига, нужно перенести анимацию с одного на другой. Так давайте же просто сделаем это. Если скелет построен правильно и в соответствии и CAT Rig-ом, то мэпинг произойдет легко и без осложнений.

Работать будем с утилитой которая идет вместе с плагином CAT. Находится она в меню CAT -> Capture Animation. Если вы не настраивали свой UI (User Interface) то меню CAT будет находиться в строке меню среди остальных пунктов. Утилита работает с иерархиями костей. В качестве иерархии-цели можно выбрать только CAT Rig. А в качестве источника – любую систему костей. Итак приступим.

Для начала нужно связать кости нашего BOX Rig-а в иерархию, для этого выбираем инструмент Select and Link и привязываем кости в направлении от потомка к предку. На всякий случай прокомментирую: палец ноги к голени, голень к бедру, бедро к тазу, другую ногу так же, ладонь к предплечью, предплечье к плечу плечо к ключице, ключицу к грудной клетке, другую руку так же, голову к грудной клетке, грудную клетку к тазу. Чтобы было видно связи, я выделил кости BOX Rig-а и во вкладке Display в свитке Link Display поставил флажок Display Links.

Теперь переносим анимацию. Идем в меню CAT и открываем утилиту Capture Animation. Нажимаем кнопку Target Rig и указываем тазовую кость CAT Rig-а. Теперь нажимаем кнопку Source Objects и указываем тазовую кость BOX Rig-а.

Сейчас наша задача заключается в том, чтобы правильно совместить кости ригов, то есть сделать Maping. Давайте попробуем. Находим в списке BOX Rig-а тазовую кость и мышкой тащим ее на тазовую кость CAT Rig-а. (если во вьюпорте выделять кости, то их названия подсвечивается в списке утилиты.)

Дальше - проще. Выделяем кости CAT Rig-а по очереди, правый клик -> в меню мыши выбираем пункт Map Bone и кликаем по соответствующим костям BOX Rig-а.

Во время мэпинга, можно корректировать положение костей.

Если кости накладываются но их положение не верно, значит при создании BOX Rig-а была допущена ошибка. В принципе такие ошибки можно исправлять не отменяя текущих действий. Правим BOX Rig и это тут же отражается на CAT Rig-е. Не забудьте, что на ступню (или фактически, кость пальца ноги) BOX Rig-а мы назначаем не ступню CAT Rig-а, а Foot Platform! Здесь тоже внимательно!

Вот такой результат должен получиться в итоге этих действий. Теперь при необходимости выделите точку, к которой прилинкован Point Cloud, о которой я упоминал в начале, и масштабируйте ее, чтобы настроить оптимальное смещение костей CAT Rig-а.

Когда все готово, нажимаем кнопку Capture Animation.

(Хочу заметить, у меня в версии есть такой глюк, после мэпинга, все нужные кнопки, кроме Load – неактивны. Чтобы они активировались, мне приходится нажимать на кнопку L

836 0 850 98
32
2008-10-22
Великолепный урок. Думаю станет победетилем если не в этом месяце, то в следуюзем точно
2008-10-22
Отличный урок! Побольше бы таких.
2008-10-22
Безумно интересно и безумно сложно, однозначно то что, хотя бы для повторения этого урока надо вырости профессионально очень не плохо...Не спорю урок очень интересный и конечный плод усилий просто супер....Но дома не просто будет повторить, основной нюанс это наличие камер поднимите руки у кого дома хотябы 4....Для студии да можно пострадать....Не примите как за критику урок классный хоть и не вникал ибо применить его сейчас не к чему да и нет возможности....но если понадобиться мы знаем где он лежит!!!!!!!
2008-10-22
Урок очень нужный, спасибо!
2008-10-23
5/5 зёма!
2008-10-23
Отличный урок , спасибо 5/5
2008-10-23
ну скажем даже если нет камер то можно хотябы взять уже имеющийся в прилогаемом файле поинтклоуд и попробовать настроить риг самостоятельно. что я думаю добавит немало опыта в этой области да и вообще.
2008-10-23
Привет всем, спасибо за отзывы. Оказалось, писать урок не такая уж простая задача, пришлось забить на всю работу больше чем на неделю... Но я верю, что мой труд принесет многим реальные плоды в достижении заветной цели - профессиональной анимации. Да, конечно этот способ не для домашних условий, но исли вы скажем организовались в мало-мальскую студию, то уж можно пошукать по знакомым шесть видеокамер. Это же не на разовую работку, можно откатать технологию и шпарить проект за проектом, было бы желание - устремление. Ребята, тут вышел маленький казус, файл доступен для скачивания в разархивированном виде, он сейчас очень много весит, так что кому дорог трафик обождите, редакция пошла на встречу, и файл обещали заархивировать, тогда он будет весить около 3 мб.
2008-10-23
Спасибо тебе Максим за урок. Ещё одно подтверждение что Mocap это не просто. И ещё одно подтверждение того, что можно таки получать приемлемые результаты не имея дорогущих железок. А ещё вызывает уважение труд российских аниматоров, которые работают в рекламе, кинематографе и выпускают нормальные продукты не смотря на отсутствие технического оснащения. Если кто не понял, немного поясню - возьмём 2 урока от Виктора Кулачкина, прибавим этот урок - получим технологию переноса движения с реального человека на компьютерный персонаж, и вот эти все труды (действительно труды, ведь для каждой сцены с реалистичной анимацией надо проделать эти операции, а сколько их может быть в фильме...) заменяются умной дорогучей железкой, после работы которой мы получаем стандартный файл bvh (ну или какой нибудь другой), на который тупо тыкаем мышкой и применяем к скелету персонажа. Так что честь и хвала нашим российским "Кулибинам". А теперь по уроку: Максим, вот мы получили движение в CAT, можно его сохранить в стандартный файл движения, ну например bvh? Конечно цель не в получении каких либо файлов, а в получении реалистичного движения персонажа, но я за стандарты в файлах, и за гибкость в анимации - должна быть возможность "подкрутить" движения если например актёр "недоработал". А "подкручивать" удобнее в программах которые для этого предназначены - Motion Builder, Endorphin... Я так полагаю можно применить твою технологию применительно к Biped в 3Dmax, это так? И сохранить в нужный файл уже оттуда.
2008-10-23
Спасибо, Remark. Что касается Biped, я сто лет с ним не работал, и даже понятия не имею есть ли у него подобные инструменты, типа Capture Animation. И на сегодняшний день способ позволяет делать только то, что описано в уроке. И честно говоря не вижу особого смысла, усложнять, в CAT я могу довольно легко править и монтировать эту анимацию. Ну, если только для порядка, то чисто теоретически, можно совершенно обоснованно утверждать, что в этой системе уже присутствует четкий иерархически правильно построенный и анимированный набор джоинтов. А это значит, что при желании можно подключить толквых ребят, кто шарит в максскрипте, и написать экспортер, который возьмет эту иерархию и сделает преобразование анимации всех джоинтов в какой-нибудь стандартный формат. CAT позволяет сохранять свои анимации только в свой формат. Так что если кто сможет написать утилиту вроде Capture Animation, только не для кота, а вообще, то да. Не вижу в это ничего нереального.
2008-10-23
ссылка на сцену исправлена
2008-10-23
Урок очень интересный,действительно результат отличный,это не сплайны привязывать к точкам.Максим конечно же 5/5 [b]Remark[/b] я чувствую,что скоро в Нижнем Новгороде всё же откроется студия MoCap. Что касается применения к Biped,я тоже искал информацию на этот счёт,пока что нашёл решение,не самое может быть оптимальное,но всё же.В Movimento сохраняю проект в формат [b]С3D[/b] далее в MotionBuilder просто связываю трэки(точки) с болванкой.Пытался экспортировать в [b]BHV[/b] но 3D Max требует правильного названия всех точек,т.е. правое плечо,левое плечо и т.д.,но даже после переименования точек Max всё равно отказался применять BHV к Biped,он(Мах) что то написал,но я так и не понял,то ли ему не понравилось расположение точек,то ли ещё что то,в любом случае проблема решаемая. Вот результат переноса данных в MotionBuilder [url=http://radikal.ru/F/s42.radikal.ru/i097/0810/3c/a3b3bd5ec3da.gif.html][img]http://radikal.ru/F/s42.radikal.ru/i097/0810/3c/a3b3bd5ec3da.gif[/img][/url]
2008-10-23
Вот и Вам, Виктор есть теперь над чем поработать [smile=07] Спасибо.
2008-10-23
5/5
2008-10-23
5/5
2008-10-24
Отличный урок! Конечно 5/5 Кстати, отдельное спасибо Максиму еще и за то, что в свое время именно он "подсадил" меня на САТ. Слава Богу забыл про бипедов и иже с ними, и ни разу не пожалел. Кстати, камеры есть, пока только 5, но думаю найти шестую не проблемма ;) так что надо пробовать!
2008-10-24
О, привет AndrewL. Давненько уже о тебе ничего не слышал, рад, что в свое время наработал себе единомышленника ) Если не планируешь делать сложные движения, то во всю можешь пробовать и с пятью камерами. Просто при трекинге, ручной работы может быть побольше, ведь чем больше камер "видит" маркер, тем легче и точнее отслеживание.
2008-10-25
Да Максим есть над чем поработать,к тому же мне было инетресно применение данных именно в 3D Max,не потому что я фанат этой программы,а просто интересно.Ну а тут такой подробный урок,как раз то что нужно.
2008-10-25
Много букв, неосилил... Но надо внимательно будет перечитать, пока 5/5 :) Тем более актуально, что вроде CAT будет в поставке 3ds max
2008-10-26
круто
2008-10-26
0/0 - недопустимо 5/5 - в самый раз конечно 5/5
2008-10-28
Не знал что у нас в Устькамане есть такие прдвинутые спецыалисты! [smile=18]
2008-10-28
Максюша, молодец! Как ни ужасно мне на САТ переходить, но, глядя на такой результат, придется набраться терпения! Конечно 5/5!
2008-10-31
Спасибо, Заряна. CAT как и любой новый инструмент осваивать не просто, в нем, как и везде есть свои трудности или глюки. Но все постепенно решается и по мере этого все больше привыкаешь и чувствуешь себя уверенее.
2008-11-05
Вы правы это точно победитель! Урок полезен. СУПЕР!!!
2008-11-07
высший бал, без коментариев
2008-12-14
100/100
2009-07-01
Самый лучший урок автору РЕСПЕКТ
2010-02-13
Выполнил урок от начала до конца...Все понятно и доступно написано...это один из лучших уроков которые я видел.....Спасибо!!!
2010-07-02
надо учить Кота [smile=06] байпед -фуфел ! [smile=02]
2011-08-22
Опася, а это уже интересно, как раз то что мне нужно было и как я его раньше не заметил.
2011-10-21
Отличный урок! Благодарю. 5/5.
RENDER.RU