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

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

Быстро проделайте экперимент.

В окне front нарисуйте цепочку из трех костей (четырех суставов) с помощью Joint Tool. Затем возьмите в руки инструмент Skeleton=>IK Handle Tool и, читая Help Line, щелкните в первый сустав, а затем в третий.

Enter нажимать не надо, MAYA сама разберется с тем, когда выйти из контекста.

Возникнет новый объект, IKHandlel.

Перемещайте его и смотрите, как реагирует скелет. Теперь вы можете дотянуться третьим суставом до нужной точки без каких-либо проблем. Обратите внимание, что третья кость совершенно не подверженная влиянию перемещений и вращение в третьем суставе остается постоянным.

Вы можете воспринимать полученную схему так, как будто бы был создан expression, который быстро пересчитывает перемещения IK Handle во вращения суставов, на которые он влияет.

Действительно, открыв Attribute Editor для созданного IK Handle, можно обнаружить закладку для такого «expression» по названием ikRPSolver. Это, конечно, никакой не expression, а нода, выполняющая пересчет перемещений IK-манипулятора во вращения суставов. На атрибутах этой ноды я не буду останавливаться в этой книге (не верьте Attribute Editor - атрибут Tolerance равен 0.00001).

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

Свойства IK-манипуляторов В соответствии с правилами препарирования MAYA, получив новый объект, следует тут же осмотреть его в Attribute Editor на предмет обнаружения интересных атрибутов.

В нашем случает интерес представляют два раздела. Первый из них, IK Handle Attributes, задает поведение и внешний вид объекта IK Handle. По умолчанию IK-манипулятор как бы привязан резинкой к концевому суставу, и когда вы оттягиваете его слишком далеко, а затем отпускаете, он мгновенно возвращается к своему суставу. Это поведение можно отменить, выключив атрибут Snap Enable.

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

Если какой-нибудь сустав находится под влиянием нескольких IK-манипуляторов (вам никто не мешает сделать их «перекрывающимися»), то с помощью атрибут Priority можно задать, влияние которого из них будет вычисляться в первую очередь. Чем меньше значение, тем выше приоритет вычисления.


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