Серия уроков по риггингу в Blender. Урок 1: арматура, кости, иерархия

Приветствую всех, кто заглянул сюда! Это серия уроков из двух глав для самых маленьких и не только по риггингу в блендере

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

Уроки будут разделены на две главы: простые и продвинутые. Сначала пойдет простая, мы изучим основы риггинга, т.е. зачем и как, заодно зачерпывая базовый функционал программы. если ваша цель - чисто по быстрому сделать деформирующий скелет для позинга, и забить, то первых четырех уроков вполне хватит, дальше смысла читать нет

В продвинутой же, когда мы уже, как говорилось в одном меме - смешарики, и поняли, что от риггинга в одном месте больно, будем во всю использовать Python и Blender API, писать GUI для ригов, продвинутые операторы вроде переключения IK/FK цепей, родителя для кости

Предварительные оговорки:

  • Занятия будут идти в Blender 3.3, однако скоро выйдет следующая версия - Blender 3.4. Так как никаких ломающих изменений не будет - то я сразу переключусь на нее. Тоже самое, когда выйдет 3.5 и так далее. Если будет использоваться фича из новой версии - я об этом скажу
  • Необходимо базово изучить сам блендер, интерфейс, навигацию, общепринятые хоткеи. Сделать это можно например вот тут
  • Желательно знать (понимать) хоть немножко математики, хотя бы 7-9 классов
  • Никаких внешних аддонов использоваться не будет (по крайней мере пока что в планах такого нету), только строенные, исключительно добавляющие удобства, да и они будут связаны в основном со скриптингом
  • Я не буду пересказывать то, как писать на питоне, или основы взаимодействия с API блендера. Затронуто лишь будет то, что касается нашей темы. Перед стартом второй главы выйдут несколько уроков по API, на которые я буду ссылаться
  • Если у вас есть какие-то предложения по улучшению уроков, то не стесняйтесь их писать (естественно если они в рамках приличия)

Ну чтож, давайте наконец-то начнем!


Смысл риггинга

В 3д графике анимация выполняется при помощи установки ключевых кадров (ключей) - главных поз объекта на определенных кадрах, а все положения в промежуточных кадрах между ключами программа достраивает сама (это называется интерполяцией, пришло из математики)

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

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

Смысл риггинга - как раз воплотить всю эту идею в жизнь, сделать скелет, которым аниматор сможет удобно манипулировать объектом, а после этого поддерживать этот скелет, улучшать его


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

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


Иерархия

Весь риг построен на принципе иерархии ака связях родитель-потомки между костями. Названа связь по примеру из генетики, где подобно тому, как дети наследуют черты от родителей, кости-дети наследуют трансформации кости-родителя, т.е. к их собственным трансформациям поверх добавляются трансформации родителя. Далеко не просто так потомки упоминаются во множественном числе, а родитель в одном: кость может иметь всего лишь одного родителя (на самом деле функция под названием switch Parent иметь их хоть тысячу, но обычно только один родитель активен, так как воздействие сразу нескольких родителей не особо имеет смысл в большинстве случаев), но ее потомков может быть сколько угодно, хоть 2, хоть 20

Давайте перейдем к блендеру, где это и наглядно увидим

Отчищаем сцену, если у вас не изменен стартап файл, и ищем в меню Add в заголовке вьюпорта Armature->Single Bone

Screenshot_20221124_032540.png

Screenshot_20221124_032615.png

Мы создали объект-арматуру с одной-единственной костью. В блендере скелет обзван Арматурой, так как разрабы любят показать всем, что блендер не такой как остальной софт :)

Переходим в режим редактирования арматуры. В нем мы устанавливаем костям позицию, которая будет для них нулевой, дефолтной (выставляем так называемую рест позу, Rest Pose) и строим саму иерархию (т.е. определяем, кто кому будет родителем, а кто потомком)

Screenshot_20221124_033444.png

Rest Pose - это тоже очень важное понятие, но мы разберем его вместе с тем, что такое системы координат кости

Кости в блендере состоят из трех частей - хвоста, тела и головы

Screenshot_20221124_033542.png

  • Голова - это основа кости. Так например если перейти в режим позы ака Pose Mode (режим, в котором арматура анимируется, и ставятся ключи), то вращение и масштабирование будут идти именно от головы
  • Тело позволяет быстро выделить и голову, и хвост
  • Хвост - конец кости. От хвоста будут идти потомки кости в режиме connected, но об этом далее

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


Связь родитель-потомки

Выделяем хвост нашей кости, и жмякаем английскую Е, ведем мышкой куда-нибудь, и жмем ЛКМ, чтобы подтвердить операцию. У нас появилась еще одна кость

Screenshot_20221124_035717.png

Мы применили операцию под названием экструдирование. Наверняка вы ее знаете по моделированию. Как и в моделинге, в редактировании арматуры она создает новую кость из выделения, сохраняя связь с ним. Собственно, тут и есть пример отношения родитель-потомок. Если выделить нашу новорожденную кость, и посмотреть в редактор свойств->вкладочка Relations, то в в поле Parent будет указано имя кости, из которой мы ее сделали. Она и будет родителем для нашей кости

Screenshot_20221124_040115.png

Кстати да, у костей есть имена. Сохранять их в порядке очень важно, а иначе станет неудобно ориентироваться в риге: довольно часто придется указывать имена костей, и вряд ли это будет удобно с Bone.001, Bone.002. Переименовать кости можно либо в редакторе свойств, либо через хоткей F2. Мы назовем нашу кость-родитель как "Parent", а потомка как "Child". Будем так сказать сразу приучатся держать риг в чистоте, а заодно мне будет легче вам рассказывать. На скрине я показал, что как переименовать

Screenshot_20221124_040648.png

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

Screenshot_20221124_040950.png


Собственно, что нам дает то, что Child - это потомок Parent? Очень хорошо это видно в режиме позы: стоит подвигать Parent, как Child тут же последует за ним

При вращении Child видно влияние опции Connected. Она велит кости, что ее голова должна быть намертво приварена к хвосту родителя. Разорвать это никак не получится, даже в режиме редактирования: хвост Parent и голова Child будут единым целымScreenshot_20221124_041803.png

В режиме позы кость-потомок с Connected в принципе нельзя будет двигать - только вращать и масштабировать (при использовании хоткея G вместо оператора перемещения будет запускаться оператор вращения). Опция Connected является обязательной для такой штуки как инверсная кинематика (IK), но и бывает полезной, когда например кость должна только вращаться (те же кости рук), и не двигаться

Если убрать эту галочку, то Child станет жить отдельно от Parent, но все равно будет двигаться вместе с ним в режиме позы

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

Screenshot_20221124_043455.png

У отношений между костями есть куча дополнительных опций: например галочка Inherit Rotation позволяет отключить наследование вращения. Мы разберем их, если они понадобятся, прямо на месте

Для того, чтобы назначать связи, вовсе не надо постоянно экструдировать. Это можно делать, например выбирая имя кости в поле Parent во вкладке Relations, но еще лучше - использовать хоткей Ctrl + P. Он позволяет установить связь родитель-потомок, припарентить одну кость к другой. Хоткей работает по следующей схеме: Последняя выбранная кость станет родителем для всех ранее выделенных костей. Опции Connected и keep offset позволяют устанавливать значение галочки Connected. Поэкспериментируйте: продублируйте кости через Shift + D, переназначайте родителей с Connected и keep offset, покрутите в режиме позы

Существует противоположный Ctrl + P хоткей - Alt + P - он либо убирает галочку Connected (Disconnect Bone), либо в принципе убирает родителя (Clear Parent)

По сути, то, что мы увидели - это и есть иерархия - структура, где все построено на связи родитель-потомок, хоть и мега простая, из двух элементов. В сложных ригах все также - у костей есть родитель и потомки, только там могут быть нехилые цепочки костей и много-много потомков. Вот пример гуманоидного рига: кость pelvis тут главная. За ней следуют кости спины, за костями спины кости рук и головы

Screenshot_20221124_044240.png


Итог

  • Весь риг строится на иерархии костей
  • Родитель-потомок - связь между костями, когда кость-потомок добавляет к своим трансформациям трансформации кости-родителя
  • Арматура - тоже самое, что и скелет
  • У арматуры есть режим редактирования, где мы устанавливаем костям дефолтное положение (рест позу) + настраиваем иерархию, и режим позы - где мы анимируем сами кости
  • Хоткеи Ctrl + P и Alt + P - ваши лучшие друзья

Это все, что я хотел сказать в этом уроке. Иерархия - это база, это то, без чего риг не смог бы существовать в принципе. Жизненно важно понять ее, к тому же это не сложное понятие. Если вы все поняли - то значит жду вас в следующем уроке, который выйдет в скором времени. Желаю всем выдержки на этом сложном пути, всем удачи, всем пока!

697 0 850 15
3
2022-11-26
Замечательный пост! Выражаю благодарность автору за такую разжеванность. Продолжай в том же духе;)
2022-11-28
Спасибо за материал!
2023-12-22
Классный пост, полезные уроки, автору спасибо за труды. Недавно прошел курс по блендеру 3D https://skillsupschool.ru/courses/3d-graphics/blen... в скилс ап, в тандеме с данными уроками получается очень продуктивно, рекомендую.
RENDER.RU