Ограничитель Spline IK костей арматуры в Blender

Обновлено:

В Blender с помощью ограничителя Spline IK кости располагают по кривой. После этого изменение формы кривой отражается на положении костей и объекте, который привязан к арматуре.

В этом руководстве сначала объясняются общие особенности сплайновой инверсной кинематики, затем пошагово описывается ее создание в Blender. В конце кратко говорится о том, как выполняется анимация деформируемого через сплайновую кривую меша.

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

В общей сложности процесс настройки сплайновой инверсной кинематики состоит из следующих этапов:

  1. создание объекта-модели,
  2. создание под него арматуры и связывание ее костей с объектом,
  3. добавление кривой,
  4. привязка кривой к арматуре через ограничитель кости Spline IK.

Несмотря на то, что в названии ограничителя упоминается инверсная кинематика, и влияние дочерних элементов на родительские очевидно будет, его основа — все же прямая кинематика. Установив Spline IK и трансформируя старшие в иерархии кости, вы поменяете положение младших. Это хорошо видно, если поворачивать кость вдоль ее локальной оси Y (R → Y → Y). Вместе с ней это будут делать дочерние, но не родительские.

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

Размеры костей имеют значение, как они расположены друг относительно друга — нет. Они все равно потом "лягут" по форме кривой. Так что проще изначально выложить их вдоль прямой линии.

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

На примере схематичной модели опишем последовательность действий при использовании ограничителя Spline IK.

Добавим цилиндр. Повернем его на 90 градусов по оси Y (R → Y → 90 → Enter). Через боковую панель (N) установим размер (dimensions) X = 0.5, Y = 0.5, Z = 10. Перейдем на вид спереди. В режиме редактирования с помощью инструмента Loop Cut (разрезать петлей) подразделим цилиндр 50 раз поперек его длинной оси (разделяете пополам, потом в регионе последнего действия указываете число).

Подготовка объекта-модели для сплайновой инверсной кинематики в Blender

Выйдем из режима редактирования цилиндра. Добавим арматуру. Включим отображение во вьюпорте "спереди" (in front). Повернем ее на 90 градусов по оси Y. Совместим корень кости с левым основанием цилиндра (G → X → -5). В режиме редактирования выполним выдавливания кончика звена вдоль оси X (E → X → 1 → Enter), создав тем самым вторую кость такого же размера. Повторим последнее действие (Shift + R) еще 8 раз. В результате должно получиться 10 костей, вся арматура должна "покрывать" модель.

Цепь костей для сплайновой кинематики

В объектном режиме выделим сначала цилиндр, затем арматуру. Установим родительскую связь (Ctrl + P), выбрав вариант арматурной деформации With Automatic Weights (с автоматическими весами). Blender сам создаст цилиндру группы для костей и распределит вершины по ним. В его режиме редактирования вы можете проверить правильность распределения (одни и те же вершины могут относиться сразу в две смежные группы, это нормально). Также имеет смысл в режиме позы арматуры посмотреть, что все работает как надо (потом очистите трансформации).

Группы вершин после автоматического назначения
Изменение арматуры в режиме позы

В объектном режиме добавим кривую Path (путь). Установим размер по оси X в 10 м, переключимся на вид сверху и немного сместим кривую по оси Y, чтобы ее было видно.

Добавление кривой для Spline IK

Перейдем в режим позы арматуры. Выделим последнюю кость (самое младшее звено в иерархии) и добавим ей ограничитель Spline IK | Сплайновая ИК. В его настройках в качестве цели (target) укажем нашу кривую, установим длину цепи (length chain) в 10 костей. После этого вся арматура и модель вместе с ней переместятся на кривую.

Настройки ограничителя Spline IK в Blender

Теперь если править путь в режиме редактирования, модель будет соответственно изгибаться. Поскольку кривая не видна за арматурой, перед этим следует выбирать ее в аутлайнере (редактор Outliner), находясь в объектном режиме. Можно также через редактор свойств включить ее отображение во вьюпорте.

Изменение модели при редактировании кривой, привязанной к Spline IK

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

Анимацию арматуры, у которой есть ограничитель Spline IK, можно выполнять через ключи формы кривой. Однако обычно так не делают, так как этот способ неудобен. Вместо этого используют "крюки" (hooks). Для их создания надо в режиме редактирования кривой выделять ее точки и нажимать Ctrl + H.

В качестве крюков лучше использовать отдельные управляющие кости арматуры (в Blender 5.2 это сделать не удается, т.к. выделять кость надо в режиме позы, затем, выделив кривую, перейти в режим ее редактирования, что по умолчанию не работает). Также можно создавать крюки-пустышки (при нажатии горячих клавиш вариант Hook to New Object).

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