Уроки: Maya

Этот волшебный FBIK

Кто о чем, а я все о том же - ну как не любить Майку! Даже то, что она и гуляет напропалую по рукам, время от времени меняя ухажеров, ничуть ее не портит, только лучше становится.

Maya всегда позволяла сблизиться больше чем другие. Вот и теперь она снова дает-таки дает сорвать очередную ягодку – FBIK. FBIK (для тех, кто слышит о этом впервые) – это Full-Body Inverse Kinematics.

Уже давно от разработчиков Maya ожидали чего-то облегчающего труд рядового трудящегося аниматора. Этакого Character Studio по-Alias-овски (Ша! Пока Autodesk тут ни при чем, после будем петь дифирамбы). А его все не было и не было. Как-то раз китайцам надоело ждать и они изобрели комплект утилит CSforMaya, который с успехом юзался очень многими. Кто ж не помнит созданные с его помощью забавные ролики с участием сексуально озабоченных скелетов! К плюсам пакета можно было отнести наглядного вида скелетон, удачный сетап персонажа, в котором комбинировались возможности прямой и инверсной кинематики, удобные и развитые инструменты анимации и позирования для разделов характера, возможность запоминать отдельные позы, расширенное полуавтоматическое управление пальцами рук, а главное – огромная библиотека клипов, которая могла пополняться своими анимациями. Недостатки тоже были – скелет был исключительно «навязанный» вдобавок на него нельзя было навесить мокапы, что, впрочем, совершенно нивелировалось библиотекой клипов. Так что все было хорошо. Но, как говорится, «осадок остался».

Чтобы использовать мокап многие создавали свои сетапы, наверняка опыта в этом у них – хоть отбавляй. «Старики» улыбались, пионеры страдали и скрипели зубами, шаря по Hypergraph и Outliner, пыхтели, пытаясь создать универсальный риг. Окончательно отчаявшиеся, оглядываясь на Kaydara, ныряли в Motion Builder, а то и вовсе возвращались к MAX заниматься архитектурными визуализациями или шли торговать помидорами. И только самые тупые, пусть даже и не вполне ПОНИМАЯ MAYA, просто ждали и верили. Похоже, дождались! Да-да, речь пойдет об FBIK.

Чтобы попытаться подтвердить это, немного углубимся в хелп и историю.

Full-Body IK был анонсирован сравнительно недавно при выходе Maya 7. Цитата из анонса: «Благодаря интегрированию MotionBuilder® technology и целому ряду других улучшений, коснувшихся старых функций, в программе стало работать быстрее и проще, в особенности с мокап-анимацией… New and Enhanced Character Animation Tools – The integration of Alias MotionBuilder® software’s ’s industry-leading fully-body IK solver makes rigging and posing characters faster, easier and more accurate.» Очень вдохновляет и подвигает на раскопки.

Ограничим флажками район будущего котлована.

Протестировать FBIK на предмет:

a) рига;
b) возможности ручной анимации с использованием прямой и инверсной кинематики;
c) возможности использования любых мокапов в рамках того же сетапа.

Разобьем исследование на несколько вполне самостоятельных частей:

1. Урок 1. FBIK и MoCap.
2. Урок 2. FBIK. Легкоусваиваемая пища.
3. Урок 3. FBIK анимайя, или записки майяньяка.
4. Урок 4. FBX. Экспортно-импортное сальдо.

Хочу надеяться, что приведенные уроки привьют желание попользоваться насчет FBIK.

Да здравствует нерушимый союз Maya и Max – оплот творческих амбиций дружного анимационного сообщества! УРА!

С уважением,
Игорь Леводянский, ilee@adv.md, http://ilee.hut2.ru/index.html

Урок 1. FBIK и MoCap.

А не хотите ли иметь возможность использовать любые мокапы для анимации вашего персонажа!?

Звучит заманчиво, не правда ли? Предлагаю забежать вперед. Предположим, что риг уже готов. Скелетон построен, обозван, меши прискинены и отскинены, FBIK навешен и Character пророщен. Посмотрим, как это выглядит.

Увеличить

Ну вроде ничего особенного – Т-поза, скелетон, малость рябит в глазах. Ну-ка поближе!

Увеличить

Ага, уже что-то проглядывается. По крайней мере видны парочка совпадающих скелетонов и какие-то лэйблы на костях. Поимеем ввиду.

Отключим лэйблы, выделим Hips эффектор (есть такой), и пару движений мышом показывают, что персонаж позится и легко шевелится.

Увеличить

Значит анимировать можно. А пока просто пошевелим ногой.

Для этого выделяем LeftFoot эффектор, и устанавливаем ключи в 1 и 50 кадрах, но особым образом. Обратите внимание, что Auto keyframe отключен, и для установки ключа идем в меню закладки Animation по пути Animation / Set Full Body IK keys / Apply с опциями Keying mode: Body Part и Reach keying mode: Simple key. Затем переходим в 25 кадр и смещаем эффектор. Разумеется, вслед за эффектором движется и нога. Снова ставим FBIK ключ (Ctrl+ F).

Увеличить

На таймлайне появились отметки трех ключей в соответствующих кадрах. Play Forwards убеждает, что анимация произведена. Сейчас уже можно побаловаться, подергать персонаж и понаставлять ключей.

Как бы проанализировать возможность применения мокапов в рамках сетапа FBIK?

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

Troubleshoot full body IK

Error when creating full body IK effectors for animated character

Problem

You cannot add full body IK effectors to a character that is already animated with traditional FK, IK, or motion capture data. You can only create FBIK effectors for characters with no previous animation.

Solution

1. Duplicate your character's skeleton without the keys.
2. Create the full body IK effectors for the duplicate skeleton.

See Prepare your character for full body IK, Label or rename your character's joints, and Create the full body IK system for your character.

3. Turn on the display of the FBIK FK skeleton.

Select Skeleton > Full Body IK > Show FBIK FK Skeleton.

4. Retarget the animation from the original skeleton to the duplicate's FBIK FK skeleton.

See Retargeting workflow in the Skeleton chapter of the Character Setup guide.

Очень обнадеживающие строки. Если можно анимацию персонажа внутри сцены ретаргетить на копию скелетона с навешенным FBIK, то спрашивается, а почему бы не навесить внешний мокап из fbx файла на тот же FBIK? По идее – должно работать. Не без известной доли волнения, попробуем это осуществить. Имея готовую персонажную анимацию нетрудно повторить предложенную процедуру, и уверяю Вас - все работает без сучка и задоринки. Опять же, забегая вперед, самое время вспомнить об анонсированной идее MotionBuilder® technology, включающую в себя плагин импорта-экспорта FBX. Воспользуемся им и экспортируем анимацию в fbx файл. Для этого выделяем скелетон и жмем File / Export Selection с General option: File type: fbx. (Подробности о плагине смотри в уроке 4).

Итак, есть подготовленный к анимации FBIK персонаж, есть анимация, записанная во внешнем файле. Открываем новую сессию в Maya и сразу же импортируем анимацию, а затем импортируем персонаж. Теперь нужно просто произвести ретаргетинг скелетона импортируемой анимации на FK скелетон персонажа. Именно на FK скелетон - это первое. Второе – импортируемая из произвольного fbx анимация, как правило, не соответствует требованиям ретаргетинга в части именования joints. Переименовываем кости согласно Retarget или FBIK спецификации - Skeleton / Joint labeling. Поскольку по большому счету нужно импортировать множество анимаций с однотипными скелетонами, то можно написать небольшой скриптик (для каждого типа скелетонов), чтобы избавить себя от рутинных операций переименования. Третье - чтобы ретаргетинг был успешным, необходимо чтобы исходные позиции для обоих скелетонов были подобны. Первое, что приходит на ум – это Т-поза, или Stance T-pose. То есть необходимо обеспечить, чтобы к моменту ретаргетинга оба скелета находились в Stance Pose или близко к ней. Чем меньше различие в позах, тем точнее передача мокап через ретаргетинг. После выполнения этих операций определяем Neutral Pose для исходного и целевого скелетов и, наконец, производим ретаргетинг. Тревожно ждем и с несказанным удовольствием наблюдаем, как импортируемая анимация аккуратненько начинает двигать FBIK персонаж.

Сравните:

Для упражнения попробуйте сами все это сделать по шагам.

1. Откройте новую сцену Maya.

2. Импортируйте файл FBIK.fbx. Просмотрите анимацию. Обратите внимание на Joint Labelling – лэйблы отсутствуют.

3. Отмаркируйте joints импортированного скелетона. Можете сделать это вручную, если вы уже прочитали материалы последующих уроков, или воспользуйтесь скриптом FBIKfbx_labeling. Загрузите скрипт в Script Editor и нажмите Execute (Ctrl+Enter). Проверьте, появились ли лэйблы на костях.

4. Импортируйте сцену StancePose.mb. Перед ретаргетингом нужно исключить влияние на FK скелетон инверсной кинематики и «отпинить» (освободить) эффекторы. Обратите внимание, что для этого по всем эффекторам в группе humanIK начиная от HipsEff до NeckEff и в Channel Box аргумент Pinning изменен на unpinned, а аргументы Reach Translation и Reach Rotation обнулены. Выделите скелетон StancePose:HipsFK, запустите анимацию Play Forwards. Видно, что выделенный FK скелетон остается на месте, в то время как исходный скелетон совершает движение. Снимите выделение.

5. Выделите source-скелетон Hips. Добавьте к выделению target-скелетон StancePose:HipsFK. Установите для них нейтральные позы командой Skeleton / Retargeting / Set Neutral Pose.

6. Теперь можно произвести ретаргетинг Skeleton / Retargeting / Retarget Skeleton с опциями Lower Body и Upper Body: Joint Rotations Only.

7. Снова нажмите Play Forwards. И вот уже оба скелетона движутся синхронно. Более того, вместе с ними движется и ведущий скелетон, на который и забиндена оболочка. (По вполне понятным причинам, скин я удалил.) Вот и все. Остается подкорректировать мокап, используя возможности FBIK сетапа в прямой и инверсной кинематике. Конечно, можно считать везением, что пропорции скелетонов примерно совпадают. Иначе придется корректировать гораздо дольше. Однако, если не нужно мокап человека переносить на какого-нибудь восьмиухого семикрыла в инвалидном кресле, то технология вполне пригодна.

Перейдем к чужим мокапам и скелетонам. Схема та же. Для эксперимента Вам понадобятся:

1. Файл мокап - robert.fbx.

2. Скрипт для joint labeling - mocap_Labeling.

3. Скрипт для установки скелетона мокапа в Stance Pose - mocap_Posing. Учтите, что если Вы не намерены кеить состояние скелетона в Stance Pose в дополнительном кадре, лучше сразу стать на первый кадр анимации и не выходить из него до окончания ретаргетинга, иначе Stance Pose будет «забыта».

