Создайте локатор. Выбрав его, дополнительно выберите IK Handle, а затем выполните операцию Constraint Pole Vector.
После этого конец вектора, определяющего плоскость вращения, «прилипнет» к локатору, и вы сможете, перемещая локатор, управлять направлением сгиба.
Таким образом, перемещая сам IK Handle и сопутствующий локатор, вы можете добиться предсказуемого поведения кинематической цепочки.
Однако вас может поджидать еще одна проблема. Это flipping, или внезапный разворот суставов внутри кинематической цепочки. Если IK Handle, локатор и верхний сустав находятся в одной вертикальной плоскости и вы будете перемещать IK Handle наверх, рано или поздно согнутая конечность перевернется.
Если вас это шокирует, поспешу вам сообщить, что это совершенно предсказуемо, а главное
- контролируемо. И во всем «виноват» опять-таки Pole Vector, а точнее, его направление.
Очевидно, что три точки - начало (1) и конец (2) IK Handle плюс конец (3) Pole Vector -определяют плоскость, в которой происходит сгибание суставов. Однако в этой плоскости суставы могут согнуться либо в одну сторону, либо в противоположную (относительно линии между началом и концом IK Handle). Если провести линию от первого до последнего сустава в цепочке IK Handle, суставы будут сгибаться в ту сторону от этой линии, в которой находится конец вектора Pole Vector (или, в нашем примере, Locator).
Таким образом, имея в руках конец Ро1е-вектора, вы можете контролировать, в какую сторону будут сгибаться суставы, и вы всегда можете сдвинуть его так, чтобы внезапного разворота не происходило. Надо просто анимировать его в нужные моменты, следя за тем, чтобы он не пересекал линию между первым и последним суставом 1К-цепочки.
Для дополнительного контроля над положением согнутых суставов у IK Handle имеется дополнительный атрибут Twist. Он задается в градусах и позволяет повернуть всю цепочку целиком.
IK-манипуляторы, использующие ikRPsolver (Rotation Plane Solver), являются рабочими лошадками инверсной кинематики. Они, как правило, обеспечивают абсолютно предсказуемые вращения и при этом имеют атрибуты, обеспечивающие (совместно с Pole Vector Constrain) гибкий и мощный механизм контроля. Основные работоспособные конечности (руки, ноги) обычно (хотя и не всегда) можно анимировать (то есть управлять) с их помощью.
Однако разнесение элементов управления на разные объекты и атрибуты несколько усложняет задачу быстрого контроля над вращениями суставов. В тех случаях, когда не требуется сложного управления цепочкой из костей, можно применять Single Chain Solver, о котором и пойдет речь ниже.
Алгоритм Single Chain Solver
Когда требуется предельно упростить управление инверсной кинематикой и сделать его возможным «из одного места», а не при помощи нескольких объектов, хорошим способом будет использование ikSCsolver. Его концепция в состоит следующем.
Вычисление вращений суставов производится не только на основе перемещений IKHan-dle, но и зависит от его поворотов. Измените для IK Handle атрибут IK Solver на ikSCsolver и попробуйте повращать IK Handle. Теперь плоскость, в которой происходит сгибание-разгибание суставов, полностью определяется атрибутами Rotate объекта IK Handle. Как видите, управление становится простым до безобразия. Но за простоту приходится платить и, например, проблемы с переворачиванием-перещелкиванием (если они возникнут, конечно) не удастся решить также ловко, как в предыдущем случае.