3ds Max. Урок 1. Инверсная кинематика

Ноябрь 2, 2012 в категории 3dsMax. Персонажная анимация

Урок адаптирован под версию 3ds max 2009.

Инверсная кинематика является основой, на которой строится персонажная анимация. Она работает совсем не так, как работает прямая кинематика — потомки приводят в движение родительские объекты. Потомок, который вызывает трансформации других объектов по законам инверсной кинематики, называется либо эффектором (Effector), если он расположен в середине иерархической цепочки, либо конечным эффектором (EndEffector), если он является конечным объектом данной цепочки. Через эффектор осуществляется манипулирование всей иерархической цепочкой. При этом трансформация конечного эффектора обеспечивает трансформацию всех объектов иерархической цепи по законам инверсной кинематики, а трансформация просто эффектора приводит к тому, что положение объектов, стоящих по иерархии ниже его, меняется по законам прямой кинематики, а объектов с более высокой иерархией — по законам инверсной кинематики.

В качестве примера откройте файл Table_lamp3-1.max. Иерархическая цепь объектов здесь уже создана. Чтобы ее увидеть, выполните команду Select by Name и в окне Select from Scene разверните структуру объекта. В данном случае конечным эффектором иерархической цепочки является самый нижний в иерархии объект Reflector.

Установите режим инверсной кинематики. Для этого на панели Hierarchy (Иерархия)  откройте закладку IK (Инверсная кинематика) и щелкните кнопкой Interactive IK (Интерактивная инверсная кинематика). Выделите объект Support и переместите его в сторону. Вместе с ним точно так же переместятся и все остальные объекты. Теперь выделите, например, объект Lever02 и переместите его в любую сторону. Его перемещение вызовет изменение положения всех остальных объектов, включая объект Support, являющийся самым высшим в иерархии. При этом положение объектов, стоящих по иерархии ниже перемещаемого объекта (в данном случае это объекты Hinge03, Lever03, Reflector), будет меняться по законам прямой кинематики, а объектов с более высокой иерархией (Hinge02, Lever01, Hinge01, Support) — по законам инверсной кинематики.

Обратите внимание, что при перемещении рычага Lever02 положение и ориентация всех объектов меняются непредсказуемым образом. Это связано с тем, что по умолчанию для объектов, управляемых посредством эффектора, допустимы любые варианты перемещения и вращения, хотя на практике они могут трансформироваться только каким-либо определенным образом. При инверсной кинематике эти проблемы регулируются на закладке IK панели Hierarchy  с помощью параметров, задаваемых в свитках Sliding Joints (Скользящие соединения) и Rotational Joints (Вращательные соединения).

Кроме того, можно определить в системе объект, который будет играть роль ограничителя. Terminator (Ограничитель) — это последний объект системы инверсной кинематики, начиная с верхнего уровня, который не подвергается влиянию при движении дочернего объекта. Для определения ограничителя достаточно выделить объект и в свитке Object Parameters (Параметры объекта) установить для него флажок Terminator.

Выделите объект Hinge01, перейдите на вкладку Hierarchy (Иерархия) | IK (Инверсная кинематика) и включите команду Interactive IK (Интерактивная инверсная кинематика). В свитке Object Parameters (Параметры объекта) установите флажок для Terminator. Передвиньте объект Lever02 в любую сторону. При этом объект Hinge01 и его родительский объект Support останутся неподвижными (рис. 1.1).

Рис. 1.1. Шарнир Hinge01 определен в качестве ограничителя

Продолжение урока вы можете найти в книге Горелика А.Г. «Самоучитель 3ds Max 2012«.

Реклама: