Смешивание прямой и инверсной кинематики. История вопроса Сначала я расскажу о том, как люди выживали в те времена, когда никакого «сблендивания кинематик» не было и в помине. Ловкие умы могут повторить мои лаконичные объяснения на пальцах.
Создайте «руку» из трех суставов.
Сдублируйте ее, с установками по умолчанию, а затем поверните немного каждую из двух копий вокруг верхнего сустава.
Будем называть среднюю руку «второй», а остальные две - «первой» и «третьей».
Выберите в Outliner первую, третью, а затем вторую руку за верхний сустав.
Выполните Constrain=>Point. И сразу после этого Constrain=>Orient.
Средняя рука «прилипнет» своим суставом к первым двум и повернется так, чтобы располагаться точно посередине между остальными руками.
Теперь выберите второй сустав у первой, третьей, и второй руки. Снова выполните Constrain=>Orient, чтобы ориентировать и вторую кость точно между соседями.
Теперь вы можете по очереди выбирать в Outliner два Orient Constrain, и меняя атрибуты, отвечающие за веса первой и третьей руки, делать так, что вторая рука будет прилипать то к первой, то к третьей конечности.
Теперь создайте один сустав, чуть повыше плеча.
Выберите первую, затем третью руку, а потом новый сустав.
Выполните Edit=>Parent.
Выберите самый верхний сустав и добавьте к нему новый атрибут (name=fkik, min/max=0/1, default=0.5).
Теперь откройте окно Set Driven Key.
Загрузите наверх верхний сустав, а вниз оба констрейна типа Orient.
Сделайте так, чтобы атрибут fkik управлял изменением весов: при fkik=0 должны обнуляться веса первой руки, а при fkik=1 в ноль обращаются веса третьей руки, а веса первой наоборот равны единице. (Не забывайте выделять нужные атрибуты, перед тем как нажимать кнопку Key.) Если совсем запутаетесь, откройте сцену fkikOldSchool.ma.
Теперь вам осталось навесить IK Handle на одну из управляющих рук, например, на третью. Затем вы можете шевелить, то бишь, анимировать то первую руку (прямой кинематикой), то третью руку (инверсной кинематикой) и переключать среднюю руку между ними, анимируя в нужный момент атрибут fkik. Очевидно, что поверхность модели должна быть привязана к средней руке. Это, конечно, очень примитивный пример, однако он демонстрирует основной принцип переключения от одного типа движения к другому с помощью старых добрых констрейнов и вездесущей технологии Set Driven Key. Несмотря на некоторую громоздкость, этот подход дает абсолютно предсказуемый результат и отлично проверен временем.
Однако для пользователей, измученных сражениями с окном Set Driven Key и поиском потерянных ключей, не так давно появилась возможность плавно переключаться от прямой к инверсной кинематике, не создавая шестируких самураев.
Смешивание прямой и инверсной кинематики - современный подход Когда вы создаете IK Handle, у него всегда есть атрибут ikBlend. По умолчанию он равен единице. Если его обнулить, это будет означать, что этот IK Handle больше не работает, то есть выключен (в ранних версиях MAYA этот атрибут назывался .solverEnable).
Создайте простую руку и навесьте на нее IK Handle.