3Ds max 5. Библия пользователя

         

Основы применения систем обратной кинематики



ГЛАВА 33. Основы применения систем обратной кинематики

Кинематика (kinematics) — это раздел механики, посвященный движению систем объектов. Если рассуждать логически, раздел обратной кинематики должен быть посвящен статическим системам объектов. Но это не совсем так. а точнее, совсем не так.

В 3ds max системы объектов определяются с помощью установки связей между объектами, которые входят в эти системы. После построения такой системы движение каждого дочернего объекта определяется перемещением родительского объекта с использованием кинематических формул.

В основу обратной кинематики положены те же принципы. Но расчеты движения всех объектов системы зависят от перемещения объекта, расположенного в самом конце цепочки обратной кинематики. Другими словами, вам нужно контролировать только самый последний объект иерархической цепи (например, палец или стопу). Таким образом, воспользовавшись принципами обратной кинематики, вы сможете анимировать систему объектов, перемещая объект, расположенный в самом конце цепочки обратной кинематики.



Интерактивная обратная кинематика



Интерактивная обратная кинематика

Интерактивный метод обратной кинематики (Interactive IK) позволяет позиционировать объекты связанной иерархии в различных кадрах. После этого программа интерполирует ключевые кадры между установленными ключами. Метод не отличается особой точностью, но для него требуется минимум ключей, что особенно удобно в случае с анимационными последовательностями со множеством кадров. Интерактивный метод обратной кинематики рассчитывает местоположение объектов между двумя различными ключами, в то время как прикладной метод обратной кинематики (Apply IK) интерполирует положение объектов для каждого ключа. Поскольку движения представляют собой элементарные интерполяции между двумя ключами, результаты иногда оказываются недостаточно точными, но само движение остается плавным.

Анимация созданной системы обратной кинематики с помощью интерактивного метода достаточно проста. Сначала активизируйте кнопку Auto Key и в разворачивающейся панели Inverse Kinematics вкладки Hierarchy щелкните на кнопке Interactive IK. Эта кнопка запускает режим интерактивной обратной кинематики, после чего система движется как единое целое. Установите положение системы для другого кадра. Программа автоматически интерполирует движение между двумя положениями и создаст анимационные ключи. Чтобы выйти из режима интерактивной обратной кинематики, достаточно еще раз щелкнуть на кнопке Interactive IK.

В разворачивающейся панели Inverse Kinematics находится еще несколько полезных параметров. При установке флажка Apply Only to Keys (Применять только к ключам) программа будет рассчитывать положение системы исключительно для тех кадров, в которых в настоящий момент находятся ключи. Флажок Update Viewports (Обновлять окна проекции) отображает прогресс анимации в окне проекции, а флажок Clear Keys (Очистить ключи) при вычислении решения обратной кинематики удалит все ранее созданные ключи. В полях Start (Начало) и End (Конец) указываются включаемые в расчет кадры.



Использование приоритетов



Использование приоритетов

Вам следует знать, что при расчете движения системы обратной кинематики существенное влияние на конечный результат оказывает порядок связывания точек соединения. Для настройки правильности этого порядка применяется значение поля Precedence (Приоритет), расположенного в разворачивающейся панели Object Parameters. Чтобы присвоить объекту какой-либо приоритет, выделите его и в поле Precedence введите нужное значение. Разумеется. 3ds max сначала рассчитывает параметры объектов с более высоким значением приоритета.

По умолчанию приоритет всех объектов принимается равным 0. Это означает, что, чем ниже по иерархии расположен объект, тем больше он движется. Помимо поля Precedence, разворачивающаяся панель Object Parameters включает две кнопки: Child->Parent (Дочерний объект-Родительский объект) и Parent->Child (Родительский объект-Дочерний объект), используемые для определения приоритетов. При щелчке на первой кнопке приоритет коренного объекта устанавливается равным 0, а приоритет каждого последующего уровня увеличивается на 10. Кнопка Parent->Child действует прямо противоположно: устанавливая приоритет 0 для коренного объекта, уменьшает приоритет каждого последующего уровня на 10.



Контроллер History-Dependent IK



Контроллер History-Dependent IK



Для того чтобы рассчитать решение, зависящее от истории контроллера обратной кинематики (HD Solver), учитываются предыдущие ключевые кадры анимационной последовательности. Контроллер позволяет добиться плавного движения, но при этом значительно увеличивается время, затрачиваемое на поиск решения. Контроллер HD Solver допускается присваивать скелетным системам. Для этого из списка IK Solver разворачивающейся панели IK Chain Assignment необходимо выбрать элемент History Depended (Зависимый от истории) или в главном меню программы выбрать команду Animation>IК Solvers>HD Solver.

Во вкладке Motion контроллер HD Solver отображен как обычный контроллер. Его параметры находятся в разворачивающейся панели IK Controller Parameters (Параметры контроллера обратной кинематики). Чтобы эта панель появилась во вкладке Motion, достаточно выделить один из контейнеров окончания. Именно с помощью контейнера окончания осуществляется управление всей системой обратной кинематики. Контейнер отображается в виде пересекающихся осей.

Для доступа к разворачивающейся панели IK Controller Parameters (рис. 33.9) достаточно перейти во вкладку Motion и выделить объект кости. Изменение любого параметра этой вкладки отражается на всех объектах костей текущей структуры. Значения полей Position и Rotation раздела Thresholds определяют, как близко должно находиться окончание к точке назначения, чтобы решение можно было считать правильным. В поле Iterations раздела Solution (Решение) определяется максимальное число итераций, выполняемых для получения правильного решения. Упомянутые поля аналогичны одноименным полям диалогового окна Preference Settings, однако применяются лишь к текущей связанной системе. В полях Start Time и End Time определяются соответственно начальные и конечные кадры последовательности для методов обратной кинематики.



Контроллер History-Independent IK



Контроллер History-Independent IK

Для расчета решения, не зависящего от истории контроллера обратной кинематики (HI IK), каждый ключевой кадр просчитывается отдельно. Анимировать связанные иерархии, к которым применен данный контроллер, можно за счет перемещения целевого объекта. В ключевом кадре контроллер вычисляет положение опорной точки последнего объекта связанной иерархии в соответствии с положением целевого объекта.

Применять контроллеры обратной кинематики допустимо к любой иерархии объектов. К скелетной системе такие контроллеры применяются автоматически при их создании. Для выбора контроллера обратной кинематики можно также воспользоваться командой Animation>IK Solvers.

При выборе контроллера с помощью команды Animation>IK Solvers в направлении от выделенного объекта появляется пунктирная линия. Перетащив эту линию в окне проекции и щелкнув на другом объекте, вы тем самым можете выбрать другой конечный элемент иерархии.

Начальная и замыкающая точки иерархии при этом соединяются белой линией. Опорная точка конечного элемента выступает целевым объектом для контроллера обратной кинематики. Целевой объект контроллера помечается голубым крестом. Одновременно во вкладке Motion появляется несколько новых разворачивающихся панелей с параметрами контроллера.

Первая из них — это разворачивающаяся панель IK Solver (Контроллер обратной кинематики), изображенная на рис. 33.6. Именно здесь выбирается тип контроллера: HIIKSolver (Зависимый от истории контроллер) или IKLimbSolver (Контроллер суставов). Для отключения контроллера достаточно деактивизировать кнопку Enabled (Активизировать). После отключения контроллера движения объекта воспроизводятся по принципу прямой кинематики. Чтобы вернуться к обратной кинематике, достаточно снова щелкнуть на кнопке Enabled. Флажок IK for FK Pose позволяет использовать системы обратной кинематики даже при отключенном контроллере. Таким образом, дизайнер получает возможность управлять иерархией объектов по принципам прямой кинематики, не отказываясь от обратной кинематики. Если флажок IK for FK Pose снят и кнопка Enabled деактивизирована, то перемещение целевого объекта никак не будет сказываться на иерархии.



Контроллер IK Limb Solver



Контроллер IK Limb Solver

Контроллер IK Limb Solver (Контроллер суставов) применяется для работы с конечностями (такими, как руки и ноги). Его применяют к системам, состоящим из трех костей, например бедро, голень и ступня. В реальности двигаться будут только два компонента системы. Целевой объект для трех суставов расположен в опорной точке третьей кости.

Первый сустав контроллер воспринимает как сферический, т.е. вращающийся в трех плоскостях подобно бедру или плечу. Второй сустав сгибается только в одном направлении аналогично локтевому или коленному суставу.

Разворачивающиеся панели и элементы управления контроллера IK Limb Solver аналогичны контроллеру HI Solver, который рассматривался выше в этой главе.



Контроллер Spline IK Solver



Контроллер Spline IK Solver

Контроллер IK Limb Solver удобен для работы с конечностями, которые посередине разделены суставом. Но для работы с конечным элементом костной системы, таким, как хвост, он никуда не годится. Хвосты сами по себе уникальны, поскольку достаточно широкое основание хвоста постепенно сходит на нет, превращаясь в точку. Для работы с такими "предметами" и предназначен контроллер Spline IK Solver (Контроллер сплайнов).

Контроллер Spline IK Solver впервые появился в пятой версии 3ds max.

Для работы с контроллером Spline IK Solver понадобится создать цепочку костей и сплайновый маршрут. Для перемещения цепочки костей к сплайну необходимо выбрать первую и последнюю кость, а затем сам сплайновый маршрут. В результате такого перемещения у каждой контрольной точки сплайна появится ассоциированный с ней объект Dummy. Перемещая объекты Dummy, вы сможете управлять положением каждой кости. Закручивание и вращение костей осуществляется с помощью пары манипуляторов, расположенных у каждого окончания сплайна.

Проще всего воспользоваться контроллером Spline IK Solver во время создания костной структуры, выбрав из списка IK Solver разворачивающейся панели IK Chain Assignment элемент SplineIKSolver. Как только работа над костной структурой будет завершена, появится диалоговое окно Spline IK Solver, показанное на рис. 33.12. (Это диалоговое окно появляется только в том случае, если установлен флажок Assign to Children — Прим. ред.) В этом диалоговом окне можно ввести имя цепочки обратной кинематики (поле IK Name), выбрать тип кривой (раздел Curve Туре) и указать количество узловых точек сплайна (поле Number of Spline Knots). В разделе Curve Type можно выбрать один из следующих типов кривой: Bezier (Безье), NURBS Point (Кривая NURBS (узловые точки лежат на кривой)) или NURBS CV (Кривая NURBS (узловые точки не обязательно лежат на кривой)). С помощью этого же диалогового окна можно создать вспомогательные объекты (флажок Create Helpers) и установить необходимые параметры отображения (раздел Display).