4. Файл StancePose.mb персонажа, на который нужно навесить мокап.

5. Произвести процедуру установки Set Neutral Pose и затем Retargeting. Поскольку передаются только угловые вращения костей, неважно, что скелетоны имеют такую разницу в «росте».

А вот картинки с анимацией самого мокапа и FBIK персонажа, проанимированного с помощью этого мокапа.

Не откажите себе в любопытстве попробовать,

Игорь Леводянский, ilee@adv.md, http://ilee.hut2.ru/index.html

Урок 2. FBIK. Легкоусваиваемая пища.

Уже сегодня в интернете можно найти ссылки на описания и уроки по FBIK:

1. На сайте digitalriver за 30 EUR можно приобрести DVD Learning Maya™ | Full Body IK

2. На сайте 3DKINGDOM лежит туториал by Ajit Singh Yadav

Туториал

3. Есть информация в виде вопросов и ответов, например на форумах: Render.ru, CGtalk.ru

Знакомство с FBIK нужно начинать с хелпа. Откройте главу "Full body IK workflow". Попытаюсь прокомментировать открывающуюся информацию.

Чтобы облегчить адаптацию к FBIK в Maya уже заготовлены два типа сетапов: для двуногих (biped) и четвероногих (quadruped) персонажей. Чтобы их загрузить, открывается окно Visor, там есть закладка FBIK Examples - видите тетку и верблюда? Тащите их средней кнопкой в рабочее окно и препарируйте на здоровье.

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

Схема работы с FBIK сводится к нескольким пунктам:

1. Подготовка персонажа к FBIK.

2. Переименование или маркировка joints скелетона.

3. Создание FBIK сетапа.

4. Позирование персонажа.

5. Анимация персонажа.

Откройте главу "Prepare your character for full body IK".

Подготовка персонажа к FBIK сводится к установке модели персонажа в Т-позу (T-Stance Pose). Требования к Т позе следующие:

- персонаж должен быть развернут лицом в положительном направлении оси Z;
- ноги не должны быть согнуты;
- ладони рук развернуты книзу в направлении "-Y". При этом "+X" локальная ось начала большого пальца смотрит также вниз;

Учитывайте эти требование при проектировании рук скелетона и моделировании оболочки. Хотя... Stance Pose вовсе не обязана совпадать с Bind Pose. Если Вам удобнее при привязке скина, например, растопырить пальцы, развернуть повыше руки или расставить пошире ноги персонажа, делайте это, но потом после биндинга не забудьте привести персонаж в Stance Pose. В общем-то, требования к точности и, как бы это сказать, качеству Т позы всегда были очень условны. Введение понятия T-Stance Pose, вероятно, связано с соглашением Motion Builder Technology по общей совместимости и стандартизации. Насколько будет здорово, если, к примеру, и Ваш персонаж, и мокап, который Вы хотите использовать, будут использовать четко оговоренную T-Stance Pose. Возможно, когда-нибудь, так и будет.

Откройте главу "Label or rename your character's joints".

Переименование и маркировка (лэйблинг) скелетона. Идея понятна - снова стандартизация технологических требований. Однозначно стоит потратить некоторое время и разобраться с названиями. Это позволит гораздо органичнее применять мокапы, конвертировать анимацию между различными пакетами 3D анимации, сближать пайплайны, формулировать исчерпывающие требования технических заданий, облегчить планирование, отладить технологию производства и ускорить достижение конечного результата. Есть еще один аспект необходимости лэйблинга. К настоящему времени в достижимой области накопились огромные базы мокапов. Разумеется, большинство из них не соответствуют требованиям Motion Builder Technology. На этот случай в Maya предусмотрен отличный инструмент под названием ретаргетинг. Спецификация требований ретаргетинга практически полностью повторяет требования по переименованию и лэйблингу. Чтобы использовать "неправильный" мокап, достаточно будет осуществить переименование joints его скелетона вручную или через MEL, и тогда его (мокап) смело можно ретаргетить.

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

Предположим, что Ваш скелетон готов (Стройте скелетон после внимательного ознакомления с требованиями к структуре и отделам FBIK. Не забудьте проверить направление локальных осей всех joints. При необходимости примите меры к их правильной ориентации. Произведите биндинг, и если желаете - скиннинг оболочки, не забыв до биндинга убить History модели). Для ограничения количества влияний на точки оболочки воспользуйтесь скриптом Weight Cutter, который в процессе ограничения не рушит скиннинг (извините за offtopic).

Чтобы осуществить переименование и лэйблинг не обязательно пользоваться Атрибут Едитором для каждой косточки. Достаточно вызвать всплывающие меню Skeleton / Joint Labeling / Add Retargeting Labels или Add FBIK Labels. Возникает одно из окон:

По умолчанию, все косточки вновь создаваемого скелета имеют атрибуты Стороны (Side): Center и Типа (Type): None.

Можно сразу выделить всю иерархию, например правой ноги от Hip до Toe и кликнуть на строку меню Label Right. При этом атрибут Side: Right присвоится каждому joint выбранной иерархии. Затем используйте стрелки курсора и, двигаясь по иерархии вглубь, производите лэйблинг каждой кости, кликая на соответствующий пункт меню. Немного тоскливо, не находите? Так и тут есть фишка для "оптового" лэйблинга. Вся нога делится на два подраздела Leg (начиная от бедра вниз) и Foot (от ступни до пальцев). Вернитесь назад до Label Right. Остается выделенной вся иерархия правой ноги. Кликните в меню на Label Leg - появятся лэйблы у всей иерархии. Теперь, если у вас ступня не из одного сустава, выделите ступню и кликните на Label Foot, и на иерархии корректируются лэйблы. Такой же "multi rename" возможен для иерархии рук (команды меню Label Arm), пальцев (Label Thumb, Label Index, и т.д).

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

К сожалению такого же удобного инструмента для именования joints я не нашел. Можно воспользоваться командами меню Skeleton / Joint Labelling / Rename Joints From Labels (или наоборот Label Based on Joint Names, если joints уже поименованы). Правда, результат не вполне будет соответсвовать спецификации FBIK в том виде, в котором она дана в хелпе. Это кажется немного странным. Но не беда. Есть руки, можно потыкать в joints и пообзывать их в Attribute Editor. Я полагаю, что возможно написать скрипт с похожим интерфейсом, когда имя joint можно выбрать простым кликом. В принципе, в хелпе нет четкой рекомендации - идти ли к лэйблингу от названия joints, или наоборот. Зато есть возможность установить прямую связь между пользовательскими специфичискими именами joints скелета, которые Вы по каким-то причинам хотите оставить, с именами Full Body joints. Для этого воспользуйтесь MEL командой characterize. Важно, чтобы конечный результат соответствовал FBIK требованиям, и пусть Вас не пугают различия в именованиях joints и их labelling. Это нормально.

Еще несколько слов о переименовании. В спецификации FBIK присутствуют всего 4 типа костей скелетона:

Base Joints, это таз или root, который именуется как Hips, бедро, лучевые, ступня, плечо, предплечье, запястье;

Roll Joints, это вспомогательные joints, которых в реальном скелете нет. Например предплечье можно разделить на две части для реализации анатомически приближенных вращений, и вот дочерняя кость будет принадлежать этой группе;

Auxiliary Joints, ключицы, шея, пальцы;

Additional Joints. Это могут быть кости ребер для имитации дыхания, нижняя челюсть, несуществующие кости для реализации, мышечных усилий, мимики и артикуляции.

В переименовании обязательно нуждаются типы Base, Roll и Auxiliary. Причем, если Base и Auxiliary имеют собственные имена, то Roll наследуют имя своего парента.

Еще раз призываю внимательно ознакомиться с приведенными таблицами названий joints и их labelling, их принадлежностью к типу joint и соответствию нужным отделам скелетона.

Напомню, что скрыть или вывести на экран лэйблы можно, воспользовавшись Skeleton / Joint Labelling / Show or Hide All Labels.

Создание FBIK сетапа

Откройте главу "Creating the full body ik system for your character".

Выделите root Вашего скелетона. Все делается одним кликом Select Skeleton / Full Body IK / Add Full Body IK. Сам собой формируется сетап, включающий в себя input и FK скелетоны, группу управляющих эффекторов с хэндлами, распределенных по главному fbikCharacter и вспомогательным подхарактерам.

Осталось разобраться что есть что и зачем.

Input скелетон, это тот самый скелетон, с джойнтами которого производились операции переименования и лэйблинга. Это скелетон, на который забиндена оболочка. Приглядитесь, видите небольшие сферы - это управляющие эффекторы. Каждый эффектор расположен прямо на кости или на их группе, которой он управляет. Размер эффекторов можно менять. В окне Outliner видна группа humanIK, включающая в себя все FBIK эффекторы и FK скелетон. Чтобы увидеть FK скелетон, который по умолчанию скрыт, воспользуйтесь командой меню Skeleton / Full Body IK / Show FBIK FK Skeleton. Анимация персонажа осуществляется путем манипуляций эффекторами в пространстве по положению и углу поворота. Попробуйте выделить любой из них и подвигать. Заметно, что перемещение влияет на положение всего персонажа, а не только отдельно взятой группы. Характерным атрибутом эффекторов является Pinning и коэффициент Reach. О них речь пойдет позже. А пока предлагаю взять таймаут, почитать хелп, покрутить стандартного biped, чтобы откусить и благополучно переварить кусок информации нужной для ознакомления со следующим уроком.

Приятного аппетита,
Игорь Леводянский, ilee@adv.md, http://ilee.hut2.ru/index.html

Урок 3. FBIK анимайя, или записки майяньяка

"Быстрый поиск ни к чему не привел. Мышь, словно взбесившись, рвала внутренности структуры меню. Среднюю кнопку давно заклинило, но клики правой и левой еще стрекотали короткими очередями под ударами моих пальцев. Character приближался. Его конечности вздрагивали, как у больного болезнью Паркинсона, а блендшейпы уродовали полигональное лицо с черными провалами фэйсов, развернутых нормалями вовнутрь. Эйм констрэйнт фокусировал взгляд его незашейденных глаз прямо в душу, а петли анимационных кривых все теснее сжимали сонные артерии. Черный маркер со скоростью 30 фреймов в секунду несся по таймлайну к алой черте финального кейфрейма. Вне сомнений это был конец. Кожух монитора отскочил, и над верхним обрезом экрана появилась иерархия джойнтов с Шоулдером во главе. Инверсная кинематика каждое мгновение выкручивала локоть, обезображивая и без того рассыпающийся тайминг. От хэнда отвалился Индекс Фингер, и, крутанув чайлдами на десяток градусов вокруг локальной оси X, указал в левый нижний угол экрана. Вибрирующие губы исказились вайр деформатором, из колонок SVEN проскрежетало:

