Single Chain Solver удобно использовать для управления кинематическими цепочками, состоящими из одной кости. (Кто вам сказал, что нельзя создавать IK Handle для соседних суставов? Это как раз непостижимо удобно для управления отдельными костями.) Кроме того, для таких IK Handle удобно создавать Point и Orient Constrain, и тогда один управляющий объект может контролировать одновременно ориентацию нескольких цепочек. Например, один локатор может управлять разворотом ступни (один IK Handle) и ориентацией колена (другой IK Handle). Подробнее про использование того или иного алгоритма инверсной кинематики смотрите в нижеследующих практических примерах.

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

Алгоритм Two Bone Solver

Он появился в АША сравнительно недавно и представляет собой еще один тип инверсной кинематики - ik26solver (2 Bone Solver). Внешне он ничем не отличается от Rotation Plane Solver и имеет такие же атрибуты. Однако способен работать только с двумя костями. Вы, конечно, можете задать тип ik2BSolver для IK Handle, созданного для более длинной кинематической цепочки, однако вычисления будут производиться только для первой и последней кости в цепочке. Я так понимаю, этот алгоритм был включен в MAYA (вместе со своим исходным кодом) специально для экспорта персонажей в игровые движки, так как является наиболее быстрым алгоритмом среди всех возможных солверов.

Алгоритм Multi Chain Solver

Самым сложным и, соответственно, гибким является Multi Chain Solver (ikMCsolver). Он позволяет создавать перекрывающиеся кинематические цепочки и вычислять результат одновременного влияния нескольких IK Handle на основе значений приоритетов и весов. Примером использования этого алгоритма может быть персонаж, стоящий на коленях и при этом опирающийся на руки или локти. Чтобы анимировать положение спины или таза, сохраняя контроль над позициями рук и коленей, лучше использовать Multi Chain Solver, так как остальные алгоритмы плохо подходят для решения данной задачи.

По умолчанию, этот IK Solver не присутствует в сцене автоматически и вам нужно создать его вручную, используя MEL-команду: createNode ikMCsolver. После этого он появится в списке доступных алгоритмов для атрибута IK Solver для всех существующих IK Handle в текущей сцене. Этот солвер неспроста скрыт разработчиками MAYA. Скорее всего, программисты сами не смогли придумать ему конкретной реализации и ограничились небольшим абзацем в документации. Но изучив этот солвер внимательнее, можно обнаружить, что он не так загадочен и бесполезен, как на первый взгляд кажется.

Чтобы лучше понять принцип его действия, давайте абстрагируемся от самой MAYA и представим себе структуру костей в виде дерева, с гибким стволом и ветвями. A IK Handles этого солвера, в виде резинок, которые с привязаны к разным ветвям и одновременно тянут ветви в разные стороны. Причем у каждой из них может быть своя упругость. Поэтому форма, в которую согнут это деревце наши резинки, зависит от совокупности действия разных сил. Вот примерно так же работает и ikMCsolver.


⇐ вернуться назад | | далее ⇒