Копирование, вставка и зеркальное отражение точек соединения



Копирование, вставка и зеркальное отражение точек соединения

Определение параметров точек соединения — довольно сложная и обременительная работа, и мало кто захочет выполнять ее несколько раз. Именно поэтому в разворачивающейся панели Object Parameters находятся кнопки Сору (Копировать) и Paste (Вставить), которые используются для копирования параметров скользящих (Sliding Joints) и вращающихся (Rotational Joints) точек с одного соединения обратной кинематики на другое.

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



Методы обратной кинематики



Методы обратной кинематики

Прежде чем анимировать созданную цепочку связанной иерархии, необходимо применить к ней один из методов обратной кинематики. В 3ds max предусмотрено несколько методов обрат-нон кинематики для анимации связанной иерархии. Традиционные методы интерактивной и прикладной обратной кинематики теперь объединены в категории IK Solvers (Методы обратной кинематики). Чтобы применить один из этих методов, необходимо перейти во вкладку Hierarchy (Иерархия) или воспользоваться командой Animation>IK Solvers (Анимация>Методы обратной кинематики). Методы обратной кинематики можно применять непосредственно к системе костей.

Метод обратной кинематики — это специализированный контроллер, производящий вычисления решений обратной кинематики. Полученное решение автоматически генерирует необходимые для анимации ключи. В 3ds max 5 предлагается три метода обратной кинематики: History Dependent IK (Зависимый от истории контроллер). History-Independent IK (Независимый от истории контроллер), IK Limb (Контроллер суставов).



Определение ограничений точек соединения



Определение ограничений точек соединения

Следующий этап заключается в определении ограничений точек соединения, для чего используются разворачивающиеся панели Sliding Joints (Скользящие точки соединения) и Rotational Joints (Вращающиеся точки соединения). По умолчанию каждая точка соединения имеет шесть степеней свободы. Это означает, что два составляющих ее объекта могут перемещаться или вращаться вдоль любой оси — X, Y или Z. Они одинаковы для всех вращающихся или скользящих точек. Определяя ограничения точек соединения, вы тем самым можете ограничивать движения объектов, чтобы исключить "ненатуральные" движения, например сгибание руки в локте в разные стороны. Для ограничения движения вдоль какой-либо оси сначала выделите объект, опорная точка которого применяется в точке соединения, а затем в соответствующей разворачивающейся панели найдите раздел оси, движение вдоль которой необходимо ограничить. Снимите флажок Active (Активизировать), что приведет к блокировке движения вдоль данной оси. Чтобы ограничить такое движение, можно также установить флажок Limited (Ограничение).

При активизации параметра Limited объект может перемещаться только в пределах, определенных полями From (От) и То (До). Параметр Ease (Ослабление) замедляет движение объекта по мере приближения к границе. Параметр Spring Back (Отскок назад) используется для определения окончательной позиции, в которую возвращается объект по достижении границы. Параметр Spring Tension (Напряженность отскока) определяет значение силы, которую требуется применить к объекту, чтобы он сдвинулся с окончательной позиции. Значение поля Damping (Ослабление) определяет трение в точке соединения, т.е. силу, с которой объекты сопротивляются любому движению.

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



Определение угла шарнира



Определение угла шарнира

Разворачивающаяся панель IK Solver Properties включает параметр Swivel Angle (Угол шарнира). Так называемый угол шарнира определяет плоскость, включающую начальный и конечный элементы, и линию, которая их соединяет. Ключевой здесь является плоскость, поскольку направление движения конечных элементов определяет именно она.

Значение параметра Swivel Angle можно менять непосредственно во время анимации. С помощью кнопки Pick Target (Указать отправной объект) выбирают объект, который также управляет углом шарнира. Параметр Use (Использовать) активизирует или, напротив, отключает отправной объект. С помощью группы переключателей Parent Space (Родительское пространство) определяют, каким родительским объектом будет контролироваться плоскость: IK Goal (Целевой объект контроллера) или Start Joint (Начальный элемент иерархии). С помощью соответствующего переключателя выбирается один из родительских объектов, который и будет управлять плоскостью шарнира в случае, если к одной цепи обратной кинематики применены два и более контроллера обратной кинематики.

Значение поля Swivel Angle можно изменять и с помощью манипулятора. Чтобы увидеть манипулятор, щелкните на кнопке Select and Manipulate (Выделить и изменить) основной панели инструментов. Манипулятор — это зеленая линия, оканчивающаяся небольшим квадратом. Для изменения угла шарнира достаточно переместить манипулятор в окне проекции.

Чтобы лучше понять, что же представляет собой угол шарнира, обратимся к двум скелетным системам кукол (рис. 33.7). К правой руке каждой куклы применен контроллер HI Solver. При этом начальным элементом является плечо, а конечным — кисть руки. Угол шарнира левой системы костей равен 90°, правой — 180°. Для обеих систем костей отображаются манипуляторы. Манипулятор левой системы направлен вверх, правой — в противоположную сторону от головы куклы. Обратите внимание на то, что направление локтевого сустава определяется углом шарнира. Локтевой сустав левой системы костей направлен вверх от позвоночника. Локтевой сустав правой системы выступает вперед в направлении манипулятора.



Параметры обратной кинематики



Параметры обратной кинематики

Точность методов обратной кинематики зависит от значений параметров вкладки Inverse Kinematics (Обратная кинематика) диалогового окна Preference Settings (рис. 33.3). Диалоговое окно открывается с помощью команды Customize>Preferences (Настройка>Параметры). Для методов интерактивной и прикладной обратной кинематики в разделе Thresholds (Пороговые значения) устанавливают значения полей Position (Местоположение) и Rotation (Вращение). Пороговые значения определяют, насколько близко объект должен находиться к заданному положению, чтобы решение признавалось удовлетворяющим условию.



Построение и связывание системы



Построение и связывание системы

Первым шагом к созданию системы обратной кинематики является построение и связывание нескольких объектов. Такие связи устанавливают с помощью уже знакомой вам кнопки Link (Связь) основной панели инструментов.

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

Созданию связанных систем посвящена глава 8, "Группирование и установка связей между объектами". О перемещении опорных точек можно узнать из главы 9, "Трансформация объектов".

Создав связанную систему и соответствующим образом разместив опорные точки, откройте вкладку Hierarchy (Иерархия) и щелкните на кнопке IK. Появится несколько разворачивающихся панелей, используемых для управления системой обратной кинематики, в том числе и разворачивающаяся панель Object Parameters (Параметры объекта), показанная на рис. 33.1.



Прикладная обратная кинематика



Прикладная обратная кинематика

Методы прикладной обратной кинематики распространяются сразу на ряд кадров, при этом ключи вычисляются для каждого кадра в отдельности. Для выполнения задачи система обратной кинематики связывается с объектом следования. Этот метод точнее метода интерактивной обратной кинематики, но недостатком является большее число ключей. Ключи устанавливаются для каждого объекта и для каждой трансформации. Следовательно, итоговое решение предполагает наличие достаточного числа ключей, которые, в свою очередь, увеличивают размер и сложность сцены. Каждому кадру свойственен свой набор ключей, в результате движение получается резким и неравномерным.

Для такой анимации системы необходимо связать одну или две ее части с объектом следования, которым может быть Dummy или любой другой объект сцены. Такая связь устанавливается с помощью щелчка на кнопке Bind разворачивающейся панели Object Parameters вкладки Hierarchy и последующего выделения объекта. Как только выбран объект следования, выделите какой-либо объект системы. Активизируйте вкладку Hierarchy и щелкните на кнопке Apply IK (Применить обратную кинематику) разворачивающейся панели Inverse Kinematics. Программа рассчитает ключи анимации для всех кадров, находящихся между начальным (определенным в поле Start) и конечным (определенным в поле End) кадрами последовательности.

Если планируется использовать прикладной метод обратной кинематики, введите минимальные значения в полях группы Threshold вкладки Inverse Kinematics диалогового окна Preference Setting. Только в этом случае вы сможете получить более точные результаты вычислений.



Прямая и обратная кинематика



Прямая и обратная кинематика

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

Связывание объектов и создание кинематических цепей обсуждались в главе 8, "Группирование и установка связей между объектами".

Согласно правилам прямой кинематики {forward kinematics), объекты нижней части связанной структуры двигаются вместе со своими родителями. Представьте себе, например, связанную структуру руки человека, в которой плечо соединяется с предплечьем, а предплечье с кистью и с пальцами. При прямой кинематике движение плеча сопровождается соответствующим перемещением предплечья, кисти и пальцев.

Движение дочерних объектов вслед за родительскими вполне объяснимо и зачастую устраивает разработчиков трехмерной графики. Однако иногда возникает необходимость задать движение не плеча, а кисти. Для этого применяется обратная кинематика {Inverse Kinematics — IK), которая позволяет дочерним объектам управлять движением родительских. Благодаря ей вы можете быть уверены, что перемещение кисти приведет в движение всю часть связанной структуры руки человека.

Под обратной кинематикой в 3ds max понимается трансформация элементарных связанных иерархий. Каждый раз, когда связанную иерархию перемещают, поворачивают или масштабируют, дочерние объекты следуют за родительскими. В то же время дочерние объекты можно изменять независимо от родительских.



Обратная кинематика представляет собой уникальную



Резюме

Обратная кинематика представляет собой уникальную возможность для управления иерархическими структурами и их анимации с помощью трансформации дочерних объектов. В этой главе рассматривались:
базовые концепции теории обратной кинематики; разница между интерактивным и прикладными методами обратной кинематики; построение и анимирование системы обратной кинематики; параметры обратной кинематики, настраиваемые с помощью диалогового окна Preference Settings; использование контроллеров обратной кинематики. Обратная кинематика представляет собой эффективное средство анимации, которое нам предстоит освоить на практике. В следующей главе освещен заключительный этап создания изображений и рассмотрены основы визуализации.

Объекты этой сцены...



Рис. 33.2. Объекты этой сцены являются частью системы обратной кинематики

Рис. 33.1. В этих разворачивающихся панелях расположены элементы управления системой обратной кинематики



Вкладка Inverse Kinematics...



Рис. 33.3. Вкладка Inverse Kinematics диалогового окна Preference Settings используется для определения глобальных пороговых значений

Поскольку прикладной метод обратной кинематики более точен, лучше установить меньшие, чем для интерактивного метода, пороговые значения.

В этой же вкладке можно установить ограничения на итерации для обоих методов. Значение поля Iterations (Итерации) определяет максимальное число повторений вычисления. С его помощью можно уменьшить время, которое программа затрачивает на поиск правильного решения. Кроме того, этот же параметр оказывает влияние на скорость и точность процесса обратной кинематики.

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

Параметр Use Secondary Threshold (Использовать вторичное пороговое значение) обеспечивает резервный метод, определяющий, следует ли программе 3ds max продолжать поиск правильного решения. Этот резервный метод рекомендуется применять в том случае, если вы хотите, чтобы программа приняла сложное решение, а не продолжала поиск правильного решения. Если пороговые значения очень малы, этот флажок следует установить.

Параметр Always transform children of the world (Всегда трансформировать глобальные дочерние объекты) позволяет переносить корневой объект при его непосредственном выделении. Этот объект впоследствии остается неподвижным при перемещении какого-либо дочернего объекта.



Пропеллер вращается...



Рис. 33.4. Пропеллер вращается за счет поворота рукоятки и примененной системы обратной кинематики



Воспользовавшись кнопкой...



Рис. 33.5. Воспользовавшись кнопкой Apply IK, довольно просто создать огромное количество ключей анимационной последовательности



Разворачивающаяся панель...



Рис. 33.6. Разворачивающаяся панель IK Solver позволяет отключить или, наоборот, активизировать контроллер обратной кинематики

Если целевой объект переместился от конечного элемента цепи, щелчок на кнопке IK/FK Snap автоматически вернет его на прежние позиции. Установленный флажок Auto Snap (Автопривязка) сохранит связь целевого объекта и конечного звена иерархии. Щелчок на кнопке Set as Preferred Angles сохраняет углы системы обратной кинематики. Для восстановления значений углов обратной кинематики достаточно в любой момент щелкнуть на кнопке Assume Preferred Angles.

При выборе команды Animation>IK Solvers>HI Solver (Анимация>Контроллеры обратной кинематики>Контроллер, независимый от истории) выделенный объект становится

первым элементом иерархии. Элемент, на который вы перетащите пунктирную линию, становится замыкающим. Изменить такое положение вещей можно, щелкнув на одной из кнопок Pick Start Joint (Выбрать начальный элемент) или Pick End Joint (Выбрать конечный элемент).

Чтобы с помощью кнопок Pick Start Joint и Pick End Joint быстро выбрать нужный объект, откройте диалоговое окно Select Objects (Выбрать объекты), нажав клавишу <Н>. В этом окне выбрать объект значительно проще, чем в перегруженном окне проекции.

Если в качестве начального выбран дочерний объект, а в качестве конечного — объект, находящийся выше по иерархии, перемещение целевого объекта никак не скажется на цепи обратной кинематики.



С помощью параметра...



Рис. 33.7. С помощью параметра Swivel Angle определяют плоскость, в которой должны перемещаться конечные элементы контроллера обратной кинематики

Панель IK Solver Properties включает также раздел Threshold (Пороговые значения). Параметры данного раздела определяют, насколько близко должен находиться конечный элемент к целевому объекту, чтобы решение считалось приемлемым. В частности, в группе Threshold находятся параметры Position (Местоположение) и Rotation (Вращение). Параметр Iterations устанавливает максимальное число итераций для получения приемлемого решения.

Чем больше значение параметра Iterations, тем более плавным будет итоговый результат, но при этом возрастет время, необходимое для поиска оптимального решения.

Разворачивающаяся панель IK Display Options (Параметры отображения контроллера обратной кинематики) позволяет управлять контейнерами, используемыми во время работы с контроллерами обратной кинематики. С помощью флажков этой разворачивающейся панели можно активизировать такие параметры, как End Effector (Окончание), Goal (Целевой объект). Swivel Angle Manipulator (Манипулятор угла шарнира), IK Solver (Контроллер обратной кинематики). Последний представляет собой линию, соединяющую начальный и конечный элементы.



Анимация объекта становится...



Рис. 33.8. Анимация объекта становится проще, когда перемещается целевой объект для каждой из систем обратной кинематики



В разворачивающейся...



Рис. 33.9. В разворачивающейся панели IK Controller Parameters устанавливаются граничные значения текущего метода обратной кинематики

Установка флажка Show Initial State (Отображать исходное состояние) приводит к отображению исходного состояния связи и позволяет перемещать ее с помощью перетаскивания объекта-окончания. Параметр Lock Initial State (Заблокировать исходное состояние) исключает перемещение каких-либо объектов связи, кроме объекта-окончания.

В разделе Update (Обновлять) можно установить один из переключателей: Precise (Точно), Fast (Быстро) или Manual (Вручную). При активизации первого переключателя метод обратной кинематики пересчитывается для всех кадров, при активизации второго — только для текущего. Если же установить переключатель Manual, то обновление выполняется только после щелчка на кнопке Update. Используя переключатели раздела Display Joints (Отображать точки соединения), можно отображать точки всегда (Always) или только при выделении (When Selected).

Во время создания системы костей объектом-окончанием автоматически становится последняя точка соединения. Параметры раздела End Effectors (Окончания), расположенного

внизу разворачивающейся панели IK Controller Parameters, позволяют любую точку-окончание сделать позиционной или вращательной. Чтобы сделать объект кости окончанием, выделите его и щелкните на кнопке Create. Если же объект уже является окончанием, активизируется кнопка Delete. Кроме того, можно связать кость с другим родительским объектом за пределами текущей системы, для чего используется кнопка Link. В этом случае связанный объект будет наследовать трансформации своего нового родителя.

Щелчок на кнопке Delete раздела Remove IK приводит к удалению точки соединения. Если при этом кость определена как окончание, кнопки Position и Rotation будут отображать параметры Key Info (Ключевая информация) для выделенной кости.



