Создание и настройка скелета для анимации персонажа

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

Что в этом уроке:

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

Для кого этот урок:

  • новички и не совсем новички в анимации
  • те, кому не хочется тратить время на изучение рига
  • те, кому хочется сэкономить 3 - 4 дня на создание рига
  • в каком-то смысле, это ещё и урок MEL и сетапа. Мой скрипт не содержит каких-то сложных моментов, все функции описаны в help-е и их названия легко дают понять, что я использую в данный момент.

Начало. (Файл start.mb)

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

Итак, наш персонаж. Модель расположена в начале координат, направлена по оси Z. Руки и ноги немного согнуты – это необходимо для корректного задания направления для ikHandle. Либо, если конечности совершенно прямые, вам будет необходимо задавать направления вручную.

Начнём строить скелет. Что нужно помнить:

  • суставы обязаны иметь нулевые значения вращения. Никогда не вращайте суставы при построении скелета.
  • при активном инструменте создания суставов у вас есть возможность двигать текущий сустав средней кнопкой мыши. Пользуйтесь этим.
  • если вам нужно сдвинуть сустав в середине иерархии, у вас всегда есть кнопка Insert. Так вы передвинете сустав на нужное место, не затрагивая другие суставы скелета.
  • помните, что скелет – иерархия суставов. Т.е. скелет это шарниры, которые отображаются в виде шариков во вьюпорте. Треугольные соединения между ними ("кости") не играют никакой роли – они только показывают, как два сустава расположены в иерархии. Можете войти в Outliner и убедиться, что это действительно так. Поэтому, можете мысленно крутить эти шарики и, вместе с ними, соответствующую массу тела персонажа, чтобы лучше понять, где расположить сустав.

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

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

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

Построили суставы в середине, теперь переходим к рукам.

Строим сустав ключицы. Ключица выполняет важную роль – попробуйте ссутулить плечи или распрямить их, поднять руки вверх. Ключица будет работать почти во всех движениях руки. Так что не забывайте об этой важной кости. (Конечно, вам не нужна ключица для анимации персонажей комикса xkcd. )

Так же не забываем, что в окне перспективы можно войти в режиме wireframe или X-ray для того, чтобы рассмотреть со всех сторон сустав и массы персонажа. Это поможет вам поместить сустав на его место. Сустав плеча старайтесь расположить в центре массы плеча персонажа. Сустав локтя располагаем точно посередине лупов для сгиба.

Идём дальше. Строим суставы для пальцев. В середине ладони расположим сустав, от которого будут идти суставы пальцев. Первыми стройте суставы того пальца, который находится на одной линии с рукой. В данном случае это средний палец. Видите, у нас получилась почти прямая линия из суставов. Теперь можно взять основание среднего пальца и скопировать нужное число раз (ctrl+D). Суставы кончиков пальцев можно расположить, используя привязку к вершинам.

Суставы большого пальца можно отпарентить от общего основания и припарентить к суставу кисти (выбираем основание большого пальца – Unparent, добавляем к выделению сустав кисти – Parent).

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

Итак, мы построили половину скелета. (Файл half_skelet.mb).

Если включить отображение локальных осей, то можно увидеть, что мы имеем хаотично ориентированные суставы. Исправить это можно при помощи замечательного скрипта от Comet-a. Найти можно тут: http://comet-cartoons.com/maya.html

Но сначала самое главное – нам нужно тщательно переименовать все суставы. ВСЕ суставы, ВСЕ объекты рига, да и вообще все объекты сцены должны иметь уникальные вменяемые имена. Если это левый сустав бедра, то так и пишем “L_hip_jnt”. Никаких joint125 или sphere67.

Что это даёт:

- вы легко ориентируетесь в объектах

- вы можете писать скрипты, работающие с объектами определённым образом. У вас не будет ситуации, когда в одной иерархии будет несколько объектов с одинаковыми именами.

- соответственно, сторонние скрипты работают корректно

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

Схема того, что должно у вас получиться:

Мой скрипт поддерживает персонажей с такой иерархией суставов (ну ещё можно добавить хвост). Поэтому, если вы будете им пользоваться, то проверьте скелет персонажа.

Переименованный скелет можно посмотреть тут: (Файл half_renamed.mb).

Теперь можно заняться ориентацией суставов.

Для начала отпарентим бедро и ключицу от центрального скелета. Выберем первый сустав спины и выделим всю иерархию (select hierarcy). Запустим скрипт.

Рассмотрим настройки.

World Up Dir задаёт вектор на который будут ориентироваться локальные оси объектов.

Aim Axis – та локальная ось, которая будет смотреть на потомка.

Up Axis – та локальная ось, которая смотрит в направлении  World Up Dir.

Aim Axis у нас всегда X. World Up Dir выставляем так, чтобы все суставы смогли ориентироваться этому направлению уменьшая хаотичность результата. Например, сейчас мы хотим, чтобы локальная ось Z стремилась в направлении World Up Dir. Если мы выберем ось Z в качестве World Up Dir, то в данном примере всё будет хорошо, но если у вашей модели позвоночник сильно перекручен в плоскости YZ? По этой же причине мы не выбираем ось Y. Выберем ту ось, по которой меньше всего деформаций – ось X. И все суставы своими осями Z могут единообразно стремится в этом направлении.

Скрипт позволяет вручную редактировать локальные оси. Для этого в окне Tweak наберите небольшое значение (например, 5 градусов) для нужной оси (направляющая у нас всегда X поэтому пишем в первом прямоугольничке "5"). Выделяем нужный сустав и жмём на "Manual+" или "Manual-".

Сейчас мы редактируем то, как будут гнуться суставы. Согните у себя на руке палец и представьте, что будет, если бы какой-то нерадивый вдруг сделал так, что палец теперь гнётся куда-то в бок, а не внутрь ладони. Вам бы не хотелось, правда? Поэтому повертите суставы по осям – посмотрите, туда ли они гнутся. Если нет, подправьте. Главное, не забудьте обнулить вращение, перед тем, как редактировать локальные оси.

Аналогично я повернул немного оси на суставах пальцев.

Teперь настраиваем суставы ног.

Также вы можете припарентить к суставу какой-нибудь вспомогательный обьект, чтобы лучше понять плоскость вращения. Например, простой плейн.

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

Ориентированный скелет можно посмотреть тут: (Файл orientedJoints.mb)

Вот, практически всё. Теперь, у вас может возникнуть потребность разделить "кости" рук и ног на сегменты. Например, для последующего рига. Мой скрипт не оговаривает количество сегментов в костях конечностей. Но, 3 - 4 сегмента позволят растягивать конечности более корректно. То же касается поворота кистей и предплечья.

Для того чтобы ровно вставить сегменты, можно создать следующую конструкцию. Берём 2 круга и столько локаторов, сколько у нас будет сегментов. Присоеденим локаторы к кругам через pointConstraint, выставляя нужные веса. Теперь локаторы всегда ровно делят расстояние между кругами. Используя привязки, ставим круги на нужные суставы, а новые сегменты строим через insertJoint, также используя привязки.

Теперь восстановим связи конечностей и центрального скелета. Отзеркалим конечности (выделяем, например, сустав ключицы и зеркалим через Mirror joint со значениями по умолчанию. Не забудьте выставить автоматическое переименование с L_ на R_).

На этом построение скелета закончено. (Файл finalSkeleton.mb)

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

Прискиненого персонажа можно посмотреть тут: (Файл ReadyToRig.mb)

Все! Теперь вы можете начать процесс рига. Или, если вам лень, или вы не знаете как, то можете воспользоваться, например, моим скриптом авторига. Если вы сделали всё правильно, то он у вас запустится.

Полностью готовый к анимации персонаж: (Файл FIN.mb). Скрипт авторига можно взять тут: (Файл MBcatAutoRig.rar).

Обсуждение скрипта авторига тут: http://render.ru/forum/viewtopic.php?topic_id=133149.

Спасибо halinka за помощь в оформлении. Спасибо, что дочитали до конца. Надеюсь, урок оказался полезным.

792 0 850 44
12
2010-03-01
Нет не интересно, совсем... я даже читать не стал. Лучше почитать заметки Михаила Бажуткина из книги Цыпцына. Зато поставлю 5/5, а то с максерами тяжко бороться. )
2010-03-01
Да и скриптов этих бесчисленное множество.
2010-03-01
[quote=Mamvel] Нет не интересно, совсем... я даже читать не стал. Лучше почитать заметки Михаила Бажуткина из книги Цыпцына. Зато поставлю 5/5, а то с максерами тяжко бороться. ) [/quote] Рас так то тоже поставлю 5/5 хоть я и максер)))
2010-03-01
В целом все более или менее хорошо, только не понравилось то,что используются какие-то нестандартные скрипты... Все это легко делается и с помощью обычных инструментов.
2010-03-02
отличный урок. а вот персонаж ужасный. какая-то жертва гаитянской обрядовой магии. бррр......
2010-03-02
[quote=minstrel]В целом все более или менее хорошо, только не понравилось то,что используются какие-то нестандартные скрипты... Все это легко делается и с помощью обычных инструментов.[/quote] ну по теме урока я использую всего один "нестандартный" скрипт. И по моему мнению он выгодно отличается от стандартного Orient Joint. Отличный интерфейс в котором собрано всё что нужно, за 1 клик настроить ориентацию, тут же подправить угол и всё ... без заморочек с концами скелета. [quote=redCrocodile] отличный урок. а вот персонаж ужасный. какая-то жертва гаитянской обрядовой магии. бррр...... [/quote] 0_о Надо было монстра моделить XD *шепотом* есть набор мелкополигональных иголок ... тссс)) [quote=Mamvel] Нет не интересно, совсем... я даже читать не стал. Лучше почитать заметки Михаила Бажуткина из книги Цыпцына. Зато поставлю 5/5, а то с максерами тяжко бороться. ) [/quote] ну вот если бы вы прочитали, то поняли, что того, о чем я пишу, в Книге нет. Но вам, видимо, интереснее бороться с максерами.
2010-03-12
Хороший урок. По ригу один из самых нескучных.
2010-03-14
Ставлю пятерки за скрипт по авто ригу (уже проверил на своем персонаже),если вручную такой риг делать для каждого нового перца можно с ума сойти. Пишу потому, что делал практически такой же риг вручную по видео уроку про монстра с деревом на спине, думаю автор видел такой!
2010-03-23
Скажу спаасибо!!! за урок ,завтра буду пробовать :)
2010-03-27
Пятерки с меня. Молодец, так держать!
2010-04-22
В принципе, неплохо ,хоть я в основном ток глянул... Значит, разбираешся в риге системно ,у меня как то более творческий подход, хз как буду делать, хоть и делаю раз 20 - й... Обязательно посмотрю, жаль для макса нет таких уроков, сам пытался разобраться, и пытаюсьсь... А насчёт "Спасибо halinka за помощь в оформлении, жаль что не монстр как некоторые писали, ей думаю не составило б труда часа за 2 на уровне Доминанс вор
2011-08-22
Sposibo za urok, ocen pomog
RENDER.RU