Риггинг низкополигонального персонажа в Blender
В этом уроке вы узнаете, как создать базовый риг для персонажа в Blender. Несмотря на то, что в Blender существует аддон Rigify позволяющий автоматизировать процесс создания ригга для двуногих, вам не помешают знания по созданию скелета и инверсной кинематики самостоятельно. В конце урока мы соединим арматуру с меш-объектом и настроим веса для вершин.
Для выполнения данного урока вам понадобится персонаж. Можете использовать того, что прилагается к уроку или воспользоваться собственным (так даже лучше будет).
Финальный результат
Импортируйте персонажа в новую сцену (File → Append). Также расположите 3D-курсор в центре оси координат.
Добавьте в сцену арматуру.
Чтобы видеть кости внутри персонажа без перехода в режим Wireframe отметьте опцию X-Ray в меню Display на вкладке Object Data.
Перейдите на вид сбоку, в режим редактирования арматуры и отодвиньте кость в сторону по оси Y.
Поверните кость на 90° и расположите ее в районе талии, как на изображении ниже.
Выделите верхушку кости и проэкструдируйте из нее новую (E).
Продолжаем экструдировать еще две кости (грудная клетка и шея).
Создаем еще одну кость для головы. На виде сбоку мы пытаемся повторить форму скелета человека, но на виде спереди должна сохраняться прямая линия.
Теперь снова выделите верхушку первой кости и начните экструдировать из нее кости в обратном направлении.
Дайте осмысленные имена всем созданным костям. Основную назовите Base (остальные pelvis, stomach, chest, neck и head).
Чтобы видеть имена костей в окне 3D-вида отметьте опцию Names в меню Display.
Разместите 3D-курсор в том месте, где должна начинаться бедренная кость и нажмите Shift + A. В режиме редактирования данное сочетание клавиш создаст новую кость.
Расположите ее соответствующим образом.
Продолжаем экструдировать кости ног.
Еще две кости для ступни и пальцев.
Дайте осмысленные имена костям ног (thigh.l, lowerleg.l, foot.l, toe.l). При создании имен используйте суффикс .l или .L. Благодаря этому Blender будет знать, что данные кости относятся к левой части персонажа, что упростит задачу при создании костей и их имен для правой части.
Выделите кость thigh.l и привяжите ее к кости pelvis. Также, убедитесь, чтобы опция Connected была отключена.
Расположите 3D-курсор в районе ключицы и создайте новую кость (Shift + A).
Расположите ее должным образом.
Начините экструдировать из нее кость руки и предплечья.
На виде сверху должна сохраняться прямая линия.
Дайте костям осмысленные имена (collar.l, upperarm.l и lowerarm.l).
Выделите кость collar.l и привяжите ее к кости chest. Также, убедитесь, чтобы опция Connected была отключена.
Проэкструдируйте кость для кисти.
Создайте три кости для среднего пальца.
Выделите все три кости пальца, продублируйте их и расположите в соответствии с остальными.
Пунктирные линии указывают но то, что между вновь созданными костями и костью кисти существует связь родитель-потомок.
Дайте костям осмысленные имена (palm.l, f1a.l, f1b.l, f1c.l…).
Создайте кости для большого пальца и также дайте им имена (ta.l, tb.l, tc.l).
На данный момент мы закончили создавать деформирующие кости для левой части персонажа. Вернитесь в объектный режим и расположите 3D-курсор в центре оси координат (и в центре арматуры соответственно).
Снова перейдите в режим редактирования и выделите все кости имеющие суффикс l.
Продублируйте данные кости и оставьте их в том же положении (Shift + D).
Измените точку вращения на 3D-курсор.
В меню Armature выберите опцию X Local.
После того, как продублированные кости отразятся по оси X, к их суффиксам добавятся надписи .l.001. Нажмите W и выберите опцию Flip Names. Данная опция изменит все надписи .l.001 на .r.
Теперь все деформирующие кости созданы.
В режиме позирования (Pose Mode) можно увидеть текущий результат работы созданного вами скелета. После манипуляций с костями верните их в исходное состояние (Alt + G и Alt + R).
Теперь создадим инверсную кинематику (IK) для ног. Перейдите в режим редактирования арматуры и отметьте опцию X-Axis Mirror на вкладке Options.
Проэкструдируйте новую кость.
Назовите новые кости ik-leg.l и ik-leg.r. Также разорвите связь с родительской костью и снимите галочку с пункта Connected. Благодаря этому наша кость будет перемещаться независимо от остальных.
Из кости foot продублируйте новую и расположите ее перед коленом персонажа (верните точку вращения на median point для удобства работы). Назовите две новые кости knee.l и knee.r и укажите в качестве родителей для них кости ik-leg.l и ik-leg.r соответственно.
Перейдите в режим позирования и выделите кость lower-leg.l.
Назначьте для нее ограничитель Inverse Kinematics.
Установите для ограничителя следующие параметры.
После этого кости с большой вероятностью повернуться в сторону. Вернуть их в исходное положение можно с помощью параметра Pole Angle.
Теперь проделайте аналогичные операции для другой ноги.
В режиме позирования проверьте результат работы (после верните кости в исходное состояние).
Перейдите в режим редактирования арматуры и расположите 3D-курсор между ног персонажа.
Создайте новую кость и назовите ее root. Это будет основная кость всего ригга и перемещая ее мы будем перемещать персонажа по сцене.
Расположите ее горизонтально.
Привяжите кости инверсной кинематики и кость base к кости root.
Снова можете проверит результат работы ригга в режиме позирования. После всех манипуляций верните все в исходное состояние (Alt + G, Alt + R).
В режиме редактирования арматуры поочередно выделите все не деформирующие кости (ik-leg.l, ik-leg.r, knee.l, knee.r, base и root) и отключите для них опцию Deform. Данные кости помогают управлять риггом и никак не будут деформировать сам меш.
Вернитесь в объектный режим.
Выделите модель персонажа, затем с зажатой клавишей Shift арматуру, нажмите Ctrl + P и выберите пункт With Automatic Weights. Blender автоматически создать столько групп вершин, сколько деформирующих костей содержит указанная арматура и назначит для них веса оптимальным образом (с его точки зрения 🙂 ).
Теперь в режиме позирования при вращении костей происходит и деформация меша.
Помимо всего вышесказанного, опция With Automatic Weights создает модификатор Armature для меша.
На вкладке Object Data вы можете найти все группы вершин. Их имена соответствуют именам костей.
При деформации персонажа можно заметить, что он деформируется не наилучшим образом. Исправить это можно в режиме Weight Painting изменив значения весов для нескольких групп вершин.
Измените способ отображения костей.
Выделите меш и включите для него отображение сетки (wire).
Выделите арматуру и перейдите в режим позирования. С зажатой клавишей Shift выделите меш и перейдите в режим Weight Paint.
На панели инструментов укажите назначаемый кистью вес (Weight), силу воздействия (Strength) и активируйте зеркальность работы кисти по оси X (X-Mirror).
Выделив любую из костей вы увидите текущие веса ее группы вершин.
- Синий — нет воздействия (0)
- Зеленый — 50% воздействия (0.5)
- Красный — 100% воздействия (1)
Если вы хотите увеличить воздействие на некоторые вершины, то рисуйте по ним кистью с высокими значениями. Во время этого процесса вы всегда можете повернуть кость и увидеть текущий результат работы.
Если же нужно убрать воздействие с вершины или ослабить его, уменьшите вес на кисти и проведите ею по нужным вершинам.
Проверяйте работу всех прилегающих костей на предмет корректной деформации меша.
В местах изгибов две кости могут воздействовать на одни и те же вершины. Старайтесь равномерно распределять между ними веса, чтобы сумма всех весов была равна 1. Например, 0.5 для одной кости и 0.5 для другой. Это даст наилучшие результаты.
Вы также можете редактировать сам меш в режиме редактирования для достижения лучших результатов деформации.
Проверьте работу всех костей и настройте веса для достижения наилучшего результата. В этом вся суть ригга (или лучше скиннига). Чем лучше распределены веса, тем качественнее и правильнее деформации персонажа.
Вот собственно и все! Персонаж готов к анимации 🙂
Серия уроков по риггингу в Blender. Урок 1: арматура, кости, иерархия
В 3д графике анимация выполняется при помощи установки ключевых кадров (ключей) — главных поз объекта на определенных кадрах, а все положения в промежуточных кадрах между ключами программа достраивает сама (это называется интерполяцией, пришло из математики)
Определенно легко выставлять эти позы, когда объект монолитен, и ничего внутри него ничего не должно двигаться. Но вот стоит взять что-то комплексное (например, робота), или еще хуже — живое существо, где довольно сложные деформации, то жизнь превратится в ад. Работать с кучей вершин будет очень сложно: придется постоянно все перевыделять, двигать, вращать, сначала выставив пивот (т.е. точка, от которой будут идти трансформации), а в случае с живыми существами вообще будет очень легко сломать их форму
В общем, такое — определенно не дело, поэтому придумали концепцию управляющих элементов, за которыми бы следовали определенные вершины, и назвали костями, а все кости — скелетом, по аналогии со скелетом живых существ. Однако одних костей тоже было мало, работать с огромной кучей костей, управляя каждой — тоже очень сложно и времязатратно, поэтому придумали делать поверх еще один слой контроля с той же инверсной кинематикой, контролами, которые управляли уже костями и т.д. и т.д.
Смысл риггинга — как раз воплотить всю эту идею в жизнь, сделать скелет, которым аниматор сможет удобно манипулировать объектом, а после этого поддерживать этот скелет, улучшать его
Это определенно не легко — ведь надо сделать не только удобный и простой для аниматора сетап, но и хорошо работающий под капотом, чтобы он лишне не нагружал комп (а нагружать систему риги очень хорошо умеют), и в нем было легко разобраться другим риггерам. Я уж молчу, когда персонажей много, да и обычным багам риг вполне подвержен, очень легко может оказаться так, что из-за реализации риг ведет себя в некоторых ситуациях не совсем правильно
Как уже стало понятнее, анимация и риггинг живут бок-о бок с друг-с другом. Риггер не только делает сами риги, но и например пишет различные скрипты-инструменты для аниматора. У любой анимационной студии просто несмертное количество таких скриптов. Поэтому стоит иногда брать фидбек у аниматоров по поводу своего сетапа
Иерархия
Весь риг построен на принципе иерархии ака связях родитель-потомки между костями. Названа связь по примеру из генетики, где подобно тому, как дети наследуют черты от родителей, кости-дети наследуют трансформации кости-родителя, т.е. к их собственным трансформациям поверх добавляются трансформации родителя. Далеко не просто так потомки упоминаются во множественном числе, а родитель в одном: кость может иметь всего лишь одного родителя (на самом деле функция под названием switch Parent иметь их хоть тысячу, но обычно только один родитель активен, так как воздействие сразу нескольких родителей не особо имеет смысл в большинстве случаев), но ее потомков может быть сколько угодно, хоть 2, хоть 20
Давайте перейдем к блендеру, где это и наглядно увидим
Отчищаем сцену, если у вас не изменен стартап файл, и ищем в меню Add в заголовке вьюпорта Armature->Single Bone
Мы создали объект-арматуру с одной-единственной костью. В блендере скелет обзван Арматурой, так как разрабы любят показать всем, что блендер не такой как остальной софт 🙂
Переходим в режим редактирования арматуры. В нем мы устанавливаем костям позицию, которая будет для них нулевой, дефолтной (выставляем так называемую рест позу, Rest Pose) и строим саму иерархию (т.е. определяем, кто кому будет родителем, а кто потомком)
Rest Pose — это тоже очень важное понятие, но мы разберем его вместе с тем, что такое системы координат кости
Кости в блендере состоят из трех частей — хвоста, тела и головы
- Голова — это основа кости. Так например если перейти в режим позы ака Pose Mode (режим, в котором арматура анимируется, и ставятся ключи), то вращение и масштабирование будут идти именно от головы
- Тело позволяет быстро выделить и голову, и хвост
- Хвост — конец кости. От хвоста будут идти потомки кости в режиме connected, но об этом далее
Мы можем отдельно манипулировать хвостом и головой в режиме редактирования, но не в режиме позы
Связь родитель-потомки
Выделяем хвост нашей кости, и жмякаем английскую Е, ведем мышкой куда-нибудь, и жмем ЛКМ, чтобы подтвердить операцию. У нас появилась еще одна кость
Мы применили операцию под названием экструдирование. Наверняка вы ее знаете по моделированию. Как и в моделинге, в редактировании арматуры она создает новую кость из выделения, сохраняя связь с ним. Собственно, тут и есть пример отношения родитель-потомок. Если выделить нашу новорожденную кость, и посмотреть в редактор свойств->вкладочка Relations, то в в поле Parent будет указано имя кости, из которой мы ее сделали. Она и будет родителем для нашей кости
Кстати да, у костей есть имена. Сохранять их в порядке очень важно, а иначе станет неудобно ориентироваться в риге: довольно часто придется указывать имена костей, и вряд ли это будет удобно с Bone.001, Bone.002. Переименовать кости можно либо в редакторе свойств, либо через хоткей F2. Мы назовем нашу кость-родитель как «Parent», а потомка как «Child». Будем так сказать сразу приучатся держать риг в чистоте, а заодно мне будет легче вам рассказывать. На скрине я показал, что как переименовать
Название выделенной кости можно посмотреть либо в редакторе свойств, либо в левом верхнем углу вьюпорта
Собственно, что нам дает то, что Child — это потомок Parent? Очень хорошо это видно в режиме позы: стоит подвигать Parent, как Child тут же последует за ним
При вращении Child видно влияние опции Connected. Она велит кости, что ее голова должна быть намертво приварена к хвосту родителя. Разорвать это никак не получится, даже в режиме редактирования: хвост Parent и голова Child будут единым целым
В режиме позы кость-потомок с Connected в принципе нельзя будет двигать — только вращать и масштабировать (при использовании хоткея G вместо оператора перемещения будет запускаться оператор вращения). Опция Connected является обязательной для такой штуки как инверсная кинематика (IK), но и бывает полезной, когда например кость должна только вращаться (те же кости рук), и не двигаться
Если убрать эту галочку, то Child станет жить отдельно от Parent, но все равно будет двигаться вместе с ним в режиме позы
Блендер оставляет визуальный отклик о том, что между этими костями есть связь — пунктирной линией. На самом деле это не всегда удобно, например, когда много потомков, поэтому ее можно отключить в оверлеях галочкой Relationship Lines
У отношений между костями есть куча дополнительных опций: например галочка 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 тут главная. За ней следуют кости спины, за костями спины кости рук и головы
Итог
- Весь риг строится на иерархии костей
- Родитель-потомок — связь между костями, когда кость-потомок добавляет к своим трансформациям трансформации кости-родителя
- Арматура — тоже самое, что и скелет
- У арматуры есть режим редактирования, где мы устанавливаем костям дефолтное положение (рест позу) + настраиваем иерархию, и режим позы — где мы анимируем сами кости
- Хоткеи Ctrl + P и Alt + P — ваши лучшие друзья
Это все, что я хотел сказать в этом уроке. Иерархия — это база, это то, без чего риг не смог бы существовать в принципе. Жизненно важно понять ее, к тому же это не сложное понятие. Если вы все поняли — то значит жду вас в следующем уроке, который выйдет в скором времени. Желаю всем выдержки на этом сложном пути, всем удачи, всем пока!
Что такое риггинг — и как подготовить его в Blender
Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.
Движение — это жизнь. Первая половина знаменитого высказывания Аристотеля применима и к 3D-моделям: «оживить» виртуального персонажа можно, если заставить его двигаться. Но чтобы убедить зрителя в происходящем на экране, движения трёхмерной модели должны быть в той или иной степени реалистичными. За эту функцию в сфере 3D отвечает отдельное направление — риггинг.
Из этого материала вы узнаете:
- зачем нужен риггинг и почему это один из самых сложных сегментов в сфере 3D-моделирования и анимации;
- какие кости входят в состав арматуры 3D-моделей;
- как в Blender сделать простой скелет с использованием инверсной кинематики;
- что такое режим рисования веса (Weight Paint) и как с ним работать;
- что почитать/посмотреть на тему риггинга.
Что такое риггинг
Риггинг — это процесс подготовки так называемого цифрового скелета, или рига, для 3D‑модели. Такой скелет, как и реальный, состоит из костей и суставов (в софте они называются джойнтами). В скелете также могут быть дополнительные связки, контролирующие определённые группы костей.
Работая с таким каркасом, аниматоры могут придавать моделям различные позы и задавать движения. В разработке современных игр риггинг стал важным этапом производства, так как скелетная анимация обеспечивает реалистичные движения персонажей. Технически этот процесс довольно сложен, и, как правило, им занимаются отдельные специалисты. Но в рамках инди-проекта, при наличии необходимых программ и знаний, процесс риггинга можно освоить самостоятельно и после основательной практики продемонстрировать достойный результат.
Помимо видеоигр, риггинг востребован и в других медиаформатах с использованием компьютерной графики: в фильмах, анимации, ТВ-передачах, а также при создании 2D-анимации, но в более упрощённом варианте. Сложность исполнения во многом зависит от специфики и бюджета проекта.
Для чего нужен риггинг
В первую очередь для создания скелетных анимаций. Если их не будет, во время движения модель персонажа будет просто скользить по сцене в застывшей A- или Т‑позе.
Экономия времени. Если проект предполагает множество анимаций и героев, гораздо проще адаптировать их под один скелет и в дальнейшем перенести анимации методом ретаргетинга . Например, какого бы персонажа ни выбрал игрок в Fortnite, аватар будет выражать все эмоции одинаково, независимо от внешнего вида и комплекции.
Какие кости задействованы в риггинге
Те, кто знаком с моддингом, знают, что скелеты моделей в высокобюджетных играх состоят из сотен различных костей, список которых может ввести в ступор. На самом деле все кости выстроены в чёткой иерархии и распределены по группам. Как правило, во многих ригах персонажей наименования костей схожи и представляют собой англоязычные названия той или иной части реального скелета. Ниже приведён список самых распространённых костей, задействованных в скелетных анимациях. Так как обозначения могут варьироваться, в скобках приведены самые распространённые аналоги.
Root (root bone) — точка опоры, относительно которой скелет вращается в пространстве. Эту кость также можно связать с отдельными частями арматуры и таким образом обеспечить локальное перемещение костей во время определённых движений — например, при приседании.
Примечание
Технически root не задействована в изменениях модели персонажа при анимации, но эта кость важна для импорта в игровой движок или другие программы. Например, в Unreal Engine эта кость считается обязательной.
Spine — аналог позвоночника. В зависимости от строения персонажа и его гибкости, spine-костей может быть несколько (они обозначаются spine_01, spine_02 и так далее). Если вы создаёте скелет для последующего ретаргетинга анимации, стоит учитывать количество костей модели, с которой будут перенесены движения.
Clavicle — кости, расположенные в области ключицы.
Arm (shoulder; upper arm), forearm (elbow; lower arm), hand (wrist) — три основные кости рук (плечо, предплечье, кисть). Также в скелете часто присутствует отдельная кость для ладони — palm.
Neck — кость шеи. В моделях с большим количеством костей возможно разделение на head neck lower и head neck upper для более точного контроля.
Head — основная кость головы.
Pelvis (hips) — аналог тазовых костей. Связаны с первой костью spine и считаются «родителями» костей ног. В упрощённых вариантах их можно заменить нижней костью позвоночника.
Thigh (leg; upper (up) leg), lower leg, foot — связки костей, обозначающие бёдра, голень и стопу.
Кости пальцев рук:
Что касается костяшек пальцев, то они обычно представлены в виде трёх дочерних костей — например, thumb_01, thumb_02 и thumb_03.
На симметричных костях добавляют приписку L (_L / .L/Left) для левой части и R (_R / .R/Right) — для правой.
Несмотря на то что в каждой программе для 3D-моделирования есть свои рекомендации по названиям, список костей, представленный выше, довольно универсален. Указав такие наименования, гораздо проще сопоставить похожие или одинаковые названия костей при дальнейшем ретаргетинге анимации, чем выискивать нужную кость в списке, состоящем из наименований по умолчанию (bone.001, bone.002 и тому подобных).
Риггинг в Blender
В Blender уже давно есть готовые решения для риггинга. В частности, пользователи активно используют встроенный инструмент Rigify, который можно подключить в меню аддонов.
После установки инструмента в меню добавления объектов (Shift + A) в разделе Арматура (Armature) появится несколько дополнительных функций для создания готовых скелетов. Для человекоподобных персонажей есть скелет с готовой лицевой анимацией Human (Meta-Rig) и упрощённая версия в разделе Базовый (Basic) — Basic Human (Meta-Rig). Во вкладке Animals можно найти готовые скелеты различных видов животных и подстроить их под существующую модель.
Сейчас кость утоплена в меше. Чтобы легче работать с дальнейшим построением скелета, в панели настроек справа нажимаем на иконку с зелёной фигурой, находим вкладку Отображение во вьюпорте (Viewport Display) и отмечаем галочкой пункт Спереди (In Front). Теперь, даже если кости скелета расположены внутри меша, они всегда будут отображаться во вьюпорте.
Примечание
В этом же меню есть вкладка Показывать как (Display as), изменяющая внешний вид костей. По умолчанию стоит восьмигранник (Octahedral). Замена на другую деталь иногда помогает лучше подобрать размер и способ размещения костей. Например, выбрав отображение B-кость (B-bone) и выделив кость целиком, можно изменить толщину кости, при этом положение джойнтов не изменится. В восьмиграннике такая функция не предусмотрена.
Построение скелета
Если у модели длинное туловище, будущий позвоночник должен состоять из большего количества костей. В режиме редактирования нажимаем ПКМ на уже созданную кость и во всплывающем Контекстном меню арматур (Armature Context Menu) выбираем Подразделить (Subdivide). В окне справа указываем количество подразделений. Для модели из примера указано значение 3, поэтому в результате получится четыре кости.
Созданные кости при необходимости подстраиваем под форму модели путём перемещения, вращения и масштабирования. Делать это нужно строго в ортогональном режиме, который активируется числами на numpad-клавиатуре, — в процессе необходимо использовать комбинации клавиш с перемещением по оси (например, G + X). Так размещение костей будет максимально точным. Закончив с изменениями, из сустава самой верхней кости создаём ещё одну кость (клавиша E) для шеи, а из неё выводим кость побольше — для головы.
Следующие части скелета (кроме root) мы будем создавать только с левой стороны, чтобы в дальнейшем отзеркалить их на правую сторону с помощью симметрии.
Для начала сформируем ключицу. Убедимся, что сустав самой верхней кости позвоночника расположен напротив основания рук, а затем экструдируем из него кость до той области, откуда должно начинаться плечо. Проверяем позицию новой кости клавишами Num1 и Num7. Теперь из её сустава можно экструдировать плечевую кость, которая заканчивается в районе условного локтя. Следим за тем, чтобы новые кости располагались по центру меша: Num7, и далее по необходимости выравниваем по осям X и Y.
По этому же принципу создаём кость предплечья. Её длина заканчивается в области запястья. Далее идёт кисть. Построение кисти руки зависит от детализации модели. Из предплечья вытягиваем кость длиной примерно с ладонь персонажа. Для большей точности лучше переключиться в режим B-кости (B-Bone). Из последнего сустава кисти экструдируем две кости для большого пальца.
Если руки персонажа смоделированы по типу рукавицы, из джойнта запястья выводим ещё две кости для сгиба группы пальцев, слитых вместе.
В текущем примере пальцы модели разделены, поэтому из сустава запястья выводим дополнительные кости по следующему принципу: одна кость для основания и несколько — для костяшек (в зависимости от строения пальцев). Так как это довольно кропотливая работа, для проверки рекомендуется периодически включать режим отображения сетки во вьюпорте и выверять расположение костей в ортогональном режиме.
Перейдём к построению ног. В режиме редактирования арматуры открываем верхнее меню Добавить (Add) и выбираем Новую кость (New Bone). Размещаем её таким образом, чтобы верхний джойнт был расположен в месте, где меш ноги начнёт вращаться, то есть примерно напротив основания самой нижней кости позвоночника. Вытягиваем кость вплоть до области, где начинается лодыжка, а затем разделяем её на две части (выставляем значение 1). В итоге у нас получается две кости для бедра и голени. Размещаем их ровно по центру в ортогональной перспективе, используя разные точки обзора. Если кость во время изменений смещается в сторону, исправляем её расположение по одной из осей.
Кость бедра нужно связать с первой костью позвоночника, которая станет тазовой в этом скелете. В режиме редактирования выделяем сначала кость бедра, а затем, удерживая Shift, — будущего «родителя» (кость бедра при этом должна стать оранжевой). Нажимаем Ctrl + P и выбираем С сохранением взаимного расположения (Keep Offset).
Теперь из сустава голени экструдируем кость, которая будет выполнять роль лодыжки, и уже из неё — стопу. Если ваш персонаж босой или носит лёгкую обувь, можно добавить дополнительную косточку для мысков.
Текущему скелету нужно добавить точку опоры — ранее упомянутую root bone. Для этого нужно вновь вернуть 3D-курсор в центральную точку. Далее в режиме редактирования арматуры открываем меню Добавить (Add) и выбираем Новую кость (New Bone). Созданную кость размещаем горизонтально под прямым углом.
Создание IK-костей
Левая часть скелета готова, можно перейти к созданию дополнительных костей, которые будут отвечать за инверсную кинематику конечностей. Например, если перейти в Режим позы (Pose Mode) сейчас и попробовать согнуть конечность, нам потребуется сначала повернуть плечо, затем предплечье и остальные кости в порядке родительской цепочки. Но с инверсной кинематикой этот процесс станет намного проще и быстрее, так как IK-кости будут влиять сразу на несколько сегментов.
Выделяем кость лодыжки, из которой «вырастили» стопу, и дублируем её (Shift + D). Здесь также удобно подключить вид B-кости и увеличить толщину созданного сегмента, чтобы он отличался от исходника, так как будет выполнять роль своеобразного контролёра. Сейчас у новой кости осталась привязка к «родителю», которая нам не нужна. Для разрыва связи нужно нажать Alt + P и выбрать опцию Очистить родителя (Clear Parent). По этому же принципу создаём дополнительную кость для инверсной кинематики кисти рук и избавляемся от привязки к оригинальной кости.
Теперь нужно создать IK-кости, которые во время риггинга помогут изменять поворот локтя и колена. Находим джойнт между плечом и предплечьем — выделить его более точно поможет режим сетки вьюпорта (Wireframe) — и экструдируем из него кость в сторону по оси Y. Применяем к ней Очистить родителя (Clear Parent). Процесс создания IK-кости колена аналогичный: экструдируем новую кость из сустава, расположенного между бедром и голенью, перемещаем в сторону и избавляемся от привязки.
Все эти четыре IK-кости будут задействованы только в риггинге конечностей и не будут влиять на меш во время анимации. Поэтому в настройках кости для них убираем галочку в пункте Деформация (Deform)
Теперь, когда все необходимые кости созданы, нужно прописать их названия. Для этого выделяем кость и в её настройках (зелёная иконка) в верхней строчке вписываем вместо Bone.00x новое обозначение. Названия можно взять из списка, приведённого ранее. Главное — оставить пометки L или .L для костей, расположенных слева. Так при создании симметрии правой части программа поймёт, что она должна сгенерировать кости c правой стороны и автоматически поменяет на них метку на R. Кости для инверсной кинематики также отмечаем буквой L и во избежание путаницы добавляем приписку IK или IKrig. Так их будет легче найти в поиске во время выполнения следующей операции.
Настройка инверсной кинематики
В режиме позы выбираем кость запястья, из которой ранее создали IK-кость руки, и заходим в раздел настроек ограничителей кости (значок с костью синего цвета). Открываем вкладку Добавить ограничитель кости (Add Bone Constraints) и в разделе Трекинг (Tracking) выбираем Инверсную кинематику (Inverse Kinematics). Далее в пункте Цель (Target) указываем созданный нами скелет (в данном случае — арматуру). В разделе Кость (Bone) нужно указать, какая кость будет двигаться. Указываем название IK-кости руки. Для этого можно быстро вбить в списке её название или аббревиатуру IK (если вы придерживались рекомендаций по наименованию), тогда список отобразит все кости с этими метками.
После установки левая часть арматуры сместится из-за того, что IK-кость переместилась в начало кости запястья (это можно увидеть, если перейти в режим восьмигранника). Чтобы скелет принял исходное положение, убираем галочку с пункта Использовать конец (Use Tail).
Если подвигать IK-кость сейчас, можно заметить, что, помимо руки, двигается весь скелет. Это происходит из-за того, что в пункте Длина цепи (Chain Length) по умолчанию стоит значение 0, то есть к процессу подключены все звенья. Нам же нужно движение только предплечья и плеча, поэтому выставляем значение 2. Появится жёлтая пунктирная линия, отображающая связанные части скелета, которые начнут двигаться в режиме позы при перемещении IK-кости запястья.
Примечание
Комбинация Alt + G возвращает выделенную IK-кость в режиме позы в исходное положение. А Alt + R делает то же самое со всеми выделенными костями скелета или отдельной группой костей.
Теперь подключим к созданной связке локтевую кость. В настройках инверсной кинематики в Целях колена (Pole Target) опять выбираем арматуру, а в появившемся пункте Кость (Bone) — IK-кость, назначенную нами ранее для локтя. После этого скелет руки частично повернётся. Чтобы вернуть ему изначальное положение, нужно подобрать правильный угол в параметре Угол колена (Pole Angle). Возможно, потребуется ввести отрицательное значение и крутить ползунок до тех пор, пока кости не встанут на прежнее место. Для точности лучше отслеживать положение в ортогональном режиме.
Чтобы добавить запястью вращение, установим ещё один ограничитель кости. В разделе Трансформация (Transform) выбираем Копировать вращение (Copy Rotation). В Целях (Target) снова выбираем арматуру, а в качестве Кости (Bone) — IK-кость запястья.
Теперь повторим аналогичную операцию с ногой, подключив Инверсную кинематику (Inverse Kinematics) для кости лодыжки, из которой мы создавали IK-кость для ноги. В настройках указываем, что Цель (Target) — текущая арматура; Кость (Bone) — IK-кость ноги; Цель колена (Pole Target) — арматура; Кость (Bone) — IK-кость колена. В Длине цепи (Chain Length) также указываем цифру 2, так как здесь должны двигаться голень и бедро. Скорее всего, после этих действий скелет ноги тоже изменит положение, поэтому нужно вернуть его в исходное состояние с помощью ползунка Угол колена (Pole Angle).
Создаем ещё один ограничитель Копировать вращение (Copy Rotation) для лодыжки и настраиваем его так же, как и ранее для вращения запястья. Проверяем результат.
Последний штрих — привязка всех ключевых точек арматуры к root bone. В режиме редактирования выделяем тазовую кость, и далее, удерживая Shift, — остальные четыре IK-кости (запястья, локтя, колена и лодыжки). Последней выделяем root. В режиме редактирования смотрим, чтобы все кости, кроме root, были оранжевыми, нажимаем Ctrl + P и выбираем С сохранением взаимного расположения (Keep Offset). Если всё сделано правильно, появится возможность управлять половинкой скелета по принципу марионетки.
Симметрия костей и привязка к мешу
Теперь нужно отзеркалить все части на правую сторону. Ещё раз убеждаемся, что во всех названиях костей с левой стороны есть приписка L, выделяем левую часть арматуры (удобнее всего это делать прямоугольным выделением). В режиме редактирования открываем меню Арматура (Armature) и выбираем Симметризовать (Symmetrize). Все конечности левой стороны будут отзеркалены, а в названиях вместо приписки L появится R.
Если по какой-то причине в режиме позы появилось смещение костей правых конечностей, поможет настройка Угла колена (Pole Angle) — как в случае с левой кистью, который мы разбирали ранее. Если это не помогает, проверяем, не сместилось ли расположение IK-кости относительно оригинальных костей запястья и лодыжки в режиме редактирования, а затем заново отмечаем в ограничениях побочную IK-кость локтя или колена (они пропадают из настроек при внесении изменений). Закончив с корректировками ещё раз, тестируем работу созданного скелета.
Теперь задача состоит в том, чтобы привязать существующий меш к созданному скелету. Переходим в объектный режим. Выделяем меш, затем, удерживая Shift, выделяем арматуру. Убедившись, что модель отмечена оранжевым цветом, а арматура — жёлтым, нажимаем Ctrl + P и в разделе Арматурная деформация (Armature Deform) выбираем вариант С автоматическими весами (With Automatic Weights).
Примечание
Иногда при привязке высокополигональных мешей к арматуре появляется ошибка Bone Heat Weighting. Особенно часто моддеры сталкиваются с ней при работе с моделями из игр. Существует несколько способов решения этой проблемы:
- «Почистить» геометрию в режиме редактирования — Меш (Mesh) → Очистка (Clean up) → Объединить по расстоянию (Merge by Distance) — или использовать модификатор Упрощение (Decimate).
- Увеличить размер меша и арматуры в десять раз и повторить операцию по привязке.
- Перенести вес с одного объекта на другой, но применить Арматурную деформацию (Armature Deform) не С автоматическими весами (With Automatic Weights), а с Пустыми группами (With Empty Groups).
Тестируем результат в режиме позы.
Из гифки выше видно, что меш персонажа теперь привязан к скелету, но анимация работает не вполне корректно. Во-первых, меш кепки остаётся на месте, во-вторых — воротник куртки постоянно деформируется при анимации туловища. Если с вашей моделью во время анимации возникают похожие проблемы, необходимо исправить распределение веса на меше. Это можно сделать в режиме рисования веса, речь о котором пойдёт ниже.
Распределение веса
Выделяем объект и в меню выбора режимов переходим в режим Рисование веса (Weight Paint). Панель инструментов частично напоминает графические редакторы: работая с весовой кистью, можно увеличить её размер, интенсивность и вес на определённых участках меша, на которые влияют кости скелета при движении.
Эти области называются Группами вершин (Vertex Groups). Список групп вершин можно увидеть в настройках справа, нажав на значок с зелёным треугольником. Если открыть одну из групп в режиме рисования веса, можно увидеть, как на той или иной области воздействия определённой кости распределён вес. Ниже приведён пример группы вершины, на которую влияет кость Head.
Вес в Blender варьируется от 0 (синий) до 1 (красный). Например, на скриншоте выше голова персонажа (за исключением головного убора) практически полностью окрашена в красный цвет. Это значит, что, когда происходит движение с перемещением кости головы, следом за ней полностью перемещается данный участок меша.
Сейчас для кисти по умолчанию задан максимальный вес (1.0), и именно им нужно полностью закрасить меш кепки, чтобы та перемещалась вместе с головой, не растягиваясь в процессе. Закрашиваем всю область, попутно проверяя, не осталось ли оранжевых, жёлтых и зелёных участков.
Далее исправим недочёт с одеждой. Здесь, в отличие от кепки, нам, наоборот, нужно избавиться от лишнего веса, чтобы он не тянул за собой части меша, которые не задействованы в анимации.
Такая проблема часто встречается в моделях персонажей, которые носят плащи или куртки. Чтобы понять, какая группа вершин вызывает деформацию, можно подключить одновременное отображение режимов рисования веса и позирования. Для этого в объектном режиме выделяем арматуру, затем, удерживая Shift, кликаем ЛКМ по объекту, после чего появится возможность сразу зайти в режим рисования веса. Также необходимо отметить галочкой пункт Автонормализация (Auto Normalize) в настройках.
Чтобы выбрать область действия той или иной кости, удерживая Ctrl, выделяем нужную кость ЛКМ. После этого на группе вершин отобразится распределение весов. Так можно корректировать их значение кистью, сразу же проверять результат на месте и поворачивать кость, удерживая R.
Тем же способом проверяем вес данной группы вершин на остальных костях. В зависимости от анимации либо убираем его полностью, либо сводим к минимуму до голубого цвета. Главное — устранить ненужные растягивания меша в динамике.
Встречаются ситуации, когда мешу, наоборот, нужно добавить немного деформации. На гифке ниже можно увидеть, что бедро двигается довольно активно, а нижняя часть куртки остаётся статичной: при анимации ходьбы и при приседаниях это будет выглядеть неестественно. Это происходит из-за отсутствия плавного перехода: вес резко обрывается на границах меша. Чтобы исправить это, можно подобрать оптимальный вес для смещения меша нижней части куртки и с помощью кисти создать плавный переход.
Если речь идёт о риггинге более реалистичных моделей, то во время весовой раскраски придётся уделить больше внимания анатомическим деталям и понять, какие участки меша смещаются при той или иной анимации — это могут быть, например, сгибы конечностей, мышцы пресса или физика груди.
Закончив распределение весов на группах вершин, можно приступать к финальному этапу — созданию анимации на основе ключевых кадров в рамках Blender. Также можно подготовить модель к экспорту в игровой движок для последующей работы и ретаргетинга анимаций в перспективе.
Итоги
Мы ознакомились с базовым понятием риггинга и его ролью в индустрии, поэтапно создали простой скелет с инверсной кинематикой, перенесли его на модель и откорректировали смещение групп вершин. Скелет лоуполи-персонажа, который создан в процессе написания этого материала, можно скачать по ссылке. При желании его можно усовершенствовать, добавив дополнительные кости, и использовать для собственных персонажей, предварительно подстроив его каркас под размер и структуру меша.
Процесс риггинга не менее сложнен, чем 3D-моделирование, и требует от специалиста не только определённых технических навыков работы с программами, но и знаний в области анатомии. Сейчас возможности Blender расширились настолько, что делать уникальную арматуру для каждого персонажа вручную совсем не обязательно. С этой задачей вполне справляется аддон Rigify. Но самостоятельная работа с созданием первого каркаса для модели позволит лучше понять принципы риггинга и взаимодействия костей в скелетной анимации. А это, в свою очередь, поможет настраивать шаблоны на своё усмотрение и достигать лучших результатов.
Примечание
Если ваш проект предполагает большое количество уникальных персонажей и производство ригов выставлено на поток, для упрощения работы подойдёт аддон Auto-Rig Pro. В нём есть быстрая генерация арматуры путём определения основных точек на конечностях (по принципу Mixamo), создание каркаса для лицевой анимации и шаблоны для экспорта в движки Unity, Unreal Engine и Godot, которые обеспечивают комфортную загрузку скелетного меша персонажа без ошибок.
Полезные ссылки с информацией о риггинге
- Официальная документация Autodesk Maya.
- Плейлист с подборкой уроков по анимированию в Autodesk Maya для начинающих от канала Learn 2 Animate.
- Плейлист с подборкой уроков по риггингу персонажей в Blender (канал Dikko).
- Урок-шпаргалка о нюансах весовой раскраски в Blender. Автор рассказывает о настройке кисти для более эффективной прокраски веса, если речь идёт о нескольких слоях меша, что часто встречается в детализированных моделях (канал CGDive).
- Плейлист о работе с аддоном Rigify (канал CGDive).
Читайте также:
- Уроки по Blender: основы моделирования
- Уроки по Blender: интерфейс, навигация, простые операции
- 5 проблем в Blender, которые ставят новичков в тупик
- Почему Blender не соответствует стандартам индустрии
Процесс переноса анимации с одного скелета на другой.
Элементы, которые позволяют управлять одновременно несколькими группами костей. Например, если настроить для персонажа определённые положения руки, он сможет сжать и разжать кулак.
Метод анимации связанных объектов (например, плечо, предплечье, кисть рук), используемый для того, чтобы расположить их более реалистично
Курс
Вы станете универсальным специалистом, который умеет в 3D всё: создавать объекты и окружение, настраивать текстуры и цвет, анимировать модели и внедрять их в 3D-сцену.
Освоите Houdini, Autodesk Maya, Blender, Photoshop, ZBrush, Marmoset 3D, Substance Painter, Marvelous Designer, Arnold и Rizom UV. Сможете претендовать на работу в рекламе, играх или кино.
На иллюстрации: работа участника курса Евгения Кузнецова
Использование Blender и Rigify
Теперь к Blender прилагается бесплатное дополнение Rigify, которое предоставляет вашим моделям гуманоидный риг, который будет работать с Mecanim. Это очень полезно для начинающих и казуальных игроделов.
Это руководство покажет вам, как сделать риг для вашей 3D модели при помощи Rigify и импортировать её в Mecanim Unity 4. Rigify генерирует полный риг для вашей модели и, путём использования основы в виде шаблона, вы сможете переделать его в хороший простой риг для гуманоидных персонажей. Вам следует начать с включения Rigify через Blender, чтобы вы могли воспользоваться его функционалом. Оттуда вы импортируете вашу 3d модель и начинаете корректно устанавливать вашу модель и основу, чтобы в дальнейшем избежать проблем. Как только всё будет настроено, вы сможете расположить кости и сгенерировать главный риг. Самая сложная часть, это привязка меша к костям, которые вы хотите использовать и проверка того, что они соединены корректно, и, наконец (после небольшой проверки и полировки), вы сможете импортировать модель в Unity.
Вот что вам понадобится:
- Unity
- Blender
- 3D модель гуманоида (MakeHuman очень полезная программа, если вам нужна помощь с моделированием).
Включите Rigify
Для начала вам нужно убедиться, что плагин Rigify установлен и включён в Blender:
- Проследуйте по пути File > User preferences.
- Выберите вкладку Addons и промотайте на самый низ и включите флажок рядом с “Rifify”
- Нажмите “Save as default”
Это активирует дополнение и позволит вам получить доступ к необходимым кнопкам и функциям. Установка этого по умолчанию включит Rigify во все ваши будущие проекты.
Настройка основы
Возьмите базовый риг гуманоида, который Rigify будет использовать как шаблон. Этот риг очень простой, но он позволит Rigify построить себя вокруг относительных позиций костей.
- Проследуйте по пути Add > Armature (Human)
- Убедитесь, что и основа и модель центрированы на 0,0,0
- Если вы масштабировали или двигали модель, убедитесь, что сбросили значения масштаба и/или смещения и у основы и у модели.
- Перейдите в режим изменения (Edit mode) (нажмите Tab)
- Начните размещать кости в их соответствующих местах на модели
- Используйте “X-Ray”, чтобы смотреть на кости сквозь модель
- Как только завершите, вернитесь обратно в объектный режим.
- Сместите основу в сторону, чтобы она не стояла на пути. (Если вы используете Make Human, возможно вы захотите соединить несколько разных мешей в один целый. Сделать это можно выбрав все меши и нажав CTRL + J)
Генерация рига
- Выбрав основу нажмите на вкладку Object data с самого права.
- В “Rigify Buttons” нажмите Generate.
- Переключитесь в режим позы (Pose mode) и сделайте следующее:
- Нажмите кнопку (А), чтобы выбрать риг и затем нажмите кнопку (H), чтобы скрыть ненужные слои.
- Нажмите на ниже слоя основы с зажатым SHIFT.
Это раскроет кости деформации. Кости деформации это то, что вы должны привязать к мешу и сделать к ним Weight-раскраску вашего меша.
If all deformation bones do not appear check the “Auto Run Python Scripts” option under File > User Preferences>File and re-generate
Удаление WGT костей
Вы заметите, что в верхнем правом углу, в иерархии сцены у вас будет много WGT-костей.
Т.к. эти кости не будут привязаны к мешу или вообще использованы, нам нужно их удалить, дабы избежать наличия не назначенных мешей в проекте Unity.
Привязка рига к модели
- Привяжите модель к костям деформации.
Прежде чем начать, убедитесь, что вы в режиме Object mode и выберите mesh, затем зажмите SHIFT и выберите hbu, нажмите CTRL + P и выберите Armature deform > With Automatic weights. Это назначит меш костям, создав группы вертексов. Это то, что мы будет использовать для процесса привязки. Если вы плохо или вообще не знакомы с привязкой в Blender нажмите здесь, чтобы перейти к уроку. Учтите, что кости деформации будут использовать две кости на каждый верхний и нижкий лимбы. Не привязывайте ко второй кости и убедитесь, что они связаны, чтобы Mecanim мог их правильно связать.
- Привяжите плечи к “DEF-shoulder.R” + “DEF-shoulder.L” и убедитесь, что он являются дочерними для “ORG-ribs”
- Привяжите верхние части рук к “DEF-upper_arm.R.01” + “DEF-upper_arm.L.01” и убедитесь, что он являются дочерними к “DEF-shoulder.R” или “DEF-shoulder.L” соответственно.
- Привяжите предплечья к “DEF-forearm.R.01” + “DEF-forearm.L.01” и убедитесь, что они являются дочерними к “DEF-upper_arm.R.01” или “DEF-upper_arm.L.01” соответственно.
- Привяжите бёдра к DEF-thigh.R.01 + DEF-thigh.L.01 и убедитесь, их материнской костью является “ORG-hips”.
- Привяжите голени к DEF-shin.R.01 + DEF-shin.L.01 убедившись, что эти кости являются дочерними к “DEF-thigh.R.01” или “DEF-thigh.L.01” соответственно. Это предоставит вам риг, который привязан к не перечёркнутым костям. Лишние кости не должны быть привязаны ни к чему.
Do the same thing to the hands, just remember Mecanim will only take the hand bone and three bones for each finger and thumb. This means you skin the model’s hands to the bones without crosses through them as shown in the picture below.
Для каждого пальца вы будете использовать следующее (левая рука в качестве примера):
- Большой палец: “DEF-thumb.01.L.02”, “DEF-thumb.02.L”, “DEF-thumb.03.L”
- Указательный: “DEF-finger_index.01.L.02”, “DEF-finger_index.02.L”, “DEF-finger_index.03.L”
- Средний: “DEF-finger_middle.01.L.02”, “DEF-finger_middle.02.L”, “DEF-finger_middle.03.L”
- Безымянный: “DEF-finger_ring.01.L.02”, “DEF-finger_ring.02.L”, “DEF-finger_ring.03.L”
- Мизинец: “DEF-finger_pinky.01.L.02”, “DEF-finger_pinky.02.L”, “DEF-finger_pinky.03.L”
Помните, что каждая кость пальца всегда должна быть дочерней по отношению к предыдущей и первая кость должна быть дочерней по отношению к руке, в результате предоставляя аккуратную связь для Mecanim.
Экспорт и Импорт
Экспортируйте модель как .FBX файл и поместите его в папку, отдельную от ваше проекта. File > Export > AutoDesk FBX (.fbx) > Export. Как только экспорт будет завершён, вы сможете начать импорт модели в Unity и связать её с Mecanim.
- Откройте Unity 4 и создайте новый проект названный, например, “Rigify Test”. Как только он откроется, просто перетащите вашу модель в окно проекта.
- Выберите префаб модели в окне проекта и нажмите Rig в инспекторе. Смените Animation Type на Humanoid и нажмите Configure.
Все кости должны без проблем связаться в Mecanim.

- Убедитесь, что все кости на своих местах, и что нету никаких ошибок.
- Таким же образом рука должна быть дочерней соответствующих костей. Привяжите ладони к “DEF-hand.R” + “DEF-hand.L” и убедитесь, что их(костей) материнскими костями являются “DEF-forearm.R.01” или “DEF-forearm.L.01” соответственно.