Только в отличие от дерева, конечно же, кости не гнутся, а вращаются у своего основания. А сила натяжения каждого IK Handle задается атрибутом weight.
Очень важно помнить, что солвер во время своих расчетов учитывает все IK Handles с одним номером приоритета (атрибут priority).
Создайте цепочку из двух костей (трех joints) и создайте два IK Handles, от первого сустава до второго и от первого до третьего.
Так как Multi Chain Solver солвер не создается автоматически при создании костей, нужно выполнить команду: createNode ikMCsolver.
Затем с помощью Attribute Editor у обоих IK Handles нужно выбрать тип солвера “ikMC-solverl” в закладке IK Solver.
Перед тем, как испытать IK, поставьте ключи на перемещения на оба IK Handles и у второго из них сделайте атрибут weight равным 100.
Такая система может напоминать работу ikRPsolver с одним IK Handle и Pole Vector, но все же есть два отличия.
Первое, что бросается сразу в глаза - позиция последнего сустава зависит от удаленности первого IK Handle со слабым весом. Чем дальше он удаляется от костей, особенно в противоположную сторону от другого IK Handle, тем больше удаляется последний сустав от своей конечной цели, а именно позиции второго IK Handle.
А второе отличие состоит в том, что солвер, перед тем как сделать новый расчет углов, не возвращает кости в Preferred Angle (углы предпочтения). Другими словами, он делает расчет, исходя из текущих на данный момент углов. Это означает, что даже вернув все IK Handle в исходную позицию, мы не получим исходные углы костей. Чем больше мы дергаем наши IK Handles, тем больше «накручиваем» углы на костях. Очень забавно, но совсем не практично.
Из этого можно сделать вывод, что использовать ikMCsolver желательно только как вспомогательную систему. Например, с его помощью мы можем вычислить позиции суставов, к которым с помощью Point Constraint можно прикрепить IK Handles других солверов.
От слов - к делу! Рассмотрим пример применения ikMCsolver для сетапа из трех костей. Многие сталкивались на практике с тем, что самая предсказуемая и легко управляемая система состоит только из двух костей. Недаром в 7-ой версии MAYA разработчики добавили ikSpringSolver, который облегчает работу с тремя и более длинными цепочками костей. Но в нашем примере нам поможет только ikMCsolver.
Задача у нас следующая: требуется рассчитать позицию трех костей - двух коленей и таза персонажа, который стоит на коленях. При этом, чтобы имелась возможность управлять наклоном таза из стороны в сторону и вверх-вниз, а также поворотами влево-вправо. Колени же при этом должны оставаться в тех местах, где находятся соответствующие локаторы.
Откройте файл MultiChainTest.ma
С нем содержится пример с тремя костями. Здесь вы не увидите никаких коленей и тем более таза. Проявите свое воображение и представьте себе, что два локатора (синий и красный) на плоскости задают позицию коленей, а зеленый, соответственно, таза.
Более того, обратите внимание на то, что цепочка, начинается с правого колена, а не, как обычно, с тазовой кости. Подразумевается, что таз в данном примере находится посередине второй кости.