- Отключи автокейфрейм, гад!

Я рывком поднял голову со скрещенных на столе рук и проснулся. На мониторе слева от курсора была надпись: Full Body IK workflow."

Не надо удивляться! И не такое может присниться, если месяц поколдовать над возможностями Full Body Inverse Kinamatics. Возможно, кого-то посетят и другие видения. Но посетят, ручаюсь за это, потому что FBIK - достойный галлюциноген в обширной линейке 3D графики. Подсесть на него можно по полной программе и надолго.

Опыт работы с FBIK оставил двойственное впечатление.

С одной стороны, поначалу напрягала необходимость работы с особого вида ключами. Это влекло за собой изменение наработанной практики. Например, обязательно нужно отключить Auto keyframe и сразу забыть об установке традиционных ключей. Если этого не сделать, неприятности не за горами. Во-первых, ключи на элементы fbikCharacters будут проставлены (вопреки утверждениям некоторых пользователей), но не спешите этому радоваться. На это есть во-вторых - ключи будут проставлены так, что в результате анимация, которую можно будет увидеть, будет здорово отличаться от того, что хотелось бы увидеть, причем случайно-разительным образом. Отсюда вытекает в-третьих - придется долго и очень кропотливо вычищать каналы FK скелетона. В-четвертых, в таком случае будет просто некогда заниматься анимацией, подчистка доконает окончательно в ближайшее же время (в зависимости от степени терпения). Это совсем не увлекательный процесс! Работы по "чистке" хватит и так! Поэтому призываю - забудьте про автоматический кейфрейминг и кнопочку "s". Всю анимацию реализуйте только с помощью FBIK ключей.

С другой стороны, после привыкания к проставлению FBIK ключей, откроются очень приятные стороны. Например, персонаж FBIK сетапа прекрасно позится. Просто отлично. Делается это легко и с удовольствием. Но и тут присутствуют свои "неполадки в пробирной палатке". В процессе анимации, чтобы поза заняла прогнозируемое положение, важно закеить все элементы fbikCharacter, то есть использовать тип ключа Key All. Это касается и позирования отдельных фрагментов character (подхарактеров), тогда лучше воспользоваться ключом Key Body Part. В остальных случаях, то есть при использовании ключа Key Selected, в позировании персонажа возможны сюрпризы. Самое обидное, что чаще всего придется пользоваться именно последним ключом. Следовательно, в анимацию будет внесен некоторый элемент случайности, а работа приобретет итерационный характер постепенных приближений к идеалу.

Что же происходит при использовании разных типов ключей?

Загрузим стандартного бипеда. Это можно сделать несколькими путями, например из окна Visor (Window / General Editors / Visor закладки FBIK Examples), или FBIK меню (Animation / Skeleton / Full Body IK / Get Fbik Example).

Широкораспространенная ошибка - использовать стандартные методы кейфрейминга. А вот иллюстрация. Включите режим Auto keyframe. Выделите в группе humanIK HipsEff. Установите в текущем кадре ключ ("s"). Сместитесь по таймлайну и крутаните эффектор. Поза, разумеется изменится. Теперь вернитесь к кадру с первым ключом и посмотрите как персонаж "переколбасило". И эта чушь уже перенеслась на FK скелетон. Graph Editor тому доказательство:

Увеличить

Исправить начальную позу просто - выделите исходный скелетон и выполните Skeleton / Full Body IK / Go to Stance Pose. Но исходная поза - не общий случай, и тут придется руками вычищать каналы FK скелетона и humanIK эффекторов для восстановления ранее установленной позы.

Ключ FBIK All

Идеально подходит для установки персонажа в нужную позу. Для этого в текущем кадре выделите любой эффектор humanIK и закейте персонаж Animate / Set Full Body IK Keys / Apply, либо вызовите ту же команду кликнув на правую клавишу мыши для вызова контекстного меню

Сместитесь по таймлайн и установите персонаж в произвольную позу, последовательно перебирая необходимые для позирования эффекторы, и снова поставьте ключ FBIK All.

Теперь селектируйте любой joint FK скелетона, например, spine1FK и загляните в Graph Editor. Анимационные кривые присутствуют везде, какой бы joint FK скелетона не был селектирован, так как ключи устанавливаются на все элементы fbikCharacter и его разделов (подхарактеров).

Увеличить

Ключ Key Body Part

Картина аналогичная, С тем лишь отличием, что четко позируется лишь тот подхарактер (фрагмент fbikCharacter), эффекторы которого связаны с выбранным через группу подхарактера. Остальные подхарактеры и связанные с ними FK joints, не имеющие ключей на эффекторах позируются исходя из некоторого алгоритма, учитывающего IK кинематику, "пиннинг" эффекторов и их Reach Mode.

Ключ Key Selected

Позирует только конкретную группу FK скелетона, соответсвующую выбранному эффектору. Как ни странно - это основной рабочий инструмент FBIK. С одной стороны, кеить части или весь характер удобно, но это разносит ключи по всему FK скелетону. Ключи размножаются, как кролики, что чревато на финальном этапе анимации большими объемами "чистки". С другой стороны, пользоваться одним только Key Selected тоже нереально, позы фиксировать надо, да и блендить IK с FK тоже необходимо. Поэтому нужно искать некоторое оптимальное соотношение типов ключей для минимизации объемов работ. Вероятно, такой навык нарабатывается только опытом.

"Пиннинг"

Аналогию термина понять несложно. Если эффектор "запинен", то он привязан в системе координат по положению или по углу , и никакие перемещенияе других эффекторов не повлекут его за собой. Эффектор "прикноплен" намертво. Несомненно, удобства здесь есть, например, не придется вручную "отслеживать" положение точки контакта ноги с землей при ходьбе, или положение оперевшейся на забор ладони, в то время как тело перепрыгивает через него. Останется только отследить, чтобы суставы "запиненного" эффектора не "стучали", исключайте полный их разгиб.

Reach Keying Mode

Это основной инструмент блендинга между инверсной и форвардной кинематиками. Reach Mode управляется отдельно по каналам перемещения и вращения. Правило простое: cумма влияний FK и IK всегда составляет 100%. Коэффициент Reach Mode 1,0 означает подавляющее влияние инверсной кинематики, а стремление к 0 увеличивает долю влияния форвардной. Например, Reach Mode 0,7 означает, что доля IK равна 70%, а на FK остается 30%. Кстати, частный случай 0 позволяет навесить на персонаж мокап. Подробнее об этом опыте читайте в уроке 1.

Прежде чем приступить к анимации персонажа хорошо бы тщательно проработать тайминг его движения. Лучше всего это сделать по какому-нибудь референсу. Если тайминг ошибочный, то придется править анимацию и изменять временное положение поз. С этим процессом связаны некоторые трудности (см. ниже).

В технологии анимации с использованием FBIK почти ничего незнакомого нет:

1. Начало. Подготовка тайминга и формирование тайм-листа с фазировками анимации.

2. Приведение персонажа в необходимые позы в соответствии с фазами тайм-листа.

3. Проработка межфазовой анимации, имитация инерций и взаимодействий масс фрагментов персонажа. Зачастую пункты 2 и 3 делаются одновременно, особенно на этапе знакомства с FBIK (как и с другими сетапами), но надо стремиться избегать этого и упорно "изучать матчасть".

Время от времени при IK анимации (после закеивания вращений) эффекторов рук и ног (LeftHand Eff, RightHandEff, LeftFootEff и RightFootEff) возникала странная ошибка, природа которой осталась во мраке - на FK joints, входящие в соответствующие подхарактеры ставились ключи так, что происходило смещение FingerBaseFK относительно HandFK или соответственно ToeBaseFk относительно FootFK. Это приводило к искажениям оболочки. Восстановление начальных значений в каналах с прокеиванием KeyBodyPart и FBIK All картину не изменяло. Переключение на FK и обратно на IK изменением Reach тоже не давало эффекта - FK скелетон оставался изломанным.

Сначала это не очень беспокоило - достаточно было делетировать ключи в каналах FingerBaseFK и HandFK и установить Stance Pose без прокеивания. Оставалось восстановить делетированные ключи. Пока анимации было немного, это сработало пару раз, а потом стало здорово напрягать.

Пришлось прибегнуть к следующему методу, кривому до невозможности: рядышком на таймлайне в свободных от ключей кадре до и после текущего "корявого" кадра закеивать Stance Pose персонажа ключом FBIK All. Затем в анимационных кривых проблемных FK joints удалялись все ключи в текущем "корявом" кадре. В заключении удалялись все ключи в обоих кадрах со Stance Pose.

Не бейте ногами, но иного способа я не нашел.

4. Доработка и редактирование анимационных кривых в Graph Editor и положения ключей в Dope Sheet. При чистке лишних ключей, правке положения ключей на таймлайне надо быть особо внимательным, поскольку чистка и перемещение ключей (даже изменение типа касательной) могут повлечь изменение поз в основных фазах. Работа начинает напоминать переливание из пустого в порожнее, или скорее - "Тришкин кафтан", подлатал здесь, порвалось там. Если вдруг появляется необходимость в смещении позы по таймлайн, используйте любые возможности, чтобы перетащить все ключи (часто разнесенные по таймлайн и подхарактерам персонажа) одновременно (по-моему, это малореально). Иначе поза рассыпается. Попытки зафискировать персонаж, прокеив позу заново приведут к "размножению" ключей по всему fbikCharacter, и лишние ключи снова придется чистить. Вот почему так важен правильный тайминг, впрочем, как и во всех других случайх.

5. Конец близок, если удасться вырваться из цикла:

do

(пункт 2 - пункт 4);

loop;

6. Работайте не только с набором humanIK эффекторов, активно используйте анимацию FK скелетона и блендинг инверсной и прямой кинематики. Не допускайте 180-тиградусных скачков в каналах вращения элементов fbikCharacter при использовании инверсной кинематики и регулярно корректируйте их (не делайте этого анимацией вспомогательных эффекторов, как-то: локтевых, коленных и т.д. и FK скелетона).

7. FBIK ключи можно ставить и при выделении joints Input (IK) скелетона. Это важно для анимации Roll Joints. А вот на joints FK скелетона можно ставить обычные ключи "s" и пользоваться Auto keyframe. Возможно, это недокументированная фишка, но позволяет добавлять дополнительные твисты, к примеру, на Roll joints, что значительно может оживить анимацию, адаптировать положение кистей рук и ступней к предметам и рельефу, имитировать инерционные движения мышечных масс. Пользуйтесь возможностью ОСТОРОЖНО. И не забывайте о хелпе.

Выводы

В FBIK анимации есть три типа ключей.

В FBIK присутствуют одновременно два скелетона - исходный (его можно считать IK скелетоном) и FK скелетон, который генерится сетапом.

"Реальные" ключи устанавливаются ТОЛЬКО на элементы FK skeleton (оговорку по поводу humanIK эффекторов смотри ниже).

Положение FK skeleton и исходного скелетона в процессе анимации не обязательно совпадают.

Различие в положении скелетонов диктуется значениями коэффициентов Reach Mode, отражающих совместное влияние инверсной и прямой кинематик..

Весь fbikCharacter разбит на подхарактеры, например _leftArm, _rightArm и т.д. В каждом разделе группируются только элементы FK скелетона под управление humanIK эффекторов.

Эффекторы humanIK тоже кеятся, но только для удобства кеинга FK скелетона и отражают результат управления разделами fbikCharacter - это раз, или для корреляции (степени совпадения) позирования и анимации исходного и FK skeleton через значения Reach Mode - это два.

Скиннинг оболочки осуществлен на исходный скелетон.

Закеивание поз не означает окончание работ по фазированию анимации. Требуется дополнительное время для корректирования положения элементов fbikCharacter. NB. Не надо смущаться, когда после закеивания позы и смещения туда-сюда по таймлайну (Alt+>, Alt+<) поза меняется. Регулярно проверяйте результаты позирования - не накапливайте погрешность.

Анимация FBIK не всегда носит предсказуемый характер.

Правильная передача движений масс и инерций фрагментов персонажа требует предварительной проработки тайминга и "чистки" каналов на финальном этапе анимации. И тут никак нельзя переоценить роль Graph Editor и Dope Sheet, без которых процесс может очень сильно затянуться.

Очень не хватает при анимации персонажа инструмента запоминания отдельных поз всего характера и его подхарактеров. Это пригодилось бы, когда нужно установить персонаж в позу одним кликом. К решению этой проблемы нужно подключать MEL. Для этого достаточно применить FBIK All, прочитать атрибуты по каналам всех элементов нужных подхарактеров или всего fbikCharacter и выкинуть все это на шелф в виде иконки с заданным именем.

На персонажа FBIK можно относительно свободно "навесить" произвольный мокап через операцию ретаргетинга. Акцептором мокапа служит FK skeleton. "Разрешение" же на использование мокапа дают нулевые значения Reach Mode humanIK эффекторов, через которые можно отключить влияние IK скелетона на персонаж.

Практическую анимацию с использованием FBIK можно посмотреть ТУТ. (52 сек в формате Quick Time. Качайте, чтобы было что бомбить).

Урок 4. FBX. Экспортно-импортное сальдо

Как уже, вероятно, становится понятно всем, речь пойдет о взаимной совместимости различных пакетов. Очень часто на форумах обнаруживаются вопросы о конвертации данных из MAX в Maya и наоборот. Похоже, Autodesk отлично справился с ролью сводни, поскольку в результате совокупления MAX и Maya (точнее MotionBuilder® technology)

48668 Автор:
Актуальность: 342
Качество: 323
Суммарный балл: 665
Выбор Публики
Голосов: 150 оценки

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

2 | След.
аватар
 
Yaroslav Abramov 14 0
// Error: line 0: Must select a source and a target joint hierarchy.
чтото я торможу, делаю все как по писанному, а получаю вот это самое.
майа 2008
аватар
 
Denzil 360 0
Давно искал Вас, Игорь, сказать спасиба за weightcutter, который использую уже года как 2 точно...
Однако не могу понять Вашей радости по поводу FBIK'а.... Как урок - да, хороший, открывает глаза на многое, в том числе и на то, почему я его так старательно избегал. :) Мое сугубо личное мнение - это некий компромис ленивым майщикам, не умеющим самим сделать нормальный сетап и желающим использовать чужие мокап библиотеки, показывая свою "крутизну" в анимации, не делая самим практически ничего.
Хочется отметить:
- ущербность FBIK
-- строгое лимитирование числа костей (из этого вытекает незвозможность напрямую перекинуть мокап, сделаный не по технологии Kaydara, придется поднастраивать констрейны при различной организации спины, рук, ног).
-- свои специфические ключи - ломка техпроцесса, случайное разваливание сетапа (люди жалуются :)).
-- невозможность (трудность) надстройки сетапа из-за ее скрытости
-- невозможность прокеить весть персонаж (как я понял из текста), в нормальном CS это не проблема, отсюда вытекает проблема с копированием поз.
-- применимость только под мощные движки (это про гейм дев).

Короче, не все так радужно и красиво. Сильно попахивает максовским бипедом, а это - путь к деградации. А FBX- кий мокап можно перебросить на любой скелет (поозившись) и без FBIK, накладывающего ограничения на анимацию, а отнюдь не упрощающий процесс.
И по поводу ролика: правая рука перца все-таки "стреляет" в момент постановки банки на пол, да и голова тоже....
Удачи....
Готов продуктивно поговорить 3-го декабря, если Вы Питерский, ибо все упоминаемые Вами люди на Вашем сайте мне лично знакомы, за исключением одного....
аватар
 
Igor 125 0
Олег, благодарю.
Если Вы усмотрели в уроках стиль, то это уже звучит как комплимент. Мне хотелось бы развить эту тему - Вы могли бы конкретизировать, в чем Вы увидели элементы, составляющие стиль повествования, и как Вы его определяете? Не думаю, что это флуд, поскольку подобные рецензии (в полном смысле этого слова) могут быть хорошим уроком для любого уроковаятеля.

А по теме кто-нибудь выскажется?
аватар
 
martyn-k 17 0
По-моему Вы потеряли баллы из-за того, что вместо цитаты из хелпа не посвятили 1 абзац ответу на вопрос "для чего?".
Я впервые обратил внимание на FBIK, и хотя после прочтения для меня многое осталось "за кадром", ставлю пятерки, есть новая тема и есть над чем "париться".
Перечитал Ваши уроки на сайте. Вы на порядок превосходите многих авторов по уровню знаний, но вот стиль...
аватар
 
Serg Beam 1 0
Очень в тему урок. И ролик получился хороший, с юмором. Думаю немало времени ушло на подготовку такого, респект и уважуха автору!
аватар
 
Igor 125 0
Weba, спасибо на добром слове. Уже и не ожидал, что кто-нибудь о ролике что-то скажет.
Модели БМП-2, фигура человека, его одежда, нож, винтовка и консервная банка лежали уже давно, ожидая своего часа. Модель вертолета бог его знает откуда. Скелетон построен соответственно рекомендациям FBIK для сетапов персонажей. При скиннинге персонажа использованы MEL скрипты собственного производства Weight Cutter и Weight Duplicator (см. уроки на сайте), позволяющие облегчить и ускорить процедуру. Взаимодействующие с персонажем предметы – винтовка, армейский нож и консервная банка законстрэйнены на локаторы, которые в свою очередь привязаны к локаторам левой и правой рук. Передача предметов с места на место и из руки в руку произведена путем блендинга привязок локаторов предметов к локаторам рук. Сетап дополнен контрольным элементом для моргания и целевым локатором для фокусировки глаз и выбора направления взгляда. Ручная анимация с использованием прямой и обратной кинематики в рамках сетапа FBIK. На все про все ушло около месяца работы.
аватар
 
weba 1 0
Эй, мелкота! Работают скрипты.
Попробовала кинуть свой мокап. Работает, тока со Stance Pose возня, и опосля joints докручивать пришлось.
Рулезная анимация про про убивца коптера с консервой! Интересно, скока делал?
Кинула бы пятаки, но в "карантине" парюся.
аватар
 
Igor 125 0
Для Титова Виктора.

Перед запуском скрипта откройте (и закройте) меню Skeleton / Joint Labelling, хотя бы из любопытства к наименованию Labels после импорта fbx.
Этого "под}|{опника" достаточно, чтобы скрипт заработал.
аватар
 
Виктор Титов 206 0
а ктони-будь , по нему делал ченить???
скрипт FBIKfbx_labeling. не работает
он говорит что не найдена процедура "retargetingSideLabel"
и где эту процедуру взять ?
аватар
 
crol 168 0
отзывы это не суд, суд чуть выше, там где балл.
аватар
 
Igor 125 0
Дорогие сообщники по "делу об FBIK" - рецидивисты и начинающие! А также все присяжные и заседатели! Выступающих как со стороны обвинения, так и со стороны защиты крайне мало (Спасибо им). Уважаемый crol, на нашей двери написано "FBIK", а не "Контора по приему ставок на уроки". Высказывайтесь по "делу", иначе ОНО перейдет в разряд заказных "висяков".
аватар
 
crol 168 0
Быстро набираешь балы, респект тебе... интресная борьба ожидатся к 31му числу), я не интересуюсь темой, потому оценки не ставлю, но стиль написания интересный. Скоро и я появлюсь с новым уроком, посмотрим что будет в ноябре ;)
аватар
 
Modeller1989 2 0
Я хоть и не работаю в майке, но благодаря таким урок всерьез подумываю переходить на нее,
Спасибо! Класный урок! Респект!
аватар
 
gibsonff 8 0
Надо будет попробовать.
аватар
 
Igor 125 0
А кто пользует FBIK в работе? Какие впечатления по сравнению с другими сетапами?
Есть ли удачные конвертации констрэйнов через FBX? Удобно ли им сводить пайплайны?
Пробовали вешать мокапы на FBIK?
Поделитесь опытом!
Хотелось бы подготовить по этим материалам видеотуториал FBIK, но начали брать сомнения - пригодится ли кому?..
аватар
 
eranicle 28 0
хорошо написано... 5 / 5
аватар
 
MediaPro 5 0
Очень много текста, не стал читать :(
аватар
 
BorisK 22 0
Я самый первый отметился. :) "Не понятно" не в смысле изложения, а в принципе - я еще с этим глубоко не разбирался, не было нужды. Вот помрет бипед, возродится HumanIk (хотя что-то все меньше надежды на это) - тогда и посмотрим, что куда.
Статья хорошая, придает уверенности в том, что FBX не только громкие лозунги автодеска/алиаса/кайдары про межпакетный формат, но и реально работающая вещь. Ессно, с некторыми недостатками и недоделками, но не все сразу.

аватар
 
Igor 125 0
Рад, что смог обрадовать хоть чем?
В компании с BorisK трудно себя чувствовать уверенно, тем не менее мне интересны отзывы об уроке, а никак не ссылки на Softimage.
Не возражаете?
Спасибо.
аватар
 
BorisK 22 0
Igor - ILM и Industrial Light & Magic - это разные вещи? Туда надо сообщать по отдельности?
Дримворкс - это не компания Спилберга (была)?
Шрек - Вы уверены, что в http://www.microsoft.com/presspass/press/1997/feb97/drmwkspr.mspx Softimage нужно читать как Maya?
и т.д.

Много смеялся... Над обоими :)
2 | След.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 1012 уникальных посетителей