Знакомство с инверсной кинематикой
Мы поработали с инструментом Joint и разобрались, как он работает. Теперь давайте посмотрим, как можно управлять суставами более простым способом. В этой главе я расскажу про некоторые из таких средств, и затем мы сможем использовать их далее для риггинга нашего персонажа. И первым инструментом, с которым я вас познакомлю, это один из самых важных инструментов, о которых вы должны узнать – это инструмент IK Handle. Я просто расскажу, что такое инверсная кинематика (Inverse Kinematics), как она работает и основы того как ее настроить.
Инверсная кинематика - один из двух способов управлять суставами скелета. Первый способ называется Forward Kinematics (прямая кинематика), и по сути это вращение. С помощью него вы поворачиваете и возвращаете суставы на место и это, вероятнее всего, наиболее естественный способ манипулярования, так как наши суставы как раз просто поворачиваются в различных направлениях, а также вокруг друг друга. То есть каждое движение нашего тела - это поворот какого-то сустава.
Инверсная кинематика основана на понятии Goal - цель, то есть места, куда должен повернуться сустав. Это позволяет нам указать конечную позицию сустава при повороте. Самый простой способ запомнить это – понять что, прямая кинематика основана на вращении сустава, а инверсная кинематика основана на позиции сустава, в которой он должен оказаться в пространстве, когда мы вращаем его.
Давайте я вам быстро покажу пример. У меня здесь две одинаковые цепочки суставов. Первая цепочка суставов не имеет обратной кинематики, поэтому управление ею происходит через Forward kinematics, а на нашей правой цепочке у нас установлен IK Handle, позволяющий управлять суставами с использованием Inverse Kinematics. Я перейду к окну проекции вид сбоку. И я немного приближу модель в окне проекции, чтобы лучше видеть.
Еще раз, Forward Kinematics - это поворот. Я хочу выбрать конец этой цепочки суставов и переместить вот этот сустав в центр координат. Я буду вращать все эти суставы вокруг одной точки. Давайте сразу начнем это делать. Я нажму клавишу E, чтобы включить инструмент Rotate, и как видите, когда мы начинаем его вращать, то довольно непросто достичь цели при помощи одних только поворотов. Так что я поверну этот сустав вот так, а этот так, а этот снова поверну немного назад, и возможно нужно опять повернуть этот. Я сейчас делаю все на глаз, и не делаю слишком аккуратно при расположении этих суставов, потому что вращение и положение суставов не слишком совпадают друг с другом.
Inverse kinematics делает этот процесс гораздо более простым. Если мы хотим точно куда-то переместить эту цепочку с инверсной кинематикой, все, что мне нужно сделать, щелкнуть по этому крестику внизу, он называется IK Handle1. Теперь я могу нажать W, чтобы перейти к инструменту Move, и просто переместить мой сустав в цель.
Вот так просто. Мауа автоматически поворачивает все суставы равномерно, чтобы достичь цели. Но если же я например выведу сустав за пределы этой цели, у нас появляются проблемы. Поэтому мы не можем достичь любой точки, какой хотим, но если выбирать точки поближе, все получится. Как вы могли заметить, эти два метода используются в различных ситуациях.
Обычно Forward Kinematics дает нам более естественное перемещение, так как оно основано на поворотах, что очень натурально выглядит в анимации персонажей. Но оба метода имеют место быть. Я показал вам, как это работает, теперь давайте я покажу вам, как быстро их настроить. Давайте создадим новую сцену File / New Scene и получим пустое пространство. И перейдем к окну проекции вид сбоку. Я выберу Skeleton / Joint tool.
Давайте сделаем очень простую цепь суставов, состоящую из двух костей. Я щелкаю левой кнопкой здесь и создам сустав. Я немного смещусь сюда относительно центральной оси, и создам еще один сустав здесь. Мы получили небольшой угол здесь, который укажет Inverse kinematics, в какую сторону мы хотим поворачивать сустав. Мы делали это раньше, в предыдущей главе, и теперь я покажу вам, зачем мы это делаем. Сейчас у нас есть цепочка суставов, поэтому давайте установим Inverse kinematics на эту цепь.
Мы можем перейти в Skeleton, IK handle tool, или можно использовать вот этот значок, они оба работают одинаково. Теперь нам нужно выбрать первый сустав, из которого будем делать IK цепочку, пусть он будет верхним. И теперь последний сустав, он будет нижним. У нас есть промежуточные суставы, но это важно, что я именно выбираю сразу последний.
И у нас появился IKHandle1. Мы можем выбрать его, нажать W, и как видите, мой сустав посередине сгибается в этом направлении. Если бы я сделал мою цепь прямой, IKHandle бы не сработал, так как не понял бы, в каком направлении сгибать сустав, поэтому мы и сделали тут небольшой изгиб. Давайте заглянем в Аутлайнер. Видите, вот наши суставы.
А IKHandle - это отдельный объект и он не находится на цепочке суставов. Поэтому мы можем перемещать его отдельно и менять положение суставов. Вот основы того, как работать с IK Handles и инверсной кинематикой в Мауа.
Поэтому нужно запомнить, что у нас есть два способа управлять суставами, прямая кинематика и инверсная кинематика, и каждый имеет свои преимущества .