Инверсионная кинематика
Чтобы освоить инверсную кинематику (Inverse Kinematics- IK), необходимо разобраться, что представляет собой прямая кинематика (Forward Kinematics - FK). В действительности все не так сложно. Прямая кинематика - это то, чем вы занимались до сих пор, перемещая объекты и создавая опорные кадры.По сути, инверсная кинематика - это один из вариантов нацеливания. По принципу инверсной кинематики создается анимация целевого объекта, в которой конец связанной цепочки (посредством связи типа «родитель-ребенок») всегда нацелен на него. Помните, ранее в этой главе была рассмотрена камера, направленная на нулевой объект? При перемещении объекта камера поворачивалась вслед за ним. Подобным образом действует и инверсная кинематика. Только вместо одного элемента на объект нацелена целая цепь связанных элементов. Настоящая инверсная кинематика начинается в тот момент, когда конец такой связки уже не может оставаться направленным на целевой объект, и остальные элементы цепочки начинают изменять свое положение, чтобы нацеливание вновь стало возможным.
Легче всего проиллюстрировать IK на каком-либо несложном примере. Возьмите карандаш и поднесите его к лицу. Теперь представьте, что карандаш - это целевой объект. Восстановите последовательность выполненных действий. Так, вы совершали движения рукой, чтобы поднести карандаш к лицу, при этом работали кисть, запястье и локоть. Все кости руки действовали подобно элементам, связанным в одну цепочку. Это и есть инверсная кинематика.
Создание цепочки инверсной кинематики
1. Из выпадающего меню View (Вид), расположенного в верхнем левом углу окна проекции, выберите пункт Right (ZY).
2. Чтобы получить доступ к новым инструментам, щелкните по кнопке Items.
3. Из выпадающего меню Add, расположенного на панели инструментов, вы берите пункты Object -> Add Null (Объект -> Добавить нулевой объект). В появившемся диалоговом окне введите его имя - IK-Chain.
4. Чтобы добавить в нулевой объект кость, из выпадающего меню Add (Добавить) выберите пункты Bones -> Add Bone (Кости ->Добавить кость) или нажмите клавишу = (Равно).
5. В появившемся диалоговом окне введите имя созданной кости (например, Upper-Arm) и нажмите клавишу Enter.
6. Чтобы добавить еще одну кость, нажмите клавишу = (Равно). Присвойте ей имя Lower-Arm.
7. Снова нажмите клавишу = (Равно). Эту кость назовите Hand. В результате должна получиться цепочка костей, изображенная на рис. 10.56.
8. Выполните шаг 3, но назовите объект Arm-Goal.
9. На панели инструментов щелкните по кнопке Move (Переместить) или нажмите клавишу Т. Переместите объект Arm-Goal в точку с координатой 4 т, расположенную на оси Z. Он будет находиться в конце цепочки (рис. 10.57).
10. Выделите объект Hand, щелкнув по нему в окне проекции (рис. 10.58).
11. Щелкните по кнопке Motion Options (Настройки движения) на панели управления или нажмите клавишу М. Откроется окно Motion Options.
12. Из выпадающего меню Goal Object (Целевой объект) выберите пункт Arm-Goal (рис. 10.59); Активируются все настройки движения инверсной кинематической цепочки, Layout нарисует синюю штриховую линию между объектом Arm-Goal и конечной точкой объекта Hand, а также сплошную синюю линию между объектами IK-Chain и Arm-Goal (рис. 10.60). Сплошная линия показывает, к какой цепочке относится целевой объект, а штриховая - направление от конца цепочки к целевому объекту.
13. В окне Motion Options (Настройки движения) отметьте галочкой опцию Full-Time IK (Постоянно просчитывать IK) - рис. 10.61.
14. Перейдите на вкладку Controllers and Limits (Контроллеры и ограничения) - рис. 10.62.
15. Из выпадающего меню Pitch Controller (Контроллер наклона) выберите пункт Inverse Kinematics (Инверсная кинематика) - рис. 10.63.
16. В окне проекции щелкните по объекту Lower-Arm. Окно Motion Options (Настройки движения) автоматически обновится, отразив настройки для данного объекта (рис. 10.64).
17. Выполните шаг 15 для объекта Lower-Arm.
18. В окне проекции щелкните по объекту Upper-Arm.
19. Выполните шаг 15 для объекта Upper-Arm, затем закройте окно Motion Options.
20. В окне проекции, щелкните по нулевому объекту Arm-Goal.
21. Щелкнув по зеленому маркеру, перемещайте объект Arm-Goal вверх-вниз по оси Y. Цепочка костей поворачивается таким образом, чтобы объект Hand всегда был направлен на целевой объект (рис. 10.65).
22. Переместите объект Arm-Goal в точку с координатой 500 mm, расположенную на оси Y.
23. Щелкните по синему маркеру и переместите Arm-Goal в точку с координатой 600 mm по оси Z. Чем ближе объект Arm-Goal находится к объекту IK-Chain, тем больше приходится поворачиваться объектам Upper-Arm и Lower-Arm, чтобы объект Hand по-прежнему указывал на целевой объект (рис. 10.66).
24. Из выпадающего меню File выберите пункты Save -> Save Scene (Сохранить -> Сохранить сцену) или нажмите клавишу S. Откроется диалоговое окно Save Scene.
25. Назовите сцену IK-Rig.lws и щелкните по кнопке ОК или нажмите клавишу Enter, чтобы сохранить ее в указанном файле. Не удаляйте файл, он пригодится для следующих упражнений.
Чем больше IK-цепочек включено в сцену, тем больше вычислений необходимо осуществлять. При включенной опции Full-Time IK Layout будет постоянно рассчитывать и обновлять IK-цепочки сцены, даже если они не задействованы в настоящий момент. Если вы заметите, что производительность системы снизилась, то отключите опцию Full-Tlme IK, чтобы Layout рассчитывал только ту инверсную кинематическую цепь, над которой вы работаете. Однако при этом можно вовремя не заметить возникновение нежелательных эффектов. Если это произойдет, следует немедленно активировать указанную опцию.
Удержание целевого объекта в зоне досягаемости
Вы познакомились с принципом действия IK-цепочек, теперь следует приступить к изучению их настроек. В этом разделе затронуты лишь основные опции инверсной кинематики, поскольку рассмотрение более глубоких вопросов и сложных методов применения IK выходят за рамки данной книги.При работе с несколькими 1К-цепочками можно очень легко запутаться во множестве целевых объектов, разбросанных по всему экрану. Синяя штриховая линия, несомненно, является хорошим индикатором связи цепочки с целевым объектом, однако даже по ней иногда нельзя определить, какой цепочке принадлежит объект.
Очистить рабочую область позволяет опция Keep Goal Within Reach (Удерживать объект в пределах досягаемости), расположенная в окне Motion Options (Настройки движения). Эта команда свяжет целевой объект с характерной точкой конечного объекта IK-цепочки и будет удерживать его там. Некоторые художники предпочитают использовать именно такой метод. При этом целевой объект превращается в что-то вроде анимационного маркера.
Использование опции Keep Goal Within Reach
1. Загрузите сцену IK-Rig.lws, созданную в предыдущем примере. 2. В окне проекции выделите кость Hand. 3. Перейдите на вкладку Items, затем на панели инструментов щелкните по кнопке Motion Options (Настройки движения) или нажмите клавишу М. Откроется окно Motion Options. 4. Отметьте галочкой опцию Keep Goal Within Reach и закройте окно Motion Options. Объект Arm-Goal будет связан с характерной точкой объекта Hand (рис. 10.67). 5. В окне проекции щелкните по объекту Arm-Goal. 6. Переместите объект в любое место окна проекции.
Не имеет значения, куда вы переместите мышь, объект Arm-Goal останется в характерной точке объекта Hand (рис. 10.68). Таким образом, работа с применением опции Keep Handle Within Reach более похожа на создание анимации IK-цепочки при помощи анимационного маркера.
Опция Match Goal Orientation
Вспомните пример инверсной кинематики, приведенный в начале главы. Вы берете в руки карандаш и подносите к лицу, чтобы хорошенько его рассмотреть. Но чтобы изучить карандаш, вы сначала развернули его. В Layout конечный элемент IK-цепочки может точно так же повторять угловое положение целевого объекта, для этого следует воспользоваться опцией Match Goal Orientation (Соответствие углового положения). Это очень полезная функция, она незаменима в таких случаях, как, например, анимация кисти персонажа, поднимающего какой-нибудь предмет, или оживление головы змеи, следящей за своей жертвой. Можно очень долго перечислять возможности ее применения, кроме того, эта функция позволяет сэкономить массу времени, поскольку значительно облегчает создание самой сложной анимации.Применение опции Match Goal Orientation
1. Загрузите сцену IK-Rig.lws в Layout.
2. В окне проекции щелкните по кости Hand.
3. Перейдите на вкладку Items (Элементы), затем на панели инструментов щелкните по кнопке Motion Options (Настройки движения) или нажмите клавишу М. Откроется окно Motion Options.
4. Отметьте галочкой опцию Match Goal Orientation (Соответствие углового положения) - рис. 10.69.
5. В окне проекции щелкните по объекту Arm-Goal.
6. Чтобы переместить объект Arm-Goal вниз по оси Y, щелкните по зеленому маркеру. Обратите внимание, что Hand не изменяет своей угловой ориентации при перемещении целевого объекта (рис. 10.70).
7. На панели инструментов щелкните по кнопке Rotate (Вращать) или нажмите клавишу Y.
8. Щелкните по зеленому маркеру и поверните объект Arm-Goal относительно оси Pitch. Теперь объект Hand отслеживает угловое положение целевого объекта (рис. 10.71).
Ограничения поворотов
Вы, вероятно, заметили, что чем ближе целевой объект к оси Y, тем сильнее изгибается рука, однако это выглядит не очень реалистично (если вы, конечно, не йог). В действительности суставы могут обеспечить лишь некоторый ограниченный угол поворота, при превышении которого рука ломается. Layout позволяет определить ограничения для каждой оси объекта, управляемого с помощью IK.Определение ограничений поворота
1. Загрузите сцену IK-Rig.lws в Layout.
2. В окне проекции щелкните по объекту Lower-Arm.
3. Перейдите на вкладку Items, затем на панели инструментов щелкните по кнопке Rotate (Вращать) или нажмите клавишу Y.
4. Щелкните по кнопке Motion Options (Настройки движения) или нажмите клавишу М. Откроется окно Motion Option.
5. Перейдите на вкладку Controllers and Limits (Контроллеры и ограничения), затем отметьте галочкой опцию Pitch Limits (Ограничения по оси Pitch), чтобы определить ограничение на поворот относительно оси Pitch (рис. 10.72).
6. В поле Min (Минимум) введите -150, в поле Мах (Максимум) укажите 4, что соответствует минимальному и максимальному углу поворота относительно оси Pitch. Зеленая окружность, обозначающая поворот (рис. 10.73), отражает введенные вами ограничения угла, а незатененная область - разрешенный поворот.
7. Если в окне проекции вы щелкните по объекту Upper-Arm, то окно Motion Options автоматически обновится.
8. Выполните шаг 5 для объекта Upper-Arm.
9. В поле Min введите -90, а в поле Мах укажите 100. Как только вы определили граничные значения угла поворота, в окне проекции Layout снова нарисует затененную окружность, соответствующую введенным ограничениям (рис. 10.74).
Ограничения на поворот можно задать не только для элементов инверсной кинематики, но и для любого другого элемента сцены.
10. В окне проекции щелкните по объекту Arm-Goal.
11. Щелкните по кнопке Move (Переместить), расположенной на панели инструментов, или нажмите клавишу Enter.
12. Перемещайте объект Arm- Goal по экрану. Попробуйте повернуть его на 180 градусов относительно объекта IK-Chain. Вы обнаружите, что не можете заставить объекты цепочки поворачиваться на углы, превышающие ограничение (рис. 10.75-10.76).
Ограничения на поворот можно задать не только для элементов инверсной кинематики, но и для любого другого элемента сцены.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий