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

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

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

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

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

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

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

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

В Blender для быстрого добавления ограничителя инверсной кинематики используется комбинация клавиш Shift + I. Выделим кисть и нажмем горячие клавиши. В появившемся меню выберем вариант To New Empty Object | К новому объекту-пустышке.

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

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

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

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

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

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

Видимо поэтому чаще в качестве объекта-ограничителя (управляющего звена) используют не пустышку, а отдельную кость той же арматуры. Перед тем, как выполнить изменения, найдем ограничитель, который мы добавили через Shift + I. Вместо использования горячих клавиш мы могли бы сделать это через вкладку Bone Constraints | Ограничители кости редактора свойств. Здесь и находится уже добавленный.

Перейдем в режим редактирования арматуры. Вытянем из кисти следующую кость, назовем ее "Рукоять", отвяжем от цепи (можно и отодвинуть), убрав у нее родителя на панели Relations | Отношения.

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

Отметим некоторые настройки IK-ограничителя. Вы уже могли заметить, что от кончика кости, к которой применяется ограничитель (в нашем случае ‒ это кисть), к корню главной кости проходит пунктирная линия. Она обозначает длину цепи, на которую распространяется инверсионная кинематика. По умолчанию конечным звеном является первая в иерархии. Это обозначается числом 0 в параметре Chain Length. Если установить там значение 2, то в инверсионную кинематику, то есть в зависимость от движения кистью, будет вовлечено только предплечье. Вы получите сгибание исключительно в локтевом суставе, в то время как плечо будет оставаться на месте. Цифра 3 в нашем случае не будет отличаться от нуля, так как соответствует плечу, то есть максимальной длине данной цепи.

Если включить флажок Rotation | Вращение, то положение кисти будет меняться не только от перемещения рукояти, но и от ее поворотов.

Influence | Влияние контролирует процент влияния ограничителя на объект, в данном случае позволяет уменьшить зависимость от объекта-цели (target). Кисть будет как бы отставать от своей цели. Движение кисти будет менее значительным, чем перемещение рукояти.

Практическая работа

Создайте анимацию движения с инверсной кинематикой.

Анимация в Blender 4.3.0




Все разделы сайта