Риггинг персонажа в Blender

Арматура и риггинг

Большая часть анимации трёхмерных персонажей, как компьютерной, так и традиционной, полагается на арматуру при манипулировании частями тела персонажей. Арматура играет роль скелета персонажей, а её сегменты соответствуют костям.

Конечно, механика движений и придания поз для трёхмерной сетки значительно отличается от таковой для человека из плоти и крови, так что кости компьютерных персонажей не полностью соответствуют реальным костям живого существа. Несмотря на это, они, в принципе, сходны.

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

Степень необходимой сложности арматуры определяется в зависимости от требований анимации. Хорошая арматура должна обеспечивать простоту управления персонажем при достоверности движений.

Процесс «риггинга» (rigging) персонажа означает создание арматуры и связанных с нею ограничений. «Скиннингом» (skinning) называется присоединение сетки к арматуре таким образом, чтобы манипуляции с арматурой приводили к соответствующим деформациям сетки. Сетка должна следовать движениям арматуры приемлемым образом. В общих чертах это достигается путём назначения каждой кости влияния на движение определённых вершин. Есть несколько способов назначить влияние на вершины, которые мы рассмотрим в этой главе.

Система арматуры Blender

Арматура в Blender состоит из костей, их влияния на кости, стоящие выше по иерархии (parent relationships), соединений и различных ограничений, управляющих их движением и взаимодействием. Хорошо собранную арматуру можно использовать для быстрого и лёгкого создания реалистичных поз. Сейчас мы кратко ознакомимся с основными типами костей и ограничений, используемых при создании сложных арматур.

Кости

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

Deform bones

Эта опция включена для костей по умолчанию. Деформирующие кости позволяют влиять на вершины сетки.

B-Bones

B-bones это кости, которые могут разделяться на множество сегментов, что позволяет им сгибаться и скручиваться. B-bones работают похоже на сплайны Безье («B» можно трактовать как «bezier»). Каждая кость играет роль контрольной точки кривой (curve handle), пригодной для создания искривлённых поз.

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

IK solvers

IK solvers используются для управления конечной точкой цепочки инверсной кинематики (IK), в которой положение костей цепи рассчитывается на основе расположения конца цепи.

Stride bone

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

Ipo drivers

Кости могут использоваться для управления любым анимируемым свойством, путём создания драйвера интерполяции (Ipo), связывающего положение или вращение кости с соответствующей Ipo.

Custom controls

Настраиваемые элементы управления (custom controls) являются не столько типом костей, сколько особым способом настройки внешнего вида костей. У вас могут быть кости, появляющиеся в режиме Pose в виде специально назначенных сеток, которые могут быть полезны для визуального отделения костей специального назначения (таких как драйвера Ipo) от обычных костей.

Для отображения и редактирования костей существует множество опций. Многие из них мы обсудим в этой главе.

Ограничители

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

Важнейшие ограничители:

IK Constraint

Работает с IK solver для создания цепи костей, чья позиция может быть определена по расположению конца цепи.

Copy Location/Rotation/Scale

Ограничивает перемещение, вращение или масштабирование одной кости или объекта по отношению к другому. Ограничивает сильнее, чем парентинг (когда один объект является предком второго), где ограниченный объект или кость не может быть перемещён, повёрнут или масштабирован независимо от другого.

Track-to Constraint

Заставляет объект или кость указывать в направлении («следить» — «track to») указанного объекта. Это полезно для управления глазами (eye tracking), а также для управления движением камеры, что реализуется при помощи ориентации камеры на объект-пустышку.

Floor Constraint

Определяет объект или кость, ниже которой не может опуститься другой объект или кость. Часто используется вместе с IK solvers для того, чтобы ноги не проваливались сквозь пол.

Stretch-to Constraint

Заставляет кость или объект растягиваться или сжиматься вместе с объектом или костью, указанной как цель ограничителя. Также может использоваться для управления смещением объёма, получающегося при помощи растяжения или сжатия.

Action Constraint
Позволяет движению кости управляться действием (action), которое было анимировано, а затем, в свою очередь, было привязано к вращению другой кости вокруг определённой оси.

Построение простой арматуры

Для того чтобы ознакомиться с основами построения, отображения и настройки положений арматуры, мы построим быструю и простую арматуру для фигуры, показанной на рисунке 4.1.

Если вы выполнили уроки по моделированию из главы 2, то создание такой фигуры методом box-моделирования не должно вас затруднить. Если же вы пропустили моделирование, то сетку этой фигуры можете взять на прилагаемом DVD в файле figure.blend.

В следующем примере вид спереди — это вид, показываемый по нажатию клавиши 1 на цифровой клавиатуре, вид сверху — клавиша 7, а клавиша 3 показывает вид с левой стороны фигуры, как и в других примерах этой книги. Если вы моделировали сетку сами и использовали модификатор Mirror, то убедитесь, что применили этот модификатор, перед тем как переходить к риггингу сетки.

Анимация в Blender_1.jpg

Рисунок 4.1 Простая фигура

Анимация в Blender_2.jpg

Рисунок 4.2 Добавляем арматуру

Первый шаг состоит в создании арматуры. 3D-курсор должен располагаться в центре сетки. В объектном режиме нажмите пробел и выберите Add → Armature. Появится кость, начинающаяся в 3D-курсоре.

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

Редактирование арматуры и костей аналогично редактированию большинства видов объектов в Blender. Клавиши G, R и S оказывают тот же эффект перемещения, вращения и масштабирования, что и везде. Аналогично, клавиша E используется для выдавливания, которое в случае костей создаёт новую присоединённую кость из кончика или корня исходной кости.

Начните с использования различных форм выдавливания, поддерживающих зеркальное отражение по оси X, и нажмите Shift+E, чтобы выполнить зеркальное выдавливание из кончика первой кости. Вытяните выдавленную кость направо от вас и обратите внимание, что зеркально отражённая кость тоже появилась, давая в результате плечевую часть арматуры, которую вы можете увидеть на рисунке 4.3.

Анимация в Blender_3.jpg

Рисунок 4.3 Используем зеркальное выдавливание (Shift+E) для формирования плеч

Из конца созданной вами кости выдавите ещё две кости для рук. Далее уже нет надобности указывать на зеркальное выдавливание с помощью Shift+E. Любое редактирование, которое производится на этих отражённых костях, включая выдавливание, будет зеркально отражаться на другой стороне.

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

Анимация в Blender_4.jpg

Рисунок 4.4 Выдавливаем кости руки

Для нижней части тела выберите корень первой кости. Корнем называется нижняя, короткая часть восьмигранника. Длинная часть называется концом. Выдавите ещё одну кость прямо вниз из этой точки последовательным нажатием клавиш E и Z, как показано на рисунке 4.5.

Анимация в Blender_5.jpg

Рисунок 4.5 Выдавливаем кость вниз для создания нижней части живота

Нажмите Shift+E, чтобы зеркально выдавить бёдра, и продолжите выдавливать их вниз в левой части персонажа (от вас — справа).

Выдавите две кости ноги, соединённые в колене. Теперь выдавите ещё одну кость строго вниз путём нажатия E и Z.

Эти две последние кости, выходящие за пределы сетки, имеют особое назначение и не должны присоединяться к остальным костям. Выберите их обе, нажмите Alt+P и выберите Clear Parent. Эта операция не поддерживается функциями зеркального редактирования, так что необходимо убедиться, что выбраны обе кости.

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

Подгоните конечные точки костей спереди и сбоку, чтобы получить примерно то, что показано на рисунке 4.6. Когда всё будет правильно размещено, выберите все кости клавишей A и нажмите Ctrl+N, чтобы пересчитать все углы поворота (roll angles) костей, чтобы исправить повороты, которые кости приобрели во время редактирования.

Неплохо делать это (и большую часть задач риггинга) каждый раз, до начала работы над анимацией.

Анимация в Blender_6.jpg

Рисунок 4.6 Вид законченной арматуры спереди и сбоку

Выберите сетку и добавьте модификатор Armature. Это делается так же, как и в случае с другими модификаторами, такими как рассмотренные ранее Subsurf и Mirror.

Процедура отличается только тем, что вы должны указать имя объекта модификатора, который желаете использовать. В поле Ob. введите Armature, имя по умолчанию для первой созданной арматуры. Также убедитесь, что кнопка Vert Groups не выбрана, а кнопка Envelopes выбрана, как показано на
рисунке 4.7.

Анимация в Blender_7.jpg

Рисунок 4.7 Панель модификатора Armature

Огибающие

Основной целью риггинга является привязка влияния костей арматуры к вершинам сетки. Как упоминалось ранее, есть несколько способов это сделать. Самый изощрённый — это использование групп вершин (vertex groups) и раскраски весов (weight painting) — вы потратите на него время позднее в этой главе.

Для простых случаев целесообразнее использовать огибающие (envelopes). При использовании огибающих вы позволяете каждой кости влиять на все вершины внутри определённой области вокруг кости, определяемой как огибающая кости. Вы можете изменять размер как первичного влияния внутри огибающей, так и вторичной области дозированного влияния (gradated influence).

Если вы переключите опцию отображения кости с Octahedron на Envelopes, вы увидите графически представленные огибающие кости, как показано на рисунке 4.8. Трубообразные формы, которые вы видите, это и есть сами огибающие. Части сетки, находящиеся внутри этой области, будут при движении кости подвержены влиянию в полной мере.

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

Анимация в Blender_8.jpg

Рисунок 4.8 Арматура в режиме Envelope Display

Для изменения размеров огибающих вы должны находиться в режиме Envelope Display. Если вы в нём, то вы можете масштабировать их, выбирая огибающую или конец кости (огибающая показывается пурпурным цветом, конец кости — жёлтым). Область вторичного влияния можно масштабировать нажатием Alt+S.

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

Анимация в Blender_9.jpg

Рисунок 4.9 Огибающие, отредактированные по сетке

Теперь фигуре можно придать позу (см. рисунок 4.10).

Переключите режим отображения арматуры в Stick, чтобы видеть сетку. Перейдите в режим Pose и попробуйте придать фигуре некоторые позы.

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

Анимация в Blender_10.jpg

Рисунок 4.10 Придание позы арматуре

Анимация в Blender_11.jpg

Рисунок 4.11 Проблема с деформацией, вызванная тем, что область сетки не покрывается огибающей

Прежде чем продолжать, верните вашу сетку в исходное положение. Вы можете сделать это, выбрав все кости в режиме Pose и нажав Alt+R для очистки вращения. Если нужно, то Alt+G и Alt+S очистят местоположение и масштаб, но сейчас вам это не должно понадобиться.

Инверсная кинематика

Тип позирования, которым вы занимались в последнем разделе, когда кость, например, ноги или руки, вращались, а присоединённые к ней кости-потомки двигались вместе с ней, называется прямой кинематикой (forward kinematics). В нём движения при позировании управляются родительской костью конечности, которой придаётся положение.

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

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

Сейчас мы рассмотрим быстрый пример применения ограничений IK к левой ноге модели.

Неприсоединённая кость на самом конце цепочки ноги будет костью IK solver. Давайте дадим ей немного более осмысленное имя: назовём её IK.L. Чтобы дать кости имя, вам нужно выбрать её в режиме редактирования и ввести имя в поле BO: на вкладке Armature Bones, как показано на рисунке 4.12.

Вы уже отсоединили её, так что теперь её не должно быть видно в выпадающем меню Child Of. Также не должна быть выбрана кнопка Deform. Неплохо также было бы дать значимые имена остальным костям.

Анимация в Blender_12.jpg

Рисунок 4.12 Панель Armature Bones для IK.L

Теперь нужно применить ограничение IK к конечной кости цепочки IK, которая представляет собой последовательность костей, которые будут двигаться, сопровождая IK solver.

В случае нашей ноги это будет нижняя кость ноги под названием LowerLeg_L, которой требуется ограничение. В режиме Pose выберите эту кость и нажмите Add Constraint на вкладке Constraints. Выберите IK Solver и задайте значения, как показано на рисунке 4.13.

Для значения OB: введите Armature, поскольку вы применяете ограничение к кости объекта Armature. Когда в это поле будет введён объект Armature, автоматически появится поле BO:, в которое вы сможете ввести имя кости IK solver. Убедитесь, что Use Tip выбрано и ChainLen равно 2.

Вы также можете использовать общепринятые горячие клавиши для задания ограничений IK. Чтобы сделать это просто выберите цель ограничения IK, потом с Shift выберите кость, к которой вы будете применять это ограничение, после чего нажмите Ctrl+I и выберите соответствующий пункт из выпадающего меню. Это сократит вам количество действий при задании ваших ограничений IK, но вам по прежнему будет нужно отредактировать длину цепочки на панели Constraints.

Анимация в Blender_13.jpg

Рисунок 4.13 Панель IK Constraints

По умолчанию длина цепочки определена как 0, что означает, что вся цепочка костей, вплоть до корневой кости, будет включена в цепочку IK. Чаще всего это не совсем то, чего вы хотите добиться, и может привести к странному поведению арматуры, когда вы будете придавать нужное положение IK solver. Убедитесь, что присвоили ChainLen значение той точки, где ваша цепочка IK должна остановиться.

После этого ограничение IK применено. Теперь подвигайте IK solver левой ноги и пронаблюдайте за эффектом, иллюстрированным на рисунке 4.14. Если вы хотите вернуть арматуру в исходное положение, нажмите Alt+G.

Анимация в Blender_14.jpg

Рисунок 4.14 Позирование с помощью IK solver

Группы вершин и раскраска весов

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

Однако огибающие ограничены в той степени контроля над расположением и силой влияния кости на сетку, которую они предоставляют. Для более сложных ригов будет необходимо определить группы вершин (vertex groups) для каждой деформирующей кости и назначить веса вершинам из этих групп, аналогично тому, как вы управляли длиной волос в главе 3.

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

При именовании костей всегда добивайтесь того, чтобы имена костей заканчивались на .R и .L (или _L и _R) для левой и правой, соответственно, поскольку множество полезных автоматических функций в Blender полагается на это соглашение. Чтобы задать имена костей в режиме редактирования назовите кость с одной стороны на вкладке Armature Bones (например, UpperArm.L). После этого наведите мышь на текстовое поле, не кликая на него и нажмите Ctrl+C. Выберите соответствующую кость с правой стороны и снова наведите курсор мыши на текстовое поле и нажмите Ctrl+V. Это вставит в поле то же самое имя и Blender автоматически добавит к нему окончание .001, чтобы избежать дублирования наименований. Теперь при выбранной правой кости в режиме редактирования нажмите клавишу W, находясь в 3D-окне, и выберите Flip Left-Right Names. Blender автоматически переименует вашу кость в UpperArm.R.

Выберите верхнюю левую кость руки, нажмите клавишу W и выберите Apply Bone Envelopes to Vertex Groups. Как вы можете видеть на мониторе, область вокруг кости становится красной (на чёрно-белом рисунке 4.15 красный цвет выглядит светло-серым, тогда как синий — тёмно-серым). Как вы помните из главы 3, это означает, что вес вершин в этой области равен единице для группы вершин, связанной с этой костью. Вы можете также обнаружить, что в выпадающем меню групп вершин для вашей сетки появилась новая группа вершин.

Анимация в Blender_15.jpg

Рисунок 4.15 Раскраска весов на плече сетки

Сделайте то же самое для других костей, после чего перейдите к модификатору Armature, выключите Envelopes и включите Vert.Groups. Теперь вы можете подогнать влияние кости с помощью раскраски весов, тем же способом, как длину волос в главе 3.

Вы также можете придавать костям разные положения, находясь в режиме Weight Paint, что позволяет вам увидеть, как ваша раскраска весов влияет на деформации в определённых положениях. Пример улучшения деформации, которое может быть достигнуто путём применения раскраски весов для двух костей руки,
можно увидеть на рисунке 4.16.

Основным источником проблем с деформацией является неправильно выбранная опция деформации. Если вы пользуетесь группами вершин, то должны быть уверены, что кнопка Envelopes в модификаторе Armature не выбрана. Их можно использовать вместе, но в большинстве случаев это не то, что вам нужно.

Анимация в Blender_16.jpg

Рисунок 4.16 Пример улучшенной деформации с помощью раскраски весов

Страница: 1 2 3 4
Поделиться в: Опубликовать в twitter Опубликовать в своем блоге livejournal.com