Подзорной трубой управляет контроллер HD Solver



Рис. 33.10. Подзорной трубой управляет контроллер HD Solver



Воспользовавшись контроллером...



Рис. 33.11. Воспользовавшись контроллером IK Limb, вы сможете управлять движениями конечностей, т.е. ногами и руками



В диалоговом окне...



Рис. 33.12. В диалоговом окне Spline IK Solver устанавливают параметры сплайновой цепочки обратной кинематики

Контроллер Spline IK Solver можно применить и к уже готовой костной структуре. Для этого в сцене необходимо создать сплайновую кривую, в соответствии с которой будет расположена цепочка костей. Затем выбрать первую кость цепочки и в главном меню программы выбрать команду Animation>IK Solvers>SplinelK Solver. В окне проекции появится пунктирная линия, связывающая выбранную кость и указатель мыши. Переместите пунктирную линию к последней кости (которая будет использована в этом методе обратной кинематики) и щелкните мышью. Затем переместите пунктирную линию к сплайну и щелкните мышью еще раз.

Таким образом, костная структура будет расположена вдоль сплайнового пути. У каждой вершины сплайнового пути появится по одному вспомогательному объекту. С их помощью вы сможете изменить форму кривой.



Контроллер Spline...



Рис. 33.13. Контроллер Spline IK Solver идеален для создания змей и хвостов



Создание системы обратной кинематики



Создание системы обратной кинематики

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



Связывание объектов



Связывание объектов

При использовании прикладной обратной кинематики обязательно нужно присоединить объект к системе обратной кинематики, чтобы обеспечить их совместное перемещение. Точка соединения системы обратной кинематики, которая примыкает к объекту, в дальнейшем следует за этим объектом по всей сцене. Элементы управления, применяемые к соединению, размещаются во вкладке Hierarchy уже знакомой вам разворачивающейся панели Object Parameters. Чтобы присоединить какой-либо объект к объекту следования, щелкните на кнопке Bind (Связать) раздела Bind to Follow Object (Связать с объектом следования) и выделите этот объект.

Помимо связывания с объектом следования, точки соединения системы обратной кинематики могут также посредством определения позиции и ориентации соединяться с глобальным объектом вдоль любой оси. В этом случае объект оказывается заблокированным на своей текущей позиции, поэтому не перемещается и не вращается вдоль выделенной оси. Можно также определить значение веса (Weight). Если при расчете движения системы выяснится, что два связанных объекта должны перемещаться в противоположных направлениях, приоритет будет иметь объект с большим значением веса.

Щелчок на кнопке Unbind (Удалить связь) приводит к разрушению связи.



анимация куклы посредством контроллера HI Solver



Упражнение: анимация куклы посредством контроллера HI Solver

В каком-то смысле контроллер HI Solver является оптимальным решением для анимации персонажей. В одном из упражнений главы 31 с помощью системы костей мы создавали небольшую куклу. Теперь можно поэкспериментировать с контроллером типа HI Solver. Чтобы с помощью контроллера HI Solver анимировать куклу, выполните ряд действий.

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 33 . zip, распакуйте его и откройте файл Dancing puppet .max. Это тот самый файл, на основе которого мы создавали скелетную систему. Примените к руке куклы контроллер HI Solver. Для этого выделите левое плечо и выберите команду Animation>IK Solvers>Hi Solver. В окне проекции от выделенного объекта протянется пунктирная линия. Переместите курсор на кисть левой руки и щелкните мышью. Повторите действия, описанные в п. 2, для правой руки и обеих ног. Щелкните на кнопке Auto Key, перетащите бегунок Time Slider на кадр 20. Выберите целевой объект для цепочки обратной кинематики левой ноги и щелкните на кнопке Select and Move (<W>) основной панели инструментов. Затем переместите вверх целевой объект левой ноги. Повторите указанные в п. 4 действия для кадров 40, 60, 80, 100, перемещая системы обратной кинематики в различных направлениях. Переместите бегунок Time Slider на кадр 50. С помощью команды Edit>Select All (или комбинации клавиш <Ctrl+A>) выделите все объекты. Переместите их на некоторое расстояние вверх. Перетащите бегунок Time Slider на кадр 100 (или нажмите клавишу <End>), а объекты опять верните вниз, на прежнее место. Щелкнув на кнопке Play Animation (или нажав клавишу </>). просмотрите получившийся танец.

На рис. 33.8 показан один из кадров анимации танцующей куклы.



анимация ноги фламинго...



Упражнение: анимация ноги фламинго с помощью контроллера IK Limb Solver

Чтобы лучше представлять себе работу контроллера IK Limb Solver, неплохо было бы для начала анимировать какую-нибудь конечность, например ногу модели фламинго (правда. в этом случае сустав будет сгибаться в другую сторону). Такая модель разработана и любезно предоставлена компанией Viewpoints Datalabs. В приведенном ниже примере нам предстоит работать с файлом из главы 31, где мы применяли к ноге фламинго модификатор Skin.

Чтобы с помощью контроллера IK Limb Solver анимировать ногу фламинго, выполните следующее.

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 33 . zip, распакуйте его и откройте файл Flamingo leg.max. В файле находится модель фламинго, разработанная компанией Viewpoints Datalabs. Файл представляет собой результат наших действий, полученных в упражнении главы 31, "Работа с костями и оболочками". Щелкните на кнопке Select by Name (Выбрать по имени) основной панели инструментов (или нажмите клавишу <Н>), чтобы открыть диалоговое окно Select Objects (Выбор объектов). Дважды щелкните на объекте Вопе02, выделив верхнюю кость ноги. Не снимая выделения с верхней части ноги, выберите команду Animation> IK Solvers>IK Limb Solver. В окне проекции появится пунктирная линия. Снова нажмите клавишу <Н>. открыв диалоговое окно Pick Object. Двойным щелчком выделите объект Вопе04. Это кость ступни, замыкающая иерархию конечности. Не снимая выделения с объекта IK Chain01, щелкните на кнопке Auto Key и перетащите бегунок Time Slider на кадр 100 (<End>). С помощью кнопки Select and Move (<W>) переместите систему обратной кинематики в окне проекции. Движение третьей кости приведет к тому, что система согнется.

На рис. 33.11 показано, как контроллер IK Limb Solver управляет движением ноги фламинго.



анимация подзорной...



Упражнение: анимация подзорной трубы с помощью контроллера HD Solver

Раскладывающаяся подзорная труба является хорошим примером кинематической системы, на примере которой рассмотрим работу зависящего от истории контроллера обратной кинематики (HD Solver). Рабочая модель для этого примера не представляет собой ничего сложного, поскольку состоит из нескольких цилиндров разного диаметра.

Для анимации подзорной трубы с использованием контроллера HD Solver выполните ряд действий.

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 33 . zip, распакуйте его и откройте файл Spyglass .max. В файле находится созданная на основе примитивов подзорная труба. Части подзорной трубы последовательно связаны от наименьшей к самой большой. Последняя часть подзорной трубы связана с объектом Dummy. Определим параметры конечных точек. Выделив фрагмент трубы наибольшего диаметра, откройте вкладку Hierarchy и щелкните на кнопке IK. В разворачивающейся панели Object Parameters установите флажки Terminator, Bind Position. Bind Orientation, чтобы предотвратить смещение конечной точки. Не снимая выделения с фрагмента трубы наибольшего диаметра, установите флажок Active группы ZAxis разворачивающейся панели Sliding Joints. Затем снимите все флажки Active в разворачивающейся панели Rotational Joints. После этого щелкните на кнопке Сору в разделах Sliding Joints и Rotational Joints разворачивающейся панели Object Properties. Поочередно выделите каждый из оставшихся элементов трубы, после чего щелкните на кнопке Paste (Вставить) в разделах Sliding Joints и Rotational Joints. Таким образом вы активизируете скользящее движение вдоль оси Z для составляющих трубу секций. Снова выделите фрагмент трубы наибольшего диаметра и выберите команду Animation> IK Solvers>HD Solver. Переместите пунктирную линию к объекту Dummy на конце трубы и щелкните мышью. Выделите второй элемент трубы. В разделе ZAxis разворачивающейся панели Sliding Joints установите флажок Limited (Ограничение). Затем в полях From и То введите соответственно значения 0,0 и -80,0. Щелкните на кнопке Сору раздела Sliding Joints разворачивающейся панели Object Parameters. Последовательно выделяя элементы трубы с 3 по 6, щелкайте на кнопке Paste раздела Sliding Joints, чтобы применить те же ограничения к остальным элементам трубы. Щелкнув на кнопке Auto Key (<N>), перетащите бегунок Time Slider на кадр 100 (или нажмите клавишу <End>). Щелкните на кнопке Select and Move (<W>) основной панели инструментов и перетащите объект Dummy от элемента трубы наибольшего диаметра.

На рис. 33.10 представлен конечный фрагмент трубы, полученный в процессе раскладывания.



анимация связанной...



Упражнение: анимация связанной системы манипулятора с помощью прикладного метода обратной кинематики

Построив связанную систему манипулятора, попытаемся ее анимировать. В предложенном ниже примере анимируем эту систему с помощью прикладного метода.

Для анимации системы обратной кинематики с помощью прикладного метода выполните следующее.

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 33 . zip, распакуйте его и откройте файл Animated IK trick spider .max. Это тот же файл, с которым вы работали в одном из упражнений этой главы. Откройте вкладку Create, щелкните на кнопке категории Helper (Вспомогательные объекты), а затем на кнопке Dummy. В окне проекции Left перетащите указатель мыши вокруг паука, чтобы создать объект Dummy. Созданный таким образом объект Dummy будет играть роль объекта следования. Щелкните на кнопке Auto Key, перетащите бегунок Time Slider на кадр 100 и в окне проекции Left переместите объект Dummy влево. Выделите паука, активизируйте вкладку Hierarchy, щелкните на кнопке Bind разворачивающейся панели Object Parameters и выделите модель паука. Щелкните на кнопке Apply IK разворачивающейся панели Inverse Kinematics, запустив вычисления метода обратной кинематики. В результате будут созданы ключи для каждого кадра анимационной последовательности. Щелкните на кнопке Play Animation (или нажмите клавишу </>) для просмотра движения системы из одной позиции в другую.

На рис. 33.5 показано положение паука в кадре 100. Как и ожидалось, перемещение паука привело в движение всю систему сразу.



анимация винтовой системы



Упражнение: анимация винтовой системы

Машины представляют собой отличные примеры систем кинематики, поэтому попытаемся создать простую моторно-винтовую систему с использованием интерактивного метода обратной кинематики.

Для построения системы обратной кинематики с моделью винтового механизма выполните ряд действий.

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 3 3 . zip, распакуйте его и откройте файл Gear and prop. max. В файле содержится элементарная система из рукоятки с винтом. Прежде всего нужно связать объекты модели. Щелкните на кнопке Link основной панели инструментов и начинайте перетаскивать указатель мыши от дочерних объектов к родительским. Соедините таким образом винт с осью, ось с шестеренкой, а шестеренку с рукояткой. Щелкните на кнопке IK вкладки Hierarchy. Выделите объект рукоятки, чтобы ограничить его движение. Снимите все флажки Active разделов разворачивающейся панели Sliding Joints. В панели Rotational Joints также снимите все флажки Active, оставив флажок только в разделе Z-Axis. Настроив параметры ограничения для объекта рукоятки, щелкните на обеих кнопках Сору разворачивающейся панели Object Parameters, выделите шестеренку и щелкните на обеих кнопках Paste. Аналогичным образом выделите объект оси. вновь щелкните на кнопках Paste и еще раз повторите этот процесс для винта. Активизируйте кнопку Auto Key (<N>), перетащите бегунок Time Slider на кадр 100 (или нажмите клавишу <End>) и щелкните на кнопке Interactive IK разворачивающейся панели Inverse Kinematics вкладки Hierarchy. Щелкните на кнопке Select and Rotate (Выделить и повернуть) (горячая клавиша <Е>) и в окне проекции Left перетащите курсор таким образом, чтобы рукоятка повернулась вокруг оси Z.

Окончательный вид винтовой системы показан на рис. 33.4.



построение связей модели манипулятора



Упражнение: построение связей модели манипулятора

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

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

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 33.zip, распакуйте его и откройте файл Extensible arm with spider.max. В файле находятся модель паука на конце нити и несколько распорок. Опорные точки объектов уже перемещены. Модель паука разработана компанией Zygote Media. Щелкните на кнопке Select and Link (Выделить и связать) основной панели инструментов. Свяжите паука с нитью. Для этого выделите паука и переместите курсор от паука к цилиндру. Паук станет дочерним объектом по отношению к цилиндру. Свяжите цилиндр с последней распоркой и повторите эту операцию со всеми распорками вплоть до первой. После установки связи нужно определить ограничения точек соединения системы. Для этого щелкните на кнопке IK вкладки Hierarchy. Выделите первую распорку (Rectangle01) и в разворачивающейся панели Object Parameters установите флажки Terminator. Bind Position (Позиция связи) и Bind Orientation (Ориентация связи). Эти установки запрещают движение первой распорки в любом направлении. В разворачивающихся панелях Sliding Joints и Rotational Joints снимите флажки Active для всех осей, кроме оси Z панели Rotational. Затем последовательно щелкните на обеих кнопках Сору разворачивающейся панели Object Parameters. После этого по очереди выделите остальные распорки и щелкните на обеих кнопках Paste. Это приведет к переносу параметров ограничений с первой распорки на остальные. Выделив объект цилиндра, установите флажок Active во всех разделах разворачивающейся панели Rotational Joints. Для проверки правильности настройки системы щелкните на кнопке Interactive IK разворачивающейся панели Inverse Kinematics и немного переместите модель паука. Перемещение паука приведет в движение все распорки.

Связанная система, двигающаяся при переносе паука вниз, представлена на рис. 33.2. Обратите внимание на то, что первая распорка не перемещается и не вращается вместе с системой. Остальные распорки поворачиваются лишь вдоль оси Z, в то время как перемещение паука ограничено только нитью. Если отключить режим интерактивной обратной кинематики (Interactive IK), вы сможете перемещать и вращать объект, используя при этом только созданные связи.



создание змеи с помощью...



Упражнение: создание змеи с помощью контроллера Spline IK Solver

Контроллер Spline IK Solver идеален для создания извилистых и длинных объектов, например змей. В этом упражнении с помощью контроллера Spline IK Solver мы разместим ранее созданную костную структуру вдоль сплайнового пути. Для этого выполните ряд действий.

В папке Chapter Example Files на прилагаемом компакт-диске найдите файл Chap 33 . zip, распакуйте его и откройте файл Spline IK snake.max. В файле находится сплайн и простая цепочка костей. Выберите первую кость цепочки (bone01) и в главном меню программы выберите команду Animation>IK Solvers>SplinelK Solver. В окне проекции появится пунктирная линия, связывающая выбранную кость и указатель мыши. Переместите указатель мыши на последнюю кость цепочки и щелкните мышью. Затем переместите указатель мыши на сплайн и щелкните мышью еще раз. Костная структура будет расположена вдоль сплайнового пути.

На рис. 33.13 показан результат проделанных действий. Чтобы закончить и анимировать модель змеи, достаточно создать кожу, приемлемую для данной костной структуры.



Выбор ограничителя



Выбор ограничителя

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

Ограничитель (terminator) — это последний объект системы обратной кинематики, который подвергается влиянию при движении дочернего объекта. Если в качестве ограничителя выбрать плечо, движение пальца никак не отразится на остальных расположенных выше него частях.

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

В режиме интерактивной обратной кинематики можно также установить флажок Auto Termination (Автоограннченне) разворачивающейся панели Auto Termination. Значение поля # Of Links up (Количество верхних связей) этой же панели определяет число связей выше текущего выделения.