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

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

Одним из наиболее часто используемых типов ограничителей являются ограничители IK. Как упоминалось ранее, ограничители IK применяются к цепочке IK — цепочка костей (например, конечности) и позволяют придавать положение этой цепочки путём простого указания точки, где должен находиться конец цепочки. При этом компьютер самостоятельно рассчитывает необходимые углы для костей. Дополнительно мы можете применить к некоторым углам ограничители (например, запретить некоторым суставам сгибаться по определённым осям или ограничить доступные углы определённым диапазоном).

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

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

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

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

Иногда ограничители IK используются для пальцев. Это вопрос личных предпочтений, но мы будем использовать FK для пальцев этой модели, и управлять сложными, но часто повторяющимися движениями с помощью ограничителей действия (action constraints). Мы будем пользоваться IK для управления движениями шеи, головы и позвоночника, в последнем случае — совместно с ограничителями растяжения.

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

По умолчанию вся последовательность из цепочки костей, которая управляется ограничителем IK, называется «цепочкой IK». Вы устанавливаете длину цепочки IK самостоятельно при задании ограничителя.

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

Помимо этого, целью для цепочки IK может быть назначен любой объект. Некоторые люди также предпочитают использовать пустышки в качестве целей IK, но в Blender это не рекомендуется, поскольку на данный момент только позы арматуры могут преобразовываться в повторно используемые действия (actions) (об этом рассказано далее в этой главе и в главе 7).

Начнём с простейшей цепочки IK в риге: с шеи. Для начала вам надо добавить кость привязки шеи в её основании. Назовём эту кость neckloc. Добавьте её как показано на рисунке 4.36 и привяжите (parent) её к UpperBody.

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

Рисунок 4.36 Добавляем кость расположения шеи (neckloc)

Используя 3D-курсор, чтобы расположить новую кость в основании neckloc, добавьте кость Neck, как показано на рисунке 4.37. Эта кость также должна быть привязана к UpperBody. Выдавите ещё одну кость прямо вперёд по оси Y, как показано на рисунке 4.38. Эту кость назовём HeadController.

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

Рисунок 4.37 Выдавливаем шею

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

Рисунок 4.38 Выдавливаем кость HeadController

HeadController будет той костью, к которой будут крепиться остальные кости головы, так что они будут следовать движению головы. Поскольку вам нужно, чтобы движения на конце шеи выглядели естественно, её нужно присоединить к шее. По этой причине вы не можете использовать HeadController в качестве цели IK для шеи; вы должны сделать для этого другую кость.

Итак, из той же самой точки, откуда вы выдавили HeadController, выдавите ещё одну кость и назовите её Head. Выдавите её в том же направлении, ограниченном осью Y, что и HeadController. Сделайте её несколько больше чем HeadController, как показано на рисунке 4.39. Присоедините Head к UpperBody.

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

Рисунок 4.39 Добавляем кость Head

Теперь добавим два ограничителя к Neck. Первым будет ограничитель Copy Location, целью которого будет neckloc. Для простого добавления ограничителя, выберите цель ограничения, потом, удерживая Shift, выберите кость, к которой будете применять ограничитель, после чего нажмите Ctrl+Alt+C для вызова меню ограничителей. В нашем случае выберите из этого меню Copy Location, которое привяжет шею к neckloc.

Другим ограничителем будет ограничитель IK, и его целью будет Head. В обоих случаях в поле OB: должно стоять Armature. Это объект, на который нацелен ограничитель, в нашем случае его имя по умолчанию Armature. После того, как вы введёте имя арматуры в поле OB:, появится новое поле, куда нужно ввести целевую кость. Панель Constraints для Neck должна выглядеть так, как показано на рисунке 4.40.

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

Рисунок 4.40 Панель Constraints для кости Neck

Подвигайте кость Head и посмотрите, как отзывается Neck. В случае однозвенной цепочки IK ничего особенного не происходит: кость просто пытается следовать движению цели IK. Однако, как вы можете заметить, кость HeadController двигается не очень естественным образом. Было бы гораздо лучше, если бы вы могли управлять углом этой кости с помощью той же кости, которая контролирует движения головы — то есть, кости Head.

И вы действительно можете это сделать, воспользовавшись наложением на HeadController ограничителем Copy Rotation, целью которого будет Head, как показано на рисунке 4.41. Когда вы закончите с этим, попробуйте снова подвигать кость Head и повращать её. Обратите внимание на улучшение в движении головы. Вы можете увидеть отличия на рисунке 4.42.

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

Рисунок 4.41 Панель Constraints для кости HeadController

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

Рисунок 4.42 Положение Head Controller до и после добавления к нему ограничителя Copy Rotation, целью которого является Head

Далее вам нужно добавить IK solver для позвоночника. Вы можете выдавить его непосредственно из Spine.4 в режиме редактирования, как показано на рисунке 4.43. Вы должны переприсоединить его, поскольку Spine.4 будет в цепочке IK. Назовите эту кость IK_Spine и присоедините к Shoulders.

В режиме Pose добавьте к Spine.4 ограничитель IK, целью которого будет IK_Spine. Задайте длину цепочки, равную 4. Для IK позвоночника вам также потребуется ограничитель, принимающее во внимание вращение цели IK, что позволит вам управлять поворотами позвоночника прямо через цель IK. Чтобы стало так, выберите Rot в качестве опции для этого ограничителя.

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

Рисунок 4.43 Выдавливаем цель IK для позвоночника

Для рук вы можете создать кости IK путём копирования костей кисти, нажав Shift+D и слегка увеличив их с 3D-курсором в качестве точки вращения, расположенным в основании кости. Таким образом, новые кости сохранят то же вращение и расположение, что и исходные кости Hand, как показано на рисунке 4.44. Назовите эти кости IK_Arm.L и .R. Создайте на костях предплечья ограничитель IK, целью для которого будут эти кости IK.

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

Рисунок 4.44 Создаём цели IK для кистей

Теперь вы можете управлять движением руки, но угол кисти остаётся независимым от целевой кости IK. Вы можете упростить управление рукой, скопировав вращение целевой кости IK на кость Hand. Чтобы сделать это, установите ограничитель Copy Rotation на Hand.L и Hand.R к IK_Hand.L и IK_Hand.R, соответственно. Улучшенное движение можно увидеть на рисунке 4.45.

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

Рисунок 4.45 Движение кисти без ограничителя Copy Rotation, применённого к цели IK, и с таковым ограничителем.

Для ступни мы начнём с выбора кости Foot и копирования её нажатием Shift+D. Оставьте эту копию там же — она займёт то же место, что и Foot — так что теперь у вас на одном и том же месте будут две кости. Назовите новые кости FootMech.L и .R. Нажмите Alt+P, чтобы очистить родительскую связь (см. рисунок 4.46). Позднее мы переприсоединим эту кость, но сейчас её нужно открепить (unparent) от кости голени, так чтобы вы смогли сделать её целевой костью IK.

Теперь добавьте ограничитель IK к костям голени. Сделайте длину цепочки равной 2. Потом, как вы уже сделали это для головы и рук, добавьте к костям Foot.L/.R ограничитель Copy Rotation, целями которого являются FootMech.L/.R.

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

Рисунок 4.46 Копируем кость Foot и очищаем родительскую связь. На иллюстрации в подсвеченной позиции на самом деле находится две кости.

Теперь выдавите ещё две кости прямо вниз от концов голеней и переприсоедините эти кости к кости Root, как показано на рисунке 4.47. Назовите эти кости FootRoot.L и .R. Эти кости будут использоваться для более точного позиционирования ступней.

Далее скопируйте toeDeform.L/.R и очистите родительские связи получившихся костей. Назовите новые кости Toe.L/.R. Они должны находиться в тех же местах, что и toeDeform.L/.R. Из основания этих костей выдавите две кости назад по оси Y, как показано на рисунке 4.48: ball.L/.R и heel.L./R. Поверните кости подъёма на 180 градусов по оси X.

Присоедините кости подъёма к костям FootRoot и присоедините кости большого пальца и Toes к костям подъёма. Присоедините кости FootMech.L/.R к ball.L/.R. Создайте ограничитель Copy Rotation для toeDeform.L/.R с целью Toe.L/.R.

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

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

Выбор и снятие выбора перекрывающихся костей может быть сложным. Есть несколько способов упростить его, если несколько костей должны занимать одну и ту же позицию в арматуре. Одним из таких способов является создание специальных форм (shapes) для костей, как вы увидите в главе 5. Неплохой пример такой техники можно увидеть в риге Mancandy Бассама Курдали (Bassam Kurdali) на прилагаемом DVD.

Другой подход состоит в использовании отображения арматуры B-bone, что придаёт костям определённую толщину. Вы можете делать кости более или менее толстыми, нажимая Alt+S в режиме редактирования или позирования. Пример отображаемых таким образом костей вы можете увидеть в риге ступни в главе 14.

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

Рисунок 4.48 Выдавливаем большой палец и подъём вдоль оси Y, после чего поворачиваем подъём на 180 градусов.

Добавьте ещё одну кость в задней части подъёма, как показано на рисунке 4.49. Назовите эту кость heelDeform.L/.R. Присоедините её к FootMech.

Наконец, выдавите ещё одну кость из конца костей голени прямо назад по оси Y и переприсоедините эти кости к корневой кости (рисунок 4.50). Назовите их Ball_Heel_Rotation.L/.R и добавьте к ним ограничитель Copy Location, целями которых являются соответствующие кости FootRoot.

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

Рисунок 4.49 Добавляем кость heelDeform

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

Рисунок 4.50 Добавляем кость Ball_Heel_Rotation

Теперь у вас должна быть возможность перемещать ноги с помощью FootRoot.L/.R, как показано на рисунке 4.51. С ногами можно делать ещё много интересного (вы узнаете об этом позже в этой главе, когда мы будем обсуждать ограничители действий).

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

Рисунок 4.51 Перемещаем ногу с помощью кости FootRoot

Ограничители растяжения

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

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

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

Чтобы позволить голове персонажа сжиматься и растягиваться, дважды выдавите строго вверх по оси Z из конца кости Neck, как показано на рисунке 4.52. Более длинная из этих двух костей должна называться HeadStretch, а оставшаяся — HeadStretchControl. Обе кости должны быть присоединены к HeadControl. Выдавите третью кость вниз под углом из конца HeadStretch, после чего отсоедините (disconnect) кость, но не разрывайте родительской связи. Это будет кость, предназначенная для деформации сетки, так что назовите её HeadDeform.

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

Рисунок 4.52 Установка костей деформации головы

В режиме Pose примените ограничитель Stretch To к кости HeadStretch с HeadStretchControl в качестве цели. Вы можете оставить здесь значения по умолчанию. Blender самостоятельно вычислит исходную длину (rest length). Если вы переместите кость в режиме редактирования после добавления ограничителя, вам понадобится нажать кнопку R справа от поля Rest Length, чтобы Blender пересчитал это значение для кости.

Поле Volume Variation позволяет вам задать степень искажения костью объёма сетки. Чем больше это значение, тем более преувеличенным становится эффект. Наконец, выберите кость HeadStretchControl в режиме Pose и нажмите клавишу N, чтобы увидеть окно Transform Properties.

Вам нужно заблокировать трансформации по LocX и LocZ, щёлкнув по иконкам с замками для этих осей, как показано на рисунке 4.53. Это позволит кости двигаться только вдоль, строго по локальной оси Y. Теперь поэкспериментируйте, подвигав кость HeadStretchControl. Заметьте, что кость HeadDeform также растягивается, поскольку присоединена к кости с ограничителем растяжения.

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

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

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

Рисунок 4.53 Ограничитель движения кости HeadStretchControl в окне Transform Properties

Цепочка IK для позвоночника у нас уже настроена. Сейчас вам нужно сдублировать три верхние кости в этой цепочке: Spine.2, Spine.3 и Spine.4. Скопируйте их в то же место, нажав Shift+D. Назовите новые кости SpineStretch.2, SpineStretch.3 и SpineStretch.4 в соответствии с костями, откуда они были скопированы. Присоедините все эти кости к Torso.

Теперь для каждой кости SpineStretch добавьте ограничители Copy Location и Copy Rotation, нацеленные на соответствующие кости Spine. Например, кость SpineStretch.4, расположенная на том же месте, что и Spine.4, должна быть настроена на копирование расположения и вращения этой кости. Это гарантирует, что при движении костей Spine кости SpineStretch будут следовать этим движениям.

Далее, для каждой из костей SpineStretch добавьте ограничители Stretch To, нацеленное на нерастягивающиеся кости (nonstretch constrained) сразу под ними. Например, кость SpineStretch.2 должна присоединяться ограничителем растяжения к Spine.3, SpineStretch.3 — к Spine.4 и SpineStretch.4 — к IK_Spine. Для наглядности рисунок 4.54 показывает, как должна выглядеть панель Constraints для SpineStretch.2.

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

Рисунок 4.54 Панель Constraints для SpineStretch.2

Наконец, кости актуальной цепочки IK должны приобрести некоторую способность растягиваться. Для этого в режиме Pose для каждой из костей цепочки IK перейдите на вкладку Armature Bones и введите в поле Stretch значение 0.100. Если вам нужно сделать эффект более «растяжимым», можете увеличить это значение.

Теперь вы должны быть способны контролировать движения верхней части тела с помощью перемещения и вращения кости UpperBody. Поэкспериментируйте с эффектом. Вы должны иметь возможность получить позу, похожую на показанную на рисунке 4.55.

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

Рисунок 4.55 Позирование с помощью позвоночника с ограничителем растяжения

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