Серия уроков по риггингу в Blender. Урок 2: Скиннинг, оживляем меш
Приветствую всех, кто заглянул сюда! В прошлом уроке мы разобрали суть риггинга, что представляет из себя арматура и кости, и что все строится на иерархии - связях родитель-потомки. В этот раз мы разберем процесс, который необходимо провести, чтобы арматура могла действовать на меш - Скиннинг, или как его иногда называют - развесовка
Для этого урока мы будем использовать модель прямоугольника с плотной сеткой. Скачать его можно вот тут
Приготовления закончили, теперь начнем собственно урок!
Веса и группы вершин
Собственно, как определить, влияет ли кость на вершину, и если да - то насколько? Правильно - ввести значение, которое будет силой воздействия кости. В блендере это значение называется весом (Weight) кости. Оно не выделено в уникальный элемент датаблока, а базируется на так называемых группах вершин (vertex groups) - этаких контейнерах со своим именем, где хранится вес для каждой вершины меша от 0 до 1
Вес измеряется в диапазоне от нуля до единицы, соответственно 0 - не влияет, 1 - влияет на полную силу, вершина идет точно за костью. Вес выше 1 логика группы вершин иметь не позволяет, но - группа вершин хранит вес для каждой вершины, и пересечения не запрещаются: т.е. наши Group и Group.001 могут спокойно хранить единичный вес для одной и той же вершины. С этим связана одна очень неприятная подлянка, мы разберем ее ниже
Делаем арматуру
Чтобы показать, как делать скиннинг, нам естественно нужна арматура. Сейчас мы сделаем ее сами, практика + заодно я покажу пару хороших фишек. Если вы и так умеете это делать, то скипайте эту секцию, и используйте готовую арматуру RIG_Cube
Начинаем!
Перед нами есть куб с плотной сеткой. Это очень важно для рига, если он будет что-то деформировать, ибо как что-то сгибать, если сгибать нечего? :D В данном случае эта сетка - как раз идеальна для деформаций - она состоит из граней с 4-мя вершами - квадов
Мы хотим, чтобы куб мог сгибаться и закручиваться вокруг своей оси вращения в нескольких местах
Эти места мы выделили при помощи аннотаций - безумно удобного инструмента для всяких указаний и зарисовок прямо во вьюпорте. Это бывший Grease Pencil из старых версий. Где-то в районе 2.8 создали новую систему, а старую переделали в аннотации
Основные настройки штрихов находятся на панели Annotations во вкладке View
Там можно установить цвет, толщину штрихов, независимость от проигрывания анимации и т.п. Сам инструмент работает просто: ЛКМ - рисовать, ctrl + ЛКМ - стирать. Там еще есть опции, но предлагаю посмотреть их уже самим
Также чтобы включить отображение сетки меша без перехода в режим редактирования - надо включить WIreframe в панели оверлеев
Теперь переходим к арматуре
Мы будем активно пользоваться 3Д курсором - некой точки в пространстве, от которой создаются новые объекты, и к которой можно привязаться
Аннотации можно скрыть, если они будут вам мешать Это можно сделать так и в настройках слоя, так и в оверлеях соответствующей галочкой
Выделяем нижнее основание куба, потом используя хоткей Shift + S вызываем Пай меню по работе с 3Д курсором, и выбираем пункт Cursor to Selected. Это переместит курсор в центр выделения
Выходим из режима редактирования, переходим в объектный режим, создаем арматуру. Одна-единственная кость появится на месте 3Д курсора
И тут мы видим проблему - меш загораживает собой арматуру. Увы, нам необходимо, чтобы арматура была внутри меша - а иначе деформации будут вести себя неправильно (все из-за пивота кости - центра, откуда идут трансформации). Можно вынести арматуру поверх меша - для этого у объекта есть опция In Front. Она расположена в панели Viewport Display
Чпоньк - и арматура будет отображаться поверх объекта, как нам и надо!
Дальше необходимо построить саму арматуру. Вот сейчас мы и будет показано, насколько полезен 3д курсор. Как говорилось ранее, из-за пивота кости меш может некорректно деформироваться (не будет правильного изгиба). И вместо того, чтобы вручную двигать кость, можно просто выставить 3д курсор в центр лупа, который будет местом избига, и потом привязать кость
Переходим в режим редактирования, выделяем луп, который будет первым изгибом, и перемещаем туда курсор при помощи Cursor to Selected
далее выделяем арматуру, переходим в ее режим редактирования, выделяем хвост кости, выбираем Selection to Cursor в Пай меню, и чпоньк
Теперь пивот для следующей кости готов. Используем экструдирование для создания новой кости, выставляем 3д курсор, привязываем хвост кости, повторяем. В конечном счете должна получится вот такая арматура
Переименовываем кости, чтоб не было бардака. Кстати, вот еще одна плюшка - у арматуры тоже есть вкладка Viewport DIsplay. Нам нужна опция, чтобы отобразить имена костей - Names. Переименовываем кости как на скрине
Наша арматура готова. Теперь можно наконец-то перейти к скиннингу
Режим рисования весов
Редактирование весов осуществляется в соответствующем режиме - Weight Paint. По началу он может выглядеть необычно. Можно создать несколько пустых групп вершин, чтобы попробовать им попользоваться
У нас есть несколько инструментов - Draw, Blur, Average, Smear, Gradient. В этом уроке мы будем пользоваться только первым. Стоит поподробнее изучить его настройки, они могут очень облегчить жизнь
Нажав на поле с Draw, можно выбрать саму кисть для рисования
Иногда легче выбрать режим добавления или вычитания, чем постоянно крутить ползунок веса. А сам ползунок - это Weight. Рядом с ним радиус кисти и ее сила - Strength. У каждого параметра есть иконка с карандашиком - это позволяет включить в работу графический планшет. Это гораздо удобнее мыши, так что обязательно попробуйте потом порисовать с ним и без него, чтобы увидеть разницу
Еще одна важная опция - это симметрия. Она находится в противоположной стороне заголовка, и может включаться отдельно для каждой оси
Скиннинг
Для начала удаляем все группы вершин, которые мы сделали, чтоб они не засоряли меш. После этого переходим в объектный режим, сначала выделяем меш, потом с зажатым Shift арматуру, и жмем Ctrl + P -> Armature Deform -> With Automatic Weights. На первый взгляд ничего не произошло, но если зайти в режим позы для нашей арматуры - и о чудо, меш будет двигаться за костями!
Ctrl + P также как и в режиме арматуры, в объектном режиме позволяет установить родителя, но если родителем будет арматура - то появятся дополнительные опции - установка весов. Можно установить пустые веса, веса по так называемым Эвенлопам (областям вокруг костей), или более популярный вариант - автоматические веса
После выполнения оператор добавит мешу модификатор Armature - именно так выполняется связывание меша и арматуры
А вот вес костей сохраняется при помощи групп вершин. Логика проста: модификатор выполняет сопоставление имени группы вершин и кости, и тем самым понимает, кто к чему принадлежит. Так как мы использовали авторазвесовку, то оператор сам создал группы вершин с нужными именами, и заполнил их. Если мы заменим имя группы на белеберду, то кость потеряет вес, а если на имя другой кости - то та кость станет использовать веса из этой группы вершин соответственно. Также после отвязки арматуры и даже ее удаления группы никуда не денутся, и если вы ее снова прицепите (условие - имена костей остались те же) - то веса уже будут назначены так, как были до отвязки
Вот кстати еще одна мега полезная фишка - если сначала выделить арматуру, потом меш, и перейти со всем этим в режим развесовки, то мы сможем сразу просматривать веса костей, выделяя их через Shift + ЛКМ, и даже двигать (GRS комбинация также работает). Также если у кости нету своей группы вершин, и меш будет покрашен фиолетовым (прям как когда потеряна какая-то текстура), то стоит где-нибудь порисовать, и группа сама создастся. Так что вручную менять имена группам не придется
Да, сейчас у нас нету необходимости вправить веса, авторазвесовка сработала нормально, но и модель - куб. В большинстве случаев понадобится дополнительная корректировка весов уже ручками
Нормализация
В модификаторе есть одна подлянка - если сумма всех весов на вершину больше 1, то модификатор сам усечет его до этого числа. Вроде бы ничего, НО
Так как у bone_2 вес - 1 на проблемной области, и у bone_2.001 - тоже, то в сумме будет 2, и модификатор усечет веса. В свое время мне это знатно потрепало нервы, и проблема то в том - что ни в одном, по крайней мере в рунете, туторе о такой подлянке не говорилось, до этого момента)
Чтобы такой гадости избежать, существует опция Auto Normalize. Оно делает определенные операции со всеми группами вершин, куда входит вершина, тем самым обеспечивая общую сумму весов в 1
И на последок - покажу скиннинг при помощи Эвенлоп (Evenlope)
Суть собственно в том, что веса назначаются в зависимости от того, насколько сильно вершина попадает в зону действия кости. Эти зоны настраиваются при помощи параметра Evenlope у костей, и эффект виден только режиме отображения костей Evenlope
После этого можно перейти в режим позы, или в режим развесовки, и посмотреть на результаты. Да, все работало как и ожидалось, но в нашем и в большинстве случаев это никуда не годится, поэтому его очень редко используют
Итог
- 3Д курсор - весьма полезная для риггинга вещь
- Арматура и меш соединяются при помощи модификатора Armature
- Сила влияния костей же определяется весом, который хранится в группах вершин на меше
- Веса редактируются в Weight Paint mode
- Без нормализации весов может быть очень плохо
На этом урок закончен. Пишите комментарии, делитесь с друзьями, набирайтесь сил, всем удачи, всем пока!