Создайте локатор. Выбрав его, дополнительно выберите 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. Как видите, управление становится простым до безобразия. Но за простоту приходится платить и, например, проблемы с переворачиванием-перещелкиванием (если они возникнут, конечно) не удастся решить также ловко, как в предыдущем случае.


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