div.main {margin-left: 20pt; margin-right: 20pt}
Table of Contents
ГЛАВА 18
Построение и анимация иерархий
Использование иерархий объектов
Родительские, дочерние и корневые объекты
Иерархии и мир
Просмотр дерева иерархии
Связывание объектов
Установка наследования связей
Отображение связей
Как избежать в иерархиях неоднородного масштабирования
Работа с точками вращения
Настройка точек вращения
Выравнивание точек вращения
Выравнивание точек вращения посредством команды Align
Настройка трансформаций
Сброс трансформаций
Сброс трансформаций посредством утилиты Reset Transform
Установка блокировок трансформаций объекта
Использование фиктивных объектов
Связанная атомарная структура
Использование инверсной кинематики
Системы координат
Ситуации, которых следует избегать при использовании IK
Определение IK-суставов
Установка Joint Parameters
Активизация суставов
Ограниченные суставы
Снижение и затухание суставов
Копирование и вставка суставов
Установка параметров суставов для корневых объектов
Приоритет суставов
Определение кинематической цепи
Анимация при помощи инверсной кинематики
Использование Interactive IK
Использование Applied IK
Связывание с позицией объекта
Связывание с ориентацией объекта
Применение IK-решений
ГЛАВА 18
Построение и анимация иерархий
Многие объекты, которые будут строиться и оживляться в 3D Studio MAX, состоят из множества частей. Взгляните на окружающие вас объекты реального мира. Очень немногие из них состоят только из одной части. Кроме того, составляющие части многих объектов реального мира удерживаются вместе за счет подвижных соединений или связей. Примером таких объектов служит подвижный лоток CD-проигрывателя, шарнирные двери машины и суставчатые конечности вашего тела.
В 3DS МАХ эти сочленения и связи эмулируются путем построения связанных иерархий объектов. Построив иерархию, можно выполнить ее анимацию, комбинируя технологии прямой и инверсной кинематики. В данной главе обсуждается построение и анимация иерархий объектов. Кроме того, детально рассматриваются следующие темы:
Связывание объектов для построения иерархий
Управление поведением связей посредством настройки точек вращения
Использование фиктивных объектов
Анимация иерархий при помощи Forward Kinematics
Применение Inverse Kinematics (IK)
Определение суставов I К
Анимация при помощи Inverse Kinematics
Следующие несколько разделов описывают, что такое иерархии объектов и как начать их построение.
Использование иерархий объектов
Иерархия объектов строится для установки отношения, в котором единственный родительский объект связан с одним или несколькими дочерними. Трансформации Move, Rotate и Scale передаются между родителем и его детьми. Связывание родительских объектов в качестве дочерних с другими объектами предоставляет возможность быстро строить сложные многоуровневые иерархические структуры. Подобные структуры эмулируют сложные суставчатые структуры, характерные для объектов реального мира.
Процесс создания связанных иерархий выполняется следующим образом:
Выберите объекты для связи в качестве дочерних с другим объектом.
Нажмите Link на линейке инструментов и транспортируйте мышь от выделенных объектов к единственному родительскому объекту.
Повторяйте шаги 1 и 2 до тех пор, пока не свяжете все объекты желаемой иерархии.
Настройте положение и ориентацию точек вращения связанных объектов.
Задайте наследование связей.
Определите параметры сочленений, если планируется использование Inverse Kinematics.
Построение связанных иерархий представляет собой очень мощную технологию, которая в случае корректного применения сохраняет значительное время и усилия. Связывание объектов выполняет две важные функции:
Моделирует реальный мир, связывая объекты в определенный вид суставчатой сборки. Хорошим примером может служить машина или человеческая фигура. При передвижении верхней части руки человека необходимо, чтобы вместе с ней двигались и нижняя часть, ладонь и пальцы. Перемещение во время анимации всех этих частей вручную практически невозможно. О том, чтобы все это работало, заботится связывание.
Оказывает помощь в определении сложного движения. Вообразите, что требуется выполнить анимацию кирпича, кувыркающегося по склону. Перемещать и поворачивать кирпич вручную очень сложно. Используйте связи и привяжите кирпич к невидимому фиктивному объекту. После этого появится возможность вращать кирпич и тянуть его по склону, двигая фиктивный объект. Фиктивные объекты являются ключами к решению многих сложных движений.
Управляющие элементы для создания и манипулирования иерархическими связями находятся на панели Hierarchy и в двух кнопках на линейке инструментов (см. рис. 18.1). Кнопки линейки инструментов используются для создания иди разрыва связей между объектами. Управляющие элементы из панели Hierarchy применяются для настройки связей и определения их параметров.
Родительские, дочерние и корневые объекты
Любой объект, с которым связан другой объект, является родительским. Родитель может иметь любое количество связанных с ним других объектов и эти объекты носят название его дочерних объектов. Дочерние объекты в свою очередь могут иметь детей. Все объекты, которые через какое-то количество связей соединены с родительским объектом, называются потомками родителя.
Родительские объекты могут связываться как дочерние с другим родительским объектом. Любая трансляция, оказывающая влияние на родителя, влияет также на потомков, расположенных в иерархии ниже родителя.
Дочерний объект является одним из любого числа объектов, связанных с родителем. Хотя родитель может иметь любое количество детей, но ребенок может иметь только одного родителя. При попытке связи объекта-ребенка о вторым родителем связь с первым родителем разрушится и будет заменена связью с новым родителем.
Если проследить связи от ребенка к родителю и родителю родителя и т.д., то в конце концов будет достигнут корень иерархии. Все объекты, связывающие ребенка с корнем, называются предками ребенка.
Любая иерархия содержат только один корневой объект. Король иерархии - это объект, который провозглашает все остальные объекты в иерархии в качестве своих потомков и не имеет предков выше себя. Объект, который не имеет ни детей, ни родителей, может рассматриваться как корень - корень самого себя.
Иерархии и мир
Выражаясь технически, сцена сама по себе (называемая Миром) является корнем всех иерархий. Это означает, что вы всегда работаете с иерархией, поскольку каждый объект на сцене связан как дочерний с другим объектом или объект является дочерним по отношению к миру.
Эта "скрытая иерархия" становится очевидной в следующих ситуациях:
Манипулирование точками вращения для корневых объектов работает благодаря тому, что точка вращения определяет связь между корневым объектом и миром.
Выбор для корневого объекта системы координат трансформации Parent возвращает систему координат World, так как мир является родителем всех корневых объектов.
В случае активной IK нельзя трансформировать корневые объекты до тех пор, пока они не будут освобождены от мира или не будут определены параметры соединения между корневым объектом и миром.
Просмотр дерева иерархии
После создания связей между объектами связанные объекты организуются в древовидную структуру. Данная древовидная структура принимает форму списка, в котором имена порожденных объектов отступают вниз и вправо от родительских объектов. Этот список можно просматривать в Track View либо выбрав опцию Display Subtree в диалоге Select Objects (см. рис. 18.2).
Для модификации структуры иерархии используются кнопки Link и Unlink линейки инструментов. Эти кнопки описываются в следующем разделе.
Связывание объектов
Кнопки Link и Unlink из линейки инструментов применяются для создания и разрыва связей между объектами. Все остальные команды манипулирования связями находятся в командных панелях.
Для указания, какие объекты с какими связываются, нажмите кнопку Link на линейке инструментов. Как показывает подсказка в нижней части окна 3DS МАХ, вы всегда переходите от выборки порожденных объектов к единственному родительскому объекту. Однако обратите внимание на то, что легко сделать и наоборот и перейти от родительского объекта к дочернему.
При указании связей легко ошибиться, задав неправильный родительский объект, особенно в случае сложной модели. После выбора порожденных объектов через кнопку Link можно щелкнуть на кнопке Select by Name и отобразить диалог Select Parent. Рисунок 18.3 показывает пример применения диалога Select Parent для выбора объекта Right Lower Leg (Правая нижняя нога) в качестве родителя для другого объекта, скорее всего для Right Foot (правой ступни). Данный диалог па самом деле является диалогом Select Objects с новым названием, напоминающим о том, что делается. Выберите в окне списка любого родителя и щелкните на Link в нижнем правом углу диалога для завершения процесса связывания.
Для разрыва связей между выбранными детьми и их родителями щелкните на кнопке Unlink в линейке инструментов. Команда Unlink является одной из немногих в 3DS МАХ, которая заставляет выбирать объекты перед активизацией команды. Для выбора объектов нажмите кнопки Select Object или Select by Name на линейке инструментов и затем нажмите Unlink.
Установка наследования связей
Для определения, какие трансформации будут передаваться от родителя к ребенку, установите опции наследования связей на панели Hierarchy:
Выберите один дочерний объект.
Нажмите Link Info на панели Hierarchy.
Раскройте свиток Inherit и включите или выключите опции наследования (см. рис. 18.4).
На рисунке 18.4 опции наследования связей активны. Трансформация оси, представленная активными опциями, передает информацию трансформации от родителя к выделенному ребенку, заставляя ребенка трансформироваться вместе с родителем. Выключенные опции освобождают ребенка на данных осях трансформации так, что родитель не оказывает влияние на ребенка.
Подобная возможность особенно полезна при моделировании механических связей. Часто объект связывается с родителем так, что объект фиксирован по одной или двум осям и свободен по другим. Примерами таких связей является соединение шатунов в двигателе и корзин на конвейерной ленте. Оба эти объекта связаны как дверной шарнир: они фиксированы и неподвижны по двум осям и могут вращаться вокруг третьей, определяемой осью шарнира (точкой вращения).
Отображение связей
При связывании объектов, особенно в сложных иерархиях, часто трудно визуализировать, какие объекты с какими и каким образом связаны. Как уже описывалось, для отображения иерархической древовидной структуры можно использовать Track View или диалог Select Object. Однако для отображения связей на сцене имеется еще и третья технология.
Установите опции в свитке Link Display панели Display для управления отображением связей выбранных объектов (см. рис. 18.5). Две опции отображения связей работают как описано в следующем перечне:
Display Links (отображать связи). Когда включена, рисуется трехсторонний конус от точки вращения выбранного объекта до точек вращения его дочерних объектов. Конус связи шире со стороны родителя и сужается к точке вращения ребенка (см. рис. 18.5).
Link Replaces Object (связь заменяет объекты). Когда включена, выбранные объекты исчезают и заменяются маленькими тетраэдрами, расположенными в точках вращения объектов. Включение Link Replaces Object форсирует также и установку опции Display Links.
Как избежать в иерархиях неоднородного масштабирования
Связывание разработано в качестве способа передачи трансформации от одного объекта к другому. Трансформация родительского объекта передает информацию к каждому из его дочерних объектов. Данный процесс великолепно работает для трансформаций Move, Rotate и Uniform Scale. Хуже связывание работает с неоднородно отмасштабированными объектами.
Дочерний объект, связанный с неоднородно отмасштабированным родителем, при вращении будет смят и перекошен. Такой результат почти всегда нежелателен- Как утверждается повсюду в книге, неоднородное масштабирование никогда не следует применять непосредственно к объекту. Всегда применяйте такое масштабирование к выборкам подобъектов или используйте модификатор XForm.
Устранить эффект связи с неоднородным масштабом можно многими способами. Два самых простых метода устранения эффекта таковы:
Выберите дочерний объект неоднородно отмасштабированного объекта и выключите ось влияния масштаба в свитке Link Inheritance. Такую процедуру следует повторить для каждого дочернего объекта.
Сбросьте трансформацию неоднородно отмасштабированного объекта после разъединения его со всеми детьми. После сброса трансформации можно повторно связать детей с объектом. Технология сброса трансформации объекта представлена позже в разделе "Настройка трансформаций".
Работа с точками вращения
Точка вращения объекта определяет, где происходит связь между родителем и ребенком. Вспомните трехсторонний конус, который вы видели после включения Display Links. Вообразите себе, что конус - это жесткий рычаг, приваренный к точке вращения родительского объекта и соединенный суставом с точкой вращения ребенка. Сустав предоставляет ребенку возможность двигаться, вращаться и изменяться в масштабе независимо от родителя, но в случае трансформации родителя конус перемещается и тянет за собой ребенка.
ПРЕДУПРЕЖДЕНИЕ
Изменение точки вращения объекта после указания анимированных трансформации может привести к неожиданным побочным эффектам. Производите все изменения точек вращения до осуществления анимации объекта.
Несмотря на то, что команды точек вращения находятся на панели Hierarchy, их можно применять ко всем объектам - а не только к соединенным. Помните, что объекты, не имеющие родителей и детей, тем не менее рассматриваются как связанные с миром. Точка вращения определяет ориентацию локальной системы координат объекта и является точкой, вокруг которой центрируется вращение и масштабирование объекта.
Следующие разделы описывают способы изменения положения точек вращения внутри объектов.
Настройка точек вращения
Для трансформации и выравнивания точек вращения и их объектов используйте команды из свитка Adjust Pivot. Для отображения свитка Adjust Pivot нажмите кнопку Pivot на панели Hierarchy (см. рис. 18.6).
Две верхних кнопки в свитке - Affect Pivot Only (влиять только на точку вращения) и Affect Object Only (влиять только на объект) - являются критически важными. Для того, чтобы определить, будете ли вы трансформировать объект независимо от его точки вращения или трансформировать точку вращения независимо от объекта, нажмите одну из них. В следующем перечне описано влияние кнопок Affect Pivot Only и Affect Object Only:
Когда активна Affect Pivot Only, трансформации и выравнивание применяется только к точке вращения, не затрагивая объект и его дочерние объекты. Применяйте данную кнопку в случае, если необходимо переместить точку вращения объекта в новое положение.
Когда активна Affect Object Only, трансформации и выравнивание применяются только к выбранному объекту, нс затрагивая точки вращения и детей. Используйте данную кнопку, если точка вращения находится как раз там, где необходимо и требуется переместить объект в новую позицию.
Когда активна любая из кнопок, точка вращения видна и похожа на маленькую пиктограмму с тремя осями (см. рис. 18.7).
Когда обе кнопки неактивны, трансформации и выравнивания применяются нормально к объекту, точке вращения и дочерним объектам.
Нажатие любой из кнопок для перевода в активное состояние автоматически выключает другую кнопку.
Нажатие уже активной кнопки выключает ее.
Выравнивание точек вращения
Три оставшихся кнопки в свитке Adjust Pivot используются для выравнивания объекта или точки вращения. Метки кнопок изменяются в зависимости от того, активна ли Affect Pivot Only или Affect Object Only. Эффекты всех трех кнопок описаны ниже:
Center to (центрировать по). Если на кнопке написано Center to Object, ее нажатие перемещает точку вращения в геометрический центр объекта. Ориентация точки вращения не меняется. Если на кнопке написано Center to Pivot, ее нажатие перемещает объект так, чтобы его геометрический центр совпал с точкой вращения. Ориентация объекта не меняется,
Align to (выровнять по). Если на кнопке написано Align to Object, нажатие на нее поворачивает точку вращения для совмещения с исходной локальной системой координат, которую имел объект, при создании. Положение точки вращения не изменяется. Если на кнопке написано Align to Pivot, нажатие на нее поворачивает объект так, чтобы выровнять его исходную локальную систему координат с точкой вращения. Положение объекта не изменяется.
Align to World (выровнять по мировой системе координат). Объект или точка вращения (в зависимости от того, какая кнопка Affect Only активна) поворачивается для выравнивания с системой координат World. Положение объекта или точки вращения не изменяется.
Выравнивание точек вращения посредством команды Align
Другой интересный способ выравнивания точки вращения объекта заключается в использовании команды Align линейки инструментов в сочетании с одной из кнопок Affect Only свитка Adjust Pivot. Используя команду Align линейки инструментов, можно выровнять объект или его точку вращения с любым другим объектом на сцене, включая самого себя. Посмотрите главу 6, "Выборки, трансформации и точность", где приведены подробности поименения команды Alien.
В случае активной Align to Pivot для достижения наиболее предсказуемых результатов Current Object в диалоге Align должен быть установлен в Pivot Point. Более того, можно выделить объект, к которому принадлежит точка вращения, в качестве целевого и затем использовать опции диалога Align для выравнивания точки вращения относительно границ объекта.
При активной Align to Object в качестве целевого можно выделить точку вращения объекта. Затем используйте опции диалога Align для выравнивания границ объекта по отношению к точке вращения.
Настройка трансформаций
Команды из свитка Adjust Transform используются для трансформации и выравнивания родительского объекта (включая его точку вращения) независимо от связанных детей. Во время трансформации родительского объекта кнопки на свитке Adjust Transform временно приостанавливают действие наследования связей. Нажмите на кнопке Pivot панели Hierarchy для отображения свитка Adjust Transform (см. рис. 18.8).
ПРИМЕЧАНИЕ
Кнопки в областях Alignment и Reset свитка Adjust Transform работают с любым объектом и для настройки трансформаций объектов на сцене.
Для перемещения, поворота или однородного масштабирования родительского объекта без влияния на его детей нажмите кнопку Affect Object Only в свитке Adjust Transform. (He применяйте со связанными объектами неоднородное масштабирование.) Для выравнивания выбранных объектов с World или с выбранными родительскими объектами нажмите на одну из кнопок выравнивания в свитке.
Если в свитке Adjust Transform активна кнопка Affect Object Only, то для выравнивания выбранных объектов с любым другим объектом на сцене и без влияния на детей выбранных объектов можно использовать команду Align линейки инструментов,
Сброс трансформаций
Две кнопки в области Reset свитка Adjust Transform сбрасывают вращение и трансформации объекта так, чтобы текущее состояние стало исходным. Кнопки сброса всегда передают изменение в трансформации любому связанному дочернему объекту. Если вы хотите сбросить трансформацию объекта, не затрагивая его детей, следует отсоединить детей от объекта и затем после сброса трансформации повторно их привязать.
Две кнопки Reset оказывают следующее воздействие:
transform (трансформация) Reset Rotation оказалось бы лучшим названием для данной кнопки, поскольку она вращает только точку вращения объекта и выравнивает ее с мировой системой координат. Другими словами, она сбрасывает трансформацию вращения объекта в нуль градусов поворота вокруг каждой оси. Основная разница между Reset Transform и Align To World заключается в том, что Reset Transform оказывает влияние на детей объекта, a Align to World - нет.
scale (масштаб) Поглощает установку текущего масштаба объекта и объявляет его масштаб равным 100%.
Сброс Scale может (ввести в заблуждение), поскольку приводит к разрыву того, как объект сообщает о своем состоянии. Если имеется сфера с радиусом 50 единиц и 150% однородный масштаб, на сцене сфера имеет радиус 75 единиц. При сбросе Scale данной сферы получится странная ситуация, при которой параметр радиуса сообщает о 50 единицах, а масштаб - о 100%, однако сфера на сцене по-прежнему имеет радиус 75 единиц. Сброс Scale скрывает исходный фактор масштаба от остальной 3DS МАХ.
Сброс Scale является единственным способом исправления неоднородно отмасштабированных объектов так, чтобы они правильно работали с иерархическим связыванием. Перед применением сброса Scale обязательно отсоедините от объекта все его дочерние объекты.
Сброс трансформаций посредством утилиты Reset Transform
Для сброса трансформаций объекта другим способом можно применить новую утилиту 3DS МАХ R1.1. Выберите Reset Transform из списка категорий панели Utility, показанной на рисунке 18.9. После щелчка на кнопке Reset Selected объект возвратится к своей начальной ориентации и масштабу, и любые трансформации масштаба и вращения будут помещены в модификатор XForm.
Применение утилиты Reset Transform обеспечивает дополнительный выигрыш за счет отделения значений вращения и трансформации масштаба от базового объекта. При этом данные значения остаются доступными в гизмо XForm.
ПРЕДУПРЕЖДЕНИЕ
Ввиду того, что утилита Reset Transform использует модификатор, применение Reset Transform аннулировать нельзя. Прежде чем применять утилиту Reset Transform выберите Hold из меню Edit. Затем, если вам не понравятся результаты работы утилиты, для восстановления сцены можно использовать Fetch.
Установка блокировок трансформаций объекта
Опции свитка Locks панели Hierarchy можно использовать для предотвращения трансформирования объекта относительно любых выделенных локальных осей. Доступ к блокированию объектов получается за счет нажатия кнопки Link Info в панели Hierarchy и расширения свитка Locks (см. рис. 18.10). Хотя свиток Locks расположен под Link Info, блокировки никакого отношения к связям между объектами не имеют. Установка блокировки влияет только на трансформации, применяемые непосредственно к объекту.
Свиток Locks содержит три набора флажков X, Y и Z - по одной установке для трансформаций Move, Rotate и Scale. Установка флажков оси предотвращает трансформацию относительно указанной оси- Например, набор блокировок на рисунке 18.10 предотвращает выделенный объект от перемещения вдоль оси Z или от вращения относительно осей Х и Y.
Использование фиктивных объектов
Фиктивные (dummy) объекты являются невидимыми, невизуализируемыми объектами, главная причина существования которых заключается в их связывании с другими объектами. Фиктивные объекты используются в качестве заместителей или поддерживающих структур для других объектов, которые должны выполнять сложные движения. Фиктивные объекты создаются из категории Helper в панели Create (см. рис. 18.11). Щелкните на кнопке Dummy и транспортируйте мышь в любое место сцены. В результате будет создан фиктивный объект кубической формы.
Ранее в настоящей главе приводился пример использования фиктивного объекта, который описывал кирпич, кувыркающийся по склону горы. Другой пример - атомарная структура. Вообразите моделирование движения электронов вокруг ядра атома. Вручную указать различные ключи вращения и позиционирования для электронов было бы сложно. Следующее упражнение демонстрирует создание атомарной модели посредством связанных фиктивных объектов.
Связанная атомарная структура
Данное упражнение использует фиктивные объекты, скрытые внутри модели атома, электроны которого связаны с фиктивными объектами. Упражнение можно выполнять путем загрузки файла на шаге 1. Можно также прочитать описание шагов упражнения и исследовать завершенную модель, загрузив файл atom.max.
Откройте файл atom-ex.max.
Модель начинается с пустого объекта, центрированного в ядре, и одного электрона, привязанного в качестве дочернего к фиктивному объекту (см, рис. 18.12а).
Два дополнительных связанных электрона создаются в шагах 2-4.
Выделите вместе фиктивный объект и электрон.
Нажмите Shift и поверните фиктивный объект на 120° относительно локальной оси Z.
В диалоге Clone Options установите опцию Object в Copy, количество копий в 2 и нажмите ОК (см. рис. 18.12Ь). Как видно из рисунка 18.12с, создаются еще два фиктивных объекта со связанными электронами.
Выполните анимацию электронов с использованием шагов 5-7.
Включите кнопку Animate.
Транспортируйте Time Slider в конец времени анимации.
Вращайте каждый фиктивный объект вокруг одной из его локальных осей (см. рис. 18.12а). Выбор различных локальных осей приводит к разным орбитам.
Завершенную модель можно исследовать самостоятельно. Откройте файл atom.max с CD-ROM проиграйте анимацию atom.avi.
Предыдущий пример демонстрирует, насколь просто при помощи фиктивных объектов настраивать сложные движения. Вы можете спорить, утверждая, что тот же самый пример легко выполнить и без фиктивных объектов, поместив центральную точку каждого электрона в центр ядра, и будете полностью правы. Недостаток такого подхода проявится, если позже потребуется наложить на электрон текстуру и показать электроны вращающимися вокруг своих собственных центров. Смещение точки вращения станет проблемой, поскольку теперь нет точки вращения в центре электрона. Связанные фиктивные объекты проще понимать, ими проще манипулировать и они оставляют больше возможностей для организации других эффектов.
Использование инверсной кинематики
Как подчеркивалось в предыдущих разделах, иерархическое связывание является одно сторон ним эффектом. Объекты связаны от родителя к ребенку и анимационныс эффекты, примененные к родителю, передаются детям. Эффекты, примененные к детям, к родительским объектам не передаются.
Подобный тип связывания полезен, но он не имитирует в точности суставчатые объекты реального мира. Как вы знаете, когда реальные объекты связаны вместе, то перемещение одного объекта оказывает влияние на все связанные объекты на основе их положений и свойств их суставов. Такое поведение имитируется посредством инверсной кинематики (Inverse Kinematics - IK).
IK используются для манипулирования всей цепочкой связей через перемещение или вращение выделенного порожденного объекта. При активном режиме IK перемещение или вращение объекта в иерархии вызывает следующие эффекты:
Выделенный объект называется IK конечным эффектором.
Потомки, связанные с конечным эффектором, наследуют трансформации, примененные к конечному эффектору, как это обычно делается в иерархиях.
Предки конечного эффектора определяют кинематическую цепь к корню иерархии или к специальному объекту-терминатору. Перемещение или вращение конечного эффектора перемещает или вращает всех предков в кинематической цепи на основе их I К-парам строе.
Для включения IK-поведения нажмите на кнопку IK линейки инструментов. Для установки параметров IK нажмите кнопку IK в панели Hierarchy (см. рис. 18.13).
Следующие разделы представляют предварительные концепции IK, которые помогут создавать успешные анимации с IK. Первый шаг в правильном применении IK заключается в понимании, как IK взаимодействуют с объектами в иерархии.
Системы координат
При использовании IK параметры сустава объекта управляются локальной системы координат родителя данного объекта. Взаимосвязь между ориентацией локальной системы координат объекта и локальной системой координат родителя объекта важна. Наиболее предсказуемые IK-иерархии образуются при такой установке начальных иерархий, что локальная система координат иерархии выровнена с объектами, а все объекты выровнены с World.
Рисунок 18.14 показывает правильно выложенную и готовую для связывания и установки IK фигуру по сравнению с фигурой, у которой будут проблемы с IK. У фигуры слева все компоненты выложены в соответствии с мировой системой координат и локальные системы координат компонентов выровнены с их объектами. Фигура справа не представляет никакого выравнивания, и некоторые локальные системы координат очевидно не выровнены с их объектами. Для фигуры справа будет трудно установить параметры, при этом ряд суставов могут оказаться неработоспособными.
Поскольку взаимосвязь между локальной системой координат объекта и локальной системой координат родителя объекта настоль важна, следует понимать, как различные команды изменяют локальные системы координат, и планировать, как подобные изменения будут влиять на анимацию. Локальную систему координат объекта изменяют следующие действия:
Вращение объекта вращает и локальную систему координат. Выравнивание оси сустава IK основано на отношении объекта к родителю, когда объект и родитель выровнены по отношению к World.
Модификация объектов на подобъектном уровне влияет на подобъекты, но не изменяет локальную систему координат.
Присоединение объектов всегда приносит в жертву локальную систему координат присоединяемого объекта, при этом используется локальная система координат выбранного объекта.
Различные формы Reset Transform всегда выравнивают локальную систему координат объекта с мировой системой координат.
Любая из команд Adjust Pivot из панели Hierarchy изменяет положение и ориентацию локальной системы координат объекта.
Ситуации, которых следует избегать при использовании IK
IK отлично работает с большинством предлагаемых задач, но существует ряд ситуаций, которые просто выходят за пределы возможностей IK. Большинство таких необрабатываемых ситуаций случается при использовании с IK нестандартных контроллеров или применении к объектам в IK-иерархии трансформаций устрашающего неоднородного масштабирования.
Технологии, рекомендуемые для использования с IK, включают следующие:
Лучше всего с IK работает Эйлеровский контроллер вращения XYZ. Кватернионовы контроллеры вращения, подобные ТСВ и Smooth, работают с IK, но они не настоль точны, как контроллеры XYZ Эйлера и могут иногда "замораживаться" в суставах с ограничениями.
Не отключайте наследования связей Move или Rotate для любого-объекта, который планируется использовать с IK. IK-вычисления основаны на трансформациях Move и Rotate, передаваемых через иерархию.
Не используйте опцию Follow с любым контроллером Path, присвоенным объектам в IK-иерархии. IK не может вычислить вращение, вызываемое опцией Follow.
Параметрические контроллеры, подобные LookAt, Noise, Audio или Expression, нормально с IK не работают. (Другими словами, 3DS МАХ не запрещает применения данных контроллеров, но скорее всего полезные результаты получены не будут.)
Определение IK-суставов
После того, как объекты связаны, можно начинать определять поведение их IK-суставов. Сердцем IK является определение того, как ограничиваются связи между объектами (их суставы).
Для определения поведения IK-сустава выделите в иерархии объект, который требуется анимировать, и затем настройте элементы управления IK в панели Hierarchy. Доступ к элементам управления IK получается после нажатия кнопки 1Кв панели Hierarchy (см. рис. 18.15).
В следующих разделах обсуждаются элементы управления IK для определения поведения сустава. Этими элементами управления являются Joint Parameters и Joint Precedence.
Установка Joint Parameters
Когда вы впервые настраиваете иерархию, то все суставы по умолчанию свободны для вращения во всех направлениях, но предохранены от сдвига. Если вы хотите получить управляемый реалистичный эффект, следует указать ограничения на работу суставов. В IK доступны суставы двух типов - вращательные суставы и позиционные суставы. Любой сустав может обладать свободой вращения, позиционирования либо и тем и другим. Также имеется независимое управление тем, насколь сильно сустав вращается или перемещается вдоль всех трех осей в локальной системе координат.
Элементы управления суставом и текущие параметры сустава для одного выбранного объекта размещены вдвух свитках панели Hierarchy (см. рис. 18.16). При выборе более одного объекта свиток параметров сустава отображаться не будет. Свитки параметров сустава названы следующим образом:
otational Joints (вращательные суставы). Всегда доступны для любого типа вращения. Содержит три набора параметров сустава -- по одному набору для каждой из трех вращательных осей X, Y и Z.
Sliding Joints (суставы скольжения). Один из двух стандартных типов позиционных суставов. Sliding Joints является типом по умолчанию, используемым для большинства контроллеров Position. Содержит три набора параметров сустава - по одному набору для каждой из трех позиционных осей X, Y и Z.
Path Joints (суставы пути). Второй стандартный позиционный тип сустава. Используется всегда, когда выделенному объекту присвоен позиционный контроллер Path. Содержит один набор параметров, управляющий положением объекта вдоль пути.
Все указанные типы суставов содержат управляющие элементы для трех базовых свойств суставов: активный статус сустава, ограничения сустава и трение сустава (называемое снижением (easing) и затуханием (damping)). Данные свойства описываются в следующих разделах.
Активизация суставов
Если необходимо, чтобы выбранный объект вращался или перемещался по оси сустава, следует установить для данной оси флажок Active. Большинство суставов в реальном мире активны только по одной оси, но иногда встречаются активные и по двум осям.
Примеры суставов реального мира, которые можно моделировать посредством 3DS МАХ IK, включают следующие:
Дверная петля активна по одной вращательной оси и не имеет осей скольжения.
Выдвижной ящик активен только по одной оси скольжения и нс имеет осей вращения.
Ваше плечо активно по всем трем вращательным осям и не имеет осей скольжения.
Бусинка на кольце (пути) активна по одной вращательной оси и активна по суставу пути.
Помните, что все оси сустава определяются локальной системой координат родителя выбранного объекта. Учитывайте выбор родителя и трансформацию системы координат. Затем можно использовать пиктограмму трансформации координат в качестве визуальной ссылки.
Ограниченные суставы
Если сустав активен по заданной оси, то вероятно он и ограничен- Например, если вращательный сустав неограничен, то объект свободно вращается. Рули и шестерни могут использовать неограниченные вращательные суставы, но большинство других суставов, подобные петлям, плечам, коленям, имеют определенные ограничения.
Для установки ограничений сустава выполните следующее:
Установите флажок Limited для оси активного сустава, по которой требуется ввести ограничение.
Введите значения в поля From и То, устанавливающие максимальный диапазон движения для объекта по данной оси (обратитесь к рис. 18.16).
Во время прокручивания счетчика поле для задания ограничения выбранный объект передвигается. Кроме того, можно нажать кнопку мыши над метками From или То и заставить объект перейти в указанную позицию ограничения. В обоих случаях после освобождения мыши объект возвращается в исходное положение.
Ограничения сустава измеряются различными способами. Ограничения вращательных суставов измеряются как угол между активной осью родительской локальной системы координат и соответствующей осью локальной системы координат выбранного объекта. Ограничения скользящего сустава измеряются расстоянием от точки вращения родителя до точки вращения выделенного объекта. Ограничения суставов путем измеряются в виде процента пути от первой вершины пути.
ПРЕДУПРЕЖДЕНИЕ
Если выбранный объект использует кватернионов контроллер вращения (ТСВ, Linear или Smooth) и его начальная позиция находится вне ограничений вращения, объект может "заморозиться", при попытке применения (К. Для ликвидации проблемы либо расширьте ограничения так, чтобы включать начальную позицию объекта, либо отключите режим IK и вращайте объект до тех пор, пока он не впишется в ограничение. С вращательным контроллером XYZ Эйлера подобная проблема не возникает.
Снижение и затухание суставов
В идеальном мире суставы не имеют трения и не оказывают сопротивление движению. Наши машины служили бы дольше, а руки не болели бы после работы с большими компьютерными книгами. К сожалению, трение в суставах присутствует. 3D Studio MAX имитирует сопротивление в IK-суставах посредством двух параметров, называющихся Ease и Damping.
Представляйте Ease как попытку передвинуть руку или ногу за максимальный диапазон движения. В диапазоне движение совершается легко, но когда вы доходите до ограничения, ощущается значительное сопротивление и движение затрудняется. Включение флажка Ease для оси увеличивает сопротивление движению по этой оси при подходе сустава к ограничению. Чем больше сопротивление в суставе, тем больше других суставов в иерархии IK должны участвовать в достижении требуемого положения.
О затухании можно думать как о заржавевшем или очень тугом суставе. Сустав с затуханием сопротивляется всем движениям и позволяет другим суставам в иерархии IK выполнять большую часть работы. Суставы с затуханием начинают двигаться тогда, когда другие суставы подходят к своим ограничениям. Установка значения в поле Damping вызывает сопротивление по всему диапазону движения. Значение Damping, равное 0.0, сопротивления не вызывает, а максимальное значение Damping 1.0 вообще не допускает движения по оси.
Копирование и вставка суставов
Часто будет возникать желание использовать один и тот же тип сустава с одними и теми же параметрами в нескольких объектах иерархии. В таком случае можно установить параметры только для одного сустава и затем скопировать и вставить параметры в другой сустав. Суставы Rotational и Sliding имеют свои кнопки Copy и Paste на развороте Object Parameters (см. рис. 18.17). Эти суставы располагают также и своей буферной памятью, поэтому можно одновременно хранить один вращательный и один скользящий сустав.
ПРИМЕЧАНИЕ
Для параметров сустава Path Copy и Paste не поддерживаются.
Для копирования и вставки параметров вращательных или скользящих суставов выполните следующие шаги:
Выберите объект.
Нажмите Copy в свитке Object Parameters для параметров скользящего или вращательного сустава.
Выберите другой объект.
Нажмите Paste для типа сустава, который необходимо вставить.
Установка параметров суставов для корневых объектов
Может показаться, что для корневого объекта иерархии параметры сустава устанавливать не требуется. По определению корневой объект не связан с родителем, поэтому он не имеет сустава - так? Нет, не так. Помните, что корневой объект всегда считается дочерним по отношению к World. Когда активен режим IK, параметры сустава для корня иерархии определяют то, как корневой объект передвигается по отношению к World.
Когда параметры сустава для корневого объекта не активны, он не может передвигаться или вращаться. Корневой объект действует в качестве якоря, оставаясь неподверженным любому решению IK. Кроме того, нет возможности непосредственного выбора, перемещения или вращения корневого объекта. Он жестко заблокирован на одном месте.
Если параметры сустава для корневого объекта активны, он может передвигаться или вращаться только а соответствии с параметрами суставов своих активных осей. Теперь в качестве якоря для иерархии выступает World. При попытке выбора и перемещения или вращения корневого объекта последний сможет передвигаться или вращаться так, как позволяют ему параметры сустава.
Иногда будет возникать желание сделать параметры сустава для корневого объекта неактивными, чтобы он действовал как якорь для любого решения IK. Но кроме того потребуется непосредственно выделять, перемещать или вращать корневой объект. 3DS МАХ обеспечивает оговоренную возможность через опцию Always Transform Children из World в панели Inverse Kinematics диалога Preference Settings. Когда Always Transform Children выключена, трансформация корневого объекта запрещена и он следует только параметрам сустава объекта. В противном случае можно свободно трансформировать корневые объекты, но любое IK-решение для корневого объекта обязано следовать параметрам сустава объекта.
Приоритет суставов
Параметр приоритета сустава (Joint precedence) управляет распространением движения между суставами. Суставы с большим приоритетом абсорбируют большую долю общего движения по сравнению с суставами, имеющими низкий приоритет. Абсолютное значение приоритета сустава не имеет значения, роль играет только превышение одного приоритета над другим.
Приоритет суставов устанавливается в свитке Object Parameters. Приоритет по умолчанию для всех суставов одинаков и равен нулю. Когда все суставы имеют одинаковый приоритет, суставы, находящиеся ближе к конечному эффектору, перемещаются больше суставов, удаленных от него.
Приоритет каждого сустава можно установить вручную, выделив объекты и введя значение в поле Precedence. Такой метод обеспечивает точный контроль над движением вдоль кинематической цепи, но процесс ручной установки приоритетов может оказаться очень скучным. Большая часть потребностей, вероятно, обеспечивается одной из следующих двух предварительных установок:
Child-Parent. Данный предустановленный выбор обеспечивает типовой решение для большинства ситуаций. Следует выбрать дочерний объект и его предков и щелкнуть на ChildParent для присваивания приоритета суставов, уменьшающегося от ребенка к родителю. Такая настройка приводит к тому, что порожденные объекты, находящиеся ближе к месту приложения трансформации, передвигаются больше, нежели дальние родительские объекты.
ParentChild. Выберите дочерний объект и его предков и щелкните на Parentr^Child для присвоения приоритета суставов, возрастающего от ребенка к родителю. Подобная настройка приводит к тому, что порожденные объекты в месте приложения трансформации перемещаются меньше, чем удаленные объекты.
Определение кинематической цепи
Как утверждалось в начале разделов, посвященных IK, трансформация объекта в режиме IK оказывает влияние на всех предков объекта вплоть до корня иерархии. Цепь предков от выделенного объекта до корня называется кинематической цепью. Поскольку каждый объект в иерархии может иметь только одного родителя, то от любого объекта к корню иерархии существует только одна возможная кинематическая цепь.
Иногда не требуется, чтобы кинематическая цепь проходила весь путь до корня. Примером служит анимация руки фигуры, когда необходимо, чтобы IK-эффект остановился у плеча. Остановить кинематическую цепь, прежде чем она достигнет корня, можно путем указания объекта как IK-терминатор. Для определения объекта в качестве IK-терминатора следует выбрать объект и установить флажок Terminator в свитке Object Parameters (см. рис. 18.18).
Анимация при помощи инверсной кинематики
После установки связей иерархии, параметров суставов и задания объектов-терминаторов вы готовы начать анимацию при помощи IK. Ниже приведены две основных формы анимации IK:
Interactive IK. Связана с ручным выделением и трансформацией конечного эффектора в указанных ключевых кадрах.
Applied IK. Включает связывание конечного эффектора с оживляемым объектом и принуждение 3DS МАХ высчитывать IK-решение для каждого кадра.
Использование Interactive IK
Применяйте Interactive IK в случаях, когда требуется большая свобода и артистический контроль за движением IK и 3DS МАХ разрешается выполнение интерполяций между ключевыми кадрами. Для активизации режима Interactive IK нажмите на кнопку IK в линейке инструментов. Затем вручную спозиционируйте конечные эффекторы, просматривая результаты изменений в реальном времени. Включите кнопку Animate, перейдите к другим кадрам и перемещайте или вращайте конечный эффектор до тех пор, пока не будет получена желаемая анимация.
Использование Applied IK
Applied IK применяется тогда, когда необходимо, чтобы иерархия имитировала движение другого объекта на сцене. В режиме Applied IK 3DS МАХ вычисляет полное IK-решение для каждого кадра анимации, достигая большей точности, чем при методе Interactive IK. Applied IK более гибок в использовании, поскольку можно быстро изменить анимацию за счет выбора других объектов для подражания или изменения анимации подражаемого объекта.
Для использования Applied IK прежде всего свяжите оживляемые конечные эффекторы с подражаемым объектом и затем щелкните на Apply IK в панели Hierarchy.
Связывание с позицией объекта
Если требуется, чтобы конечный эффектор указывал или даже касался выделенного подражаемого объекта, установите флажок Bind Position. Для связывания позиции конечного эффектора с подражаемым объектом выполните следующие шаги:
Выберите из иерархии конечный эффектор.
Установите флажок Bind Position в свитке Object Parameters.
Нажмите кнопку Bind в области Bind to Follow Object.
Транспортируйте мышь от конечного эффектора до объекта на сцене.
Когда курсор окажется над подражаемым объектом, он изменится на Bind (курсор Bind выглядит подобно булавке).
СОВЕТ
Попытка транспортирование указателя мыши от конечного эффектора до конкретного объекта для подражания может вызвать затруднения, если рядом с требуемым объектом находится множество других. Объект для подражания можно указать в диалоге Select Pin. В таком случае замените пункт 4 на следующий:
Нажмите на линейке инструментов кнопку Select by Name и выделите имя подражаемого объекта в диалоге Select Pin.
3D Studio MAX пытается совместить точку вращения конечного эффектора с позицией точки вращения подражаемого объекта. Кинематическая цепь по-прежнему остается ограниченной установками параметров сустава, поэтому конечный эффектор может и не достичь подражаемого объекта. В этом случае 3DS МАХ помещает конечный эффектор как можно ближе к подражаемому объекту.
Нажатие кнопки R справа от флажка Bind Position приводит к тому, что конечный эффектор имитирует движение подражаемого объекта, не пытаясь указать или достичь сам объект. Данная опция полезна для выполнения анимации жестов и вторичных движений.
Если включить флажок Bind Position, но не связать конечный эффектор с объектом для подражания, то конечный эффектор считается связанным с World. В таком случае связанный объект пытается не двигаться до тех пор, пока другие трансформации в кинематической цепи не заставят его двигаться для выполнения IK-решения.
Связывание с ориентацией объекта
Если требуется, чтобы ориентация конечного эффектора совпадала с ориентацией выбранного объекта для подражания, включите флажок Bind Orientation. Для связывания конечного эффектора с ориентацией подражаемого объекта выполните следующие шаги:
Выделите из иерархии конечный эффектор.
Установите флажок Bind Orientation в свитке Object Parameters.
Нажмите на кнопку Bind в области Bind to Follow Object.
Транспортируйте мышь от конечного эффектора к объекту на сцене.
Когда курсор окажется над подражаемым объектом, он изменяется на курсор Bind (курсор Bind выглядит подобно булавке).
3D Studio MAX пытается повернуть точку вращения конечного эффектора так, чтобы она совпадала с ориентацией точки вращения подражаемого объекта. Кинематическая цепь по-прежнему остается ограниченной установками параметров сустава, поэтому конечный эффектор может и не совпасть с ориентацией подражаемого объекта. В таком случае 3DS МАХ поворачивает конечный эффектор так, чтобы его ориентация совпадала с ориентацией объекта для как можно более точного подражания.
Нажатие кнопки R справа от флажка Bind Orientation приводит к тому, что конечный эффектор имитирует вращательные изменения подражаемого объекта, не пытаясь достичь ориентации самого объекта. Данная опция полезна для анимации жестов и вторичных движений.
Если включить флажок Bind Orientation, но не связать конечный эффектор с подражаемым объектом, конечный эффектор считается связанным с World. В этом случае граничащий объект пытается сохранить свою исходную ориентацию и не вращается до тех пор, пока другие ^ансформации в кинематической цепи не заставят его вращаться для выполнения IK-решения.
Применение IK-решений
Последним действием после связывания конечных эффекторов с оживленным объектом для подражания является применение IK-решений. Управляющие элементы для применения IK находятся в свитке Inverse Kinematics панели Hierarchy.
Для применения IK-решения выполните следующее:
Выделите любой объект в IK-иерархии.
Установите время начала и время завершения IK-решения в полях Start и End.
Щелкните на кнопке Apply IK.
Пока 3DS МАХ вычисляет IK-решение, в нижней части окна приложения 3DS МАХ отображается индикатор хода работы. Для остановки вычислений IK в любой момент времени нажмите на кнопку Cancel справа от индикатора хода работы.
В свитке Inverse Kinematics имеется еще два параметра, влияющих на применение IK-решения:
Update Viewports (обновить видовые окна). Когда включена, 3DS МАХ отображает в видовых окнах IK-решение для каждого кадра. Можно наблюдать прохождение процесса IK-решения, но за счет замедления вычислений.
Clear Keys (очистить ключи). Когда включена, все позиционные и вращательные ключи из объектов в иерархии IK удаляются до начала вычислений. Если производить в существующем IK-решении только небольшие изменения, сброшенная опция Clear Keys может ускорить вычисления. В случае же значительных изменений Clear Keys следует установить для обеспечения наиболее точного IK-решения.
|