Что такое риггинг — и как подготовить его в Blender
Основы скелетной анимации для начинающих.Поделиться
Иллюстрация: Катя Павловская для Skillbox Media
Леон Балбери
Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.
Движение — это жизнь. Первая половина знаменитого высказывания Аристотеля применима и к 3D-моделям: «оживить» виртуального персонажа можно, если заставить его двигаться. Но чтобы убедить зрителя в происходящем на экране, движения трёхмерной модели должны быть в той или иной степени реалистичными. За эту функцию в сфере 3D отвечает отдельное направление — риггинг.
Из этого материала вы узнаете:
- зачем нужен риггинг и почему это один из самых сложных сегментов в сфере 3D-моделирования и анимации;
- какие кости входят в состав арматуры 3D-моделей;
- как в Blender сделать простой скелет с использованием инверсной кинематики;
- что такое режим рисования веса (Weight Paint) и как с ним работать;
- что почитать/посмотреть на тему риггинга.
Что такое риггинг
Риггинг — это процесс подготовки так называемого цифрового скелета, или рига, для 3D‑модели. Такой скелет, как и реальный, состоит из костей и суставов (в софте они называются джойнтами). В скелете также могут быть дополнительные связки, контролирующие определённые группы костей.
Работая с таким каркасом, аниматоры могут придавать моделям различные позы и задавать движения. В разработке современных игр риггинг стал важным этапом производства, так как скелетная анимация обеспечивает реалистичные движения персонажей. Технически этот процесс довольно сложен, и, как правило, им занимаются отдельные специалисты. Но в рамках инди-проекта, при наличии необходимых программ и знаний, процесс риггинга можно освоить самостоятельно и после основательной практики продемонстрировать достойный результат.
Помимо видеоигр, риггинг востребован и в других медиаформатах с использованием компьютерной графики: в фильмах, анимации, ТВ-передачах, а также при создании 2D-анимации, но в более упрощённом варианте. Сложность исполнения во многом зависит от специфики и бюджета проекта.
Для чего нужен риггинг
В первую очередь для создания скелетных анимаций. Если их не будет, во время движения модель персонажа будет просто скользить по сцене в застывшей A- или Т‑позе.
Экономия времени. Если проект предполагает множество анимаций и героев, гораздо проще адаптировать их под один скелет и в дальнейшем перенести анимации методом ретаргетинга. Например, какого бы персонажа ни выбрал игрок в Fortnite, аватар будет выражать все эмоции одинаково, независимо от внешнего вида и комплекции.https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FqPyZegH50hk%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqPyZegH50hk&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FqPyZegH50hk%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube
Демонстрация эмоций разных персонажей Fortnite. Совпадают и движения, и лицевая анимация
Есть возможность автоматизации процесса за счёт управляемых ключей, более известных как Driven Keys, а также инверсной кинематики (IK). Такая функциональность даёт возможность управлять моделью как марионеткой.
С какими сложностями можно столкнуться при риггинге
Чем реалистичнее среда, тем больше требуется усилий, чтобы подчеркнуть реалистичность движений. Например, лоуполи-модели не требуют пристального внимания к деталям — в отличие от скелета MetaHuman, который заточен под мокап-анимации и потому имеет огромное количество костей, отвечающих за смещение мышц при каждом движении.
Создание рига для лицевых анимаций очень трудоёмкое. В формировании человеческой мимики задействовано много мышц лица, а значит, специалисту потребуется больше времени, чтобы итоговая анимация получилась достоверной. В противном случае зритель сразу же заметит, что лицо персонажа в динамике выглядит странно.
Устанавливать ограничения подвижности костей — кропотливая работа. В реальной жизни голова человека не может поворачиваться на 360°, как и его части тела. Следовательно, суставы человекоподобного персонажа также должны поворачиваться с ограничениями за счёт специально заданных параметров кости. Такие настройки делают анимацию более реалистичной, но требуют дополнительного времени.
Не менее кропотливая работа нужна для распределения/рисования веса на модели для корректного смещения участков мешей во время анимации. Эта техника более известна как weight paint: с помощью специальной весовой кисти специалист красит отдельные участки меша. Такая «весовая раскраска» предотвращает неестественные растягивания и деформацию модели персонажа во время движения и в целом делает анимацию более реалистичной. Но подобная операция требует много времени и тестов, а в случае работы с моделями животных и людей — знаний в области анатомии.
Каждый игровой движок или программа для 3D-моделирования имеет свою специфику, а следовательно, по-разному считывает формат и ориентацию костей скелета. Поэтому во многих случаях риг модели требует дополнительной конвертации.
Какие кости задействованы в риггинге
Те, кто знаком с моддингом, знают, что скелеты моделей в высокобюджетных играх состоят из сотен различных костей, список которых может ввести в ступор. На самом деле все кости выстроены в чёткой иерархии и распределены по группам. Как правило, во многих ригах персонажей наименования костей схожи и представляют собой англоязычные названия той или иной части реального скелета. Ниже приведён список самых распространённых костей, задействованных в скелетных анимациях. Так как обозначения могут варьироваться, в скобках приведены самые распространённые аналоги.
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 — большой;
- index (point) — указательный;
- middle — средний;
- ring — безымянный;
- pinky — мизинец.
Что касается костяшек пальцев, то они обычно представлены в виде трёх дочерних костей — например, 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 можно найти готовые скелеты различных видов животных и подстроить их под существующую модель.https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FsnvlZcQUoXs&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DsnvlZcQUoXs&image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FsnvlZcQUoXs%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube
Установка и работа с аддоном Rigify
Чтобы наглядно показать специфику риггинга в Blender, в рамках этого материала мы создадим скелет с нуля и подключим к нему инверсную кинематику. Для привязки будущей арматуры подойдёт простая лоуполи-модель человека, которую можно сделать самостоятельно. Если не хотите заниматься моделированием, то на портале Sketchfab доступно множество готовых моделей для скачивания.
Первые шаги и настройки кости
В Blender три режима работы с арматурой:
- стандартный Объектный режим (Object Mode);
- Режим редактирования (Edit Mode), где можно добавлять и изменять свойства костей (как и в случае редактирования меша, вызывается кнопкой Tab);
- Режим позы (Pose Mode), в котором можно проверить анимацию скелета (Ctrl + Tab).
После импорта модели в Blender убедимся, что 3D-курсор расположен в центральной точке: Объект — Задать центральную точку — Центр объекта к 3D-курсору (Object — Set Origin — Origin to 3D-cursor).
Для начала сформируем позвоночник. В центре 3D-курсора создаём первую кость. Нажимаем Shift + A, переходим во вкладку Арматура (Armature) и выбираем Одну кость (Single Bone). Кости также считаются объектами в Blender, поэтому с ними можно работать так же, как и с моделями: уменьшаем размер кости (S) и перемещаем её наверх в область туловища (G + Z).
Сейчас кость утоплена в меше. Чтобы легче работать с дальнейшим построением скелета, в панели настроек справа нажимаем на иконку с зелёной фигурой, находим вкладку Отображение во вьюпорте (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 (красный). Например, на скриншоте выше голова персонажа (за исключением головного убора) практически полностью окрашена в красный цвет. Это значит, что, когда происходит движение с перемещением кости головы, следом за ней полностью перемещается данный участок меша.
Оранжевые (≈0,8), жёлтые (≈0,7), зелёные (≈0,5), голубые (<0,5) участки не сдвигают меш полностью, а лишь деформируют его при перемещении. Чем ниже вес — тем сильнее деформация, поэтому самые яркие участки находятся на активных местах сгибов и вращений. На синих участках меш статичен. Именно поэтому кепка при анимации оставалась неподвижной.
Сейчас для кисти по умолчанию задан максимальный вес (1.0), и именно им нужно полностью закрасить меш кепки, чтобы та перемещалась вместе с головой, не растягиваясь в процессе. Закрашиваем всю область, попутно проверяя, не осталось ли оранжевых, жёлтых и зелёных участков.
Далее исправим недочёт с одеждой. Здесь, в отличие от кепки, нам, наоборот, нужно избавиться от лишнего веса, чтобы он не тянул за собой части меша, которые не задействованы в анимации.
Такая проблема часто встречается в моделях персонажей, которые носят плащи или куртки. Чтобы понять, какая группа вершин вызывает деформацию, можно подключить одновременное отображение режимов рисования веса и позирования. Для этого в объектном режиме выделяем арматуру, затем, удерживая Shift, кликаем ЛКМ по объекту, после чего появится возможность сразу зайти в режим рисования веса. Также необходимо отметить галочкой пункт Автонормализация (Auto Normalize) в настройках.
Чтобы выбрать область действия той или иной кости, удерживая Ctrl, выделяем нужную кость ЛКМ. После этого на группе вершин отобразится распределение весов. Так можно корректировать их значение кистью, сразу же проверять результат на месте и поворачивать кость, удерживая R.
Тем же способом проверяем вес данной группы вершин на остальных костях. В зависимости от анимации либо убираем его полностью, либо сводим к минимуму до голубого цвета. Главное — устранить ненужные растягивания меша в динамике.
Встречаются ситуации, когда мешу, наоборот, нужно добавить немного деформации. На гифке ниже можно увидеть, что бедро двигается довольно активно, а нижняя часть куртки остаётся статичной: при анимации ходьбы и при приседаниях это будет выглядеть неестественно. Это происходит из-за отсутствия плавного перехода: вес резко обрывается на границах меша. Чтобы исправить это, можно подобрать оптимальный вес для смещения меша нижней части куртки и с помощью кисти создать плавный переход.
Если речь идёт о риггинге более реалистичных моделей, то во время весовой раскраски придётся уделить больше внимания анатомическим деталям и понять, какие участки меша смещаются при той или иной анимации — это могут быть, например, сгибы конечностей, мышцы пресса или физика груди.
Закончив распределение весов на группах вершин, можно приступать к финальному этапу — созданию анимации на основе ключевых кадров в рамках Blender. Также можно подготовить модель к экспорту в игровой движок для последующей работы и ретаргетинга анимаций в перспективе.
Итоги
Мы ознакомились с базовым понятием риггинга и его ролью в индустрии, поэтапно создали простой скелет с инверсной кинематикой, перенесли его на модель и откорректировали смещение групп вершин. Скелет лоуполи-персонажа, который создан в процессе написания этого материала, можно скачать по ссылке. При желании его можно усовершенствовать, добавив дополнительные кости, и использовать для собственных персонажей, предварительно подстроив его каркас под размер и структуру меша.
Процесс риггинга не менее сложнен, чем 3D-моделирование, и требует от специалиста не только определённых технических навыков работы с программами, но и знаний в области анатомии. Сейчас возможности Blender расширились настолько, что делать уникальную арматуру для каждого персонажа вручную совсем не обязательно. С этой задачей вполне справляется аддон Rigify. Но самостоятельная работа с созданием первого каркаса для модели позволит лучше понять принципы риггинга и взаимодействия костей в скелетной анимации. А это, в свою очередь, поможет настраивать шаблоны на своё усмотрение и достигать лучших результатов.
ПРИМЕЧАНИЕ
Если ваш проект предполагает большое количество уникальных персонажей и производство ригов выставлено на поток, для упрощения работы подойдёт аддон Auto-Rig Pro. В нём есть быстрая генерация арматуры путём определения основных точек на конечностях (по принципу Mixamo), создание каркаса для лицевой анимации и шаблоны для экспорта в движки Unity, Unreal Engine и Godot, которые обеспечивают комфортную загрузку скелетного меша персонажа без ошибок.