Классическим упражнением для начинающих изучать анимацию в компьютерной графике является моделирование прыгающего мячика. Так как порядок действий в данном случае достаточно очевиден, поведение шарика можно сделать совершенно произвольным, все зависит исключительно от вашей фантазии. Анимация шарика является замечательным способом потренироваться как в применении законов физики, так и в имитации движения персонажей из мультфильмов. Начнем мы с создания резинового мячика, к которому применим принципы анимации, обсуждавшиеся в главе 1.
Создадим объект, на примере которого будем изучать принципы анимации:
1. Создайте полигональную плоскость и увеличьте ее размер таким образом, чтобы она могла играть роль опорной поверхности. Затем создайте NURBS-сферу.
2. Нажмите клавишу 5 для перехода в режим показа тонированных оболочек объектов, а затем выделите сферу и нажмите клавишу 3, чтобы максимально увеличить ее детализацию.
3. Переместите сферу на одну единицу в положительном направлении оси У, чтобы она оказалась лежащей на опорной плоскости.
5. Выберите в меню File (Файл) команду Project > New (Проект > Создать). Присвойте новому проекту имя bouncing_ball и поместите его в папку, в которой уже находится проект Solar_System. Щелкните на кнопке Use Defaults (По умолчанию), а затем — на кнопке Accept (Принять). Сохраните сцену.
Теперь нужно создать набор ключевых кадров для различных положений сферы. В главе 1 вы узнали, что позаимствованный из традиционной анимации термин «создание ключевых кадров» означает фиксацию положения объекта в определенном кадре. Все остальные положения объекта компьютер достраивает автоматически.
Начнем с воспроизведения общего перемещения мячика. Сначала нужно заставить его подпрыгнуть вверх и опуститься вниз:
1. Активизируйте инструмент Move (Переместить), нажав клавишу w, и переместите сферу на 10 единиц в положительном направлении оси Y. Переместите камеру таким образом, чтобы получить достаточное пространство для движений мяча.
2. В главе 3 при создании ключей анимации для планет вы выделяли нужные атрибуты в окне диалога Channel Box (Окно каналов) и нажимали клавишу s. Но в данном случае мы воспользуемся другим методом.
Нажмите комбинацию клавиш Shift+w. Это приведет к появлению в первом кадре ключей анимации для атрибутов Translate X (Смещение по оси X), Translate Y (Смещение по оси Y) и Translate Z (Смещение по оси Z). Проверим текущие параметры анимации. Выберите в меню Window (Окно) команду Setting/Preferences > Preferences (Настройки/Параметры > Параметры) и в списке Categories (Категории) появившегося окна диалога выделите строчку Settings (Настройки). В раскрывающемся списке Time (Время) раздела Working Units (Рабочие единицы) должен быть выбран вариант NTSC (30 fps) (NTSC (30 кадров/с)). Щелкните на кнопке Save (Сохранить). Заданный по умолчанию диапазон анимации, равный 120 кадрам, вполне подходит для наших целей.
3. Щелкните на кнопке Auto Keyframe toggle (Включение режима автоматической установки ключевых кадров). Теперь любое изменение положения объекта будет приводить к автоматическому созданию ключа анимации для атрибутов Translate X (Смещение по оси X), Translate Y (Смещение по оси Y) и Translate Z (Смещение по оси Z).
ПРИМЕЧАНИЕ
Функция Auto keyframe (Автоматическая установка ключевых кадров) начинает работать только после того, как вы вручную зададите первый ключевой кадр для анимируемого атрибута.
4. Теперь нужно заставить мяч двигаться вниз. В данном случае точные временные интервалы не имеют особого значения, поэтому установите ползунок таймера анимации, например, на отметку кадра № 10 и перемещайте мяч в отрицательном направлении оси У, пока он не окажется примерно на четверть
погружен в опорную плоскость. Это нужно, чтобы впоследствии получить эффект сжатия мяча при ударе о поверхность. Программа автоматически создаст ключ анимации в этом кадре.
5. Установите ползунок таймера анимации на отметку кадра № 20 и переместите мяч вверх примерно на три четверти исходной высоты. Можно просто ввести в поле Translate Y (Смещение по оси Y) значение 7,5.
6. В кадре № 30 переместите мяч вниз, на этот раз погрузив его в пол менее чем на четверть.
7. В кадре № 40 поднимите мяч над поверхностью на половину исходной высоты, то есть до F-координаты 5.
8. Повторите описанную процедуру еще несколько раз, постепенно уменьшая высоту подскоков и глубину погружения в поверхность. Откройте окно диалога Graph Editor (Редактор анимационных кривых), выбрав в меню Window (Окно) команду Animation Editors > Graph Editor (Редакторы анимации > Редактор анимационных кривых), чтобы посмотреть на полученную кривую. Мы продолжим упражнение после детального рассмотрения интерфейса этого окна.
На втором шаге вы воспользовались комбинацией клавиш Shift+w, чтобы создать ключи анимации для преобразования перемещения по всем трем осям. Существуют аналогичные клавиатурные комбинации также для преобразований поворота и масштабирования. Нажатие клавиш Shift+e фиксирует текущую ориентацию объекта по всем трем осям, а комбинация Shift+r задает ключевые кадры для размера объекта по всем осям.
Окно диалога Graph Editor
Важным инструментом из арсенала аниматора является окно диалога Graph Editor (Редактор анимационных кривых). Оно дает возможность выполнить большую часть работы по редактированию движения объектов. Более того, с помощью этого инструмента можно создавать анимацию. Начальные сведения о нем вы получили в главе 2. В этом окне наглядно показано, как ключи анимации расположены во времени и в пространстве, что облегчает процесс их редактирования.
Функциональные кривые
Для правильного построения анимации важно понимать смысл функциональных кривых. По их виду вы можете судить о направлении движения объекта, его скорости, ускорении и времени перехода в то или иное положение.
Как вы увидите в следующем упражнении, любая анимация объекта сопровождается проблемами, решать которые удобней всего с помощью функциональных кривых. Не бойтесь прибегать к окну диалога Graph Editor (Редактор анимационных кривых) и пользуйтесь им при каждом удобном случае. Чем больше будет ваш опыт работы с ним, тем проще вам будет по виду кривых определить наличие проблем в анимации.
На первый взгляд функциональные кривые напоминают неоднородные рациональные сплайны Безье, с которыми вы уже знакомы. Но кривизну в данном случае контролируют не управляющие точки, а векторы касательных, находящиеся в местах расположения ключей анимации. Кривизна редактируется перемещением маркеров на концах управляющих векторов.
Функциональная кривая представляет собой зависимость значения выбранного атрибута (оно откладывается по вертикали) от номера кадра (он откладывается по горизонтали). Вид анимации зависит не только от положения ключей, но и от формы самой кривой. Вот пример расшифровки функциональной кривой и ее редактирования.
На рис. 8.1 показан результат анимации атрибута Translate Z (Смещение по оси Z).
Рис. 8.1. Пример анимационной кривой
Кривая показывает, что сначала объект быстро перемещается в положительном направлении оси Z. Затем движение постепенно замедляется, пока объект не остановится. Остановке движения соответствует плоский участок кривой, центр которого располагается в кадре № 41. После этого объект снова начинает двигаться с ускорением, но на этот раз в отрицательном направлении оси 2.. Движение происходит с постоянной скоростью вплоть до кадра № 62. Здесь направление перемещения резко меняется, и в течение 45 кадров объект двигается в положительном направлении оси Z. В конце скорость движения медленно спадает до нуля.
Рис. 8.2. Линейное движение
Таким образом, форма кривой в окне диалога Graph Editor (Редактор анимационных кривых) определяет, как будет двигаться объект. Например, на рис. 8.2 показана кривая, соответствующая равномерному прямолинейному перемещению.
На рис. 8.3 показана кривая для постепенно ускоряющегося объекта, движение которого внезапно прекращается в кадре № 30. Обрыв кривой означает прекращение движения. Исключением являются бесконечные кривые, о которых мы поговорим чуть позже.
Рис. 8.3. Движение с ускорением
Объект, функциональная кривая которого показана на рис. 8.4, резко начинает свое движение, затем оно постепенно замедляется. И в кадре № 27, где кривая становится плоской, объект останавливается.
Рис. 8.4. Движение с замедлением
Мячик из мультфильма
Теперь воспользуемся полученными знаниями для анализа анимационной кривой прыгающего мячика:
1. Откройте окно диалога Graph Editor (Редактор анимационных кривых) и посмотрите на анимационную кривую мячика. Она напоминает кривую с рис. 8.5.
Рис. 8.5. Анимационная кривая прыгающего мячика. Обратите внимание на уменьшение высоты подскока с течением времени
2. Обратите внимание на то, что кривая существует только для атрибута Translate Y (Смещение по оси Y), несмотря на наличие на панели Outliner (Структура) списка всех трех атрибутов перемещения. Дело в том, что в первом кадре ключ анимации был создан для каждого из атрибутов, но перемещение происходило только вдоль оси Y. Это не очень хороший подход. Если вы не собираетесь аними-ровать какой-либо из атрибутов, не имеет смысла создавать для него ключи анимации.
3. Запустите воспроизведение анимации, чтобы посмотреть на движение объекта. Щелкните на кнопке Animation Preferences (Параметры анимации) и убедитесь в том, что в раскрывающемся списке Time (Время) раздела Working Units (Рабочие единицы) выбран вариант NTSC (30 fps) (NTSC (30 кадров/с)).
4. Основное внимание следует уделить временным интервалам отдельных фаз движения, то есть скорости движения мяча вверх и вниз. В данный момент видим следующее:
Сначала мяч падает слишком быстро, хотя второй и третий отскоки выглядят вполне реалистично. Поменять временные интервалы можно перемещением ключей анимации в окне диалога Graph Editor (Редактор анимационных кривых). Для этого выделите ключ анимации в кадре № 10, а также все расположенные за ним ключи, и переместите их на два кадра вправо (рис. 8.6).
Рис. 8.6. Переместив все ключи анимации, кроме первого, на два кадра вправо, вы замедлите
начальное падение мяча
СОВЕТ
Чтобы переместить ключи анимации в окне диалога Graph Editor (Редактор анимационных кривых), выделите их, нажмите клавишу w и перетащите ключи средней кнопкой мыши. Удерживая в процессе этого перемещения клавишу Shift, вы ограничите его горизонтальной или вертикальной осью.
Высота подскоков мяча постепенно уменьшается, однако интервал между подскоками по-прежнему составляет всего 10 кадров. То есть за то же самое время мяч проходит меньшее расстояние, поэтому скорость его движения возрастает. Чтобы исправить ситуацию, выделите три последних ключа анимации и переместите их на один кадр влево (рис. 8.7).
Рис. 8.7. Перемещение трех последних ключей анимации на один кадр влево делает перемещение мяча более естественным
Временные интервалы
Задание временных интервалов в анимации связано с установкой правильного порядка ключей. Для создания достоверной анимации крайне важно выбрать правильную скорость перемещения объекта. По мере роста вашего опыта выбор корректных временных интервалов будет происходить на интуитивном уровне. Упражнение с прыгающим мячиком крайне популярно как раз потому, что позволяет получить представление об основных аспектах редактирования анимации.
Загрузите файл ball_v02.mb из папки ChapterFiles\Bouncing_BaU\scenes прилагаемого к книге компакт-диска. Пока что при воспроизведении анимации движения мяча выглядят не очень натурально. Возникает ощущение, что он не отскакивает от пола, а опускается и поднимается на гребне волны. Проблема состоит в отсутствии ускорений и замедлений движения мяча. По умолчанию ключи анимации в Maya создаются таким образом, чтобы итоговая анимационная кривая была гладкой, как неоднородный рациональный сплайн Безье. Именно это является причиной некорректного движения мяча. Он должен постепенно разгоняться при падении и замедляться при отскоке. Вот как можно решить данную проблему:
1. В окне диалога Graph Editor (Редактор анимационных кривых) выделите все ключи анимации, соответствующие приземлению мяча, и щелкните на кнопке Linear Tangents (Линейные касательные) на панели инструментов этого окна.
2. Затем выделите все ключи анимации, соответствующие положению мяча в верхних точках, и щелкните на кнопке Flat Tangents (Плоские касательные). В итоге кривая анимации должна принять вид, показанный на рис. 8.8.
Рис. 8.8. Результат редактирования скорости мяча в начале и в конце подскока
3. Теперь при воспроизведении анимации мяч будет двигаться намного более реалистично. При желании вы можете самостоятельно дополнительно отредактировать ключи анимации по своему усмотрению.
Растяжение и сжатие
Идея деформации объекта при движении существует с момента возникновения анимации. Ведь таким способом создается впечатление, что объект имеет некий вес и реагирует на силу тяжести и столкновения с другими объектами. Простейшим способом деформации объекта в Maya является его неравномерное масштабирование, выполняемое с помощью инструмента Scale (Масштабировать). Вот как это выглядит на практике:
1. Загрузите файл ball_v03.mb с прилагаемого к книге компакт-диска или продолжите выполнение предыдущего упражнения. Убедитесь в том, что нажата кнопка Auto keyframe (Автоматическая установка ключевых кадров). Установите ползунок таймера анимации на отметку кадра № 12. Это соответствует первому удару мяча об пол. Нажмите клавишу г для активизации инструмента Scale (Масштабировать) и уменьшите масштаб мяча вдоль оси Y примерно до 0,6. Нужно сделать так, чтобы мяч больше не проваливался сквозь пол. Создайте ключ анимации для всех атрибутов масштабирования, нажав комбинацию клавиш Shift+r.
2. Установите ползунок таймера анимации на отметку кадра № 15 и увеличьте масштаб мяча по оси У примерно до 1,3.
Это соответствует его состоянию сразу после отскока от пола. Тремя кадрами позже верните масштаб мяча в исходное состояние, присвоив параметру Scale Y (Масштабирование по оси Y) значение 1.
3. Подвигайте ползунок таймера анимации. Вы обнаружите, что перед началом движения мяч уже находится в сплющенном состоянии. Это связано с отсутствием ключей анимации атрибутов масштабирования до момента соприкосновения
мяча с поверхностью. Установите ползунок таймера анимации на отметку кадра № 9 и введите в поле Scale Y (Масштабирование по оси Y) значение 1. Снова подвигайте ползунок таймера анимации, и вы увидите, что мяч начинает сплющиваться еще до момента соприкосновения с поверхностью. Откройте окно диалога Graph Editor (Редактор анимационных кривых) и переместите первый ключ анимации атрибута Scale Y (Масштабирование по оси Y) из кадра № 9 в кадр №11. Теперь мяч сжимается при ударе о пол и растягивается при отскоке.
4. Повторите описанную процедуру для остальных отскоков, постепенно уменьшая коэффициент масштабирования, ведь высота прыжков мяча уменьшается. Пара последних прыжков может происходить вообще без деформации мяча.
Для сравнения загрузите файл ball_v03.mb с прилагаемого к книге компакт-диска. Хотя теперь движение мяча выглядит корректно, ему не помешает небольшое редактирование, например более точный выбор временных интервалов. Откройте окно диалога Graph Editor (Редактор анимационных кривых) и поэкспериментируйте с анимационной кривой.
Следующее упражнение даст вам возможность попрактиковаться в работе с иерархическими цепочками, а также в создании и редактировании анимации более сложного объекта, чем прыгающий мячик. Порядок действий в данном случае также будет довольно прост, но это стандартная последовательность работы по корректной настройке сцены. Сначала вы создадите модель топора, сгруппируете все ее составные части и выберете положение опорной точки. Затем останется смоделировать бросок топора.
Но почему бы не воспользоваться уже готовой алебардой, которой к тому же были назначены материалы? Потому что она оставлена для следующего упражнения по импорту и замещению объектов.
В данном случае выполнение проекта начнется с создания базовой модели. По возможности воспользуйтесь Интернетом для поиска изображений различных топоров, а также информации по технике их броска. Кроме того, вам потребуется создать мишень, в которую будет брошен топор, поэтому обращайте внимание на различные виды мишеней.
Создайте новый проект, воспользовавшись командой Project > New (Проект > Создать) из меню File (Файл), и присвойте ему имя axe_anim. Поместите его в папку, в которой уже находятся остальные ваши проекты. Затем щелкните на кнопке Use Defaults (По умолчанию), а затем — на кнопке Accept (Принять). Впоследствии вам предстоит заместить простой топор моделью алебарды, созданной вами в главе 4.
Начнем с создания топора и мишени из объектов-примитивов. Затем вам предстоит сгруппировать отдельные части моделей и поместить их опорные точки в нужное место. Это стандартная предварительная работа по подготовке объектов сцены к анимации.
Создание топора
Основой для топора послужат два полигональных примитива — цилиндр и куб.
1. Выберите в меню Create (Создать) команду Polygon Primitives (Полигональные примитивы) и щелкните на квадратике, расположенном справа от команды Cube (Куб). Введите в поле Subdivisions Along Width (Разбиений по ширине) значение 4 и щелкните на кнопке Create (Создать).
2. Присвойте новому объекту имя axe_head.
3. Выберите в меню Create (Создать) команду Polygon Primitives > Cylinder (Полигональные примитивы > Цилиндр) и присвойте новому объекту имя handle.
4. Введите в поля Scale X (Масштабирование по оси X), Scale Y (Масштабирование по оси Y) и Scale Z (Масштабирование по оси Z) значения 0,283, 6,998 и 0,283 соответственно.
5. Поместите куб в верхнюю часть цилиндра, оставив сверху небольшой наконечник. Введите в поля Scale X (Масштабирование по оси X) и Scale Y (Масштабирование по оси Y) значения 4,117 и 2,75 соответственно. Вид полученного объекта в окне проекции Front (Вид спереди) показан на рис. 8.9.
Рис. 8.9. Взаимное расположение частей топора
6. Измените масштаб куба по оси Z таким образом, чтобы он оказался чуть больше ширины рукоятки.
7. Для создания острой кромки войдите в режим редактирования подобъектов, нажав клавишу F8. В окне проекции Тор (Вид сверху) рамкой выделите правую кромку куба. При этом будут выделены четыре вершины.
Нажмите клавишу г, чтобы активизировать инструмент Scale (Масштабировать). В окне проекции Тор (Вид сверху) уменьшайте масштаб по оси Zдo тех пор, пока вершины не совпадут друг с другом. Затем слегка увеличьте их масштаб по оси Y. Выделите следующие четыре вершины и проделайте с ними те же операции, на этот раз уменьшив масштабирование по обеим осям. В итоге должен получиться объект, показанный на рис. 8.10.
Рис. 8.10. Создание острого лезвия на топоре
ПРИМЕЧАНИЕ
В большинстве случаев точные размеры объектов не имеют значения. В основном при создании моделей для последующей анимации используются пропорции и относительные величины. При необходимости точность всегда можно увеличить.
8. Нажмите клавишу F8 для выхода из режима редактирования подобъектов и выделите весь топор.
9. Выберите в меню Edit (Правка) команду Group (Группировать) и присвойте новой группе имя ахе.
Теперь нужно указать центр тяжести топора, поместив туда опорную точку группы. Так как самой тяжелой деталью является лопасть, которая к тому же направлена только в одну сторону, центр тяжести топора будет располагаться на небольшом расстоянии от рукоятки.
10. Нажмите клавишу Insert для перехода в режим редактирования опорной точки и в окне проекции Front (Вид спереди) переместите эту точку вдоль оси X примерно на один квадратик координатной сетки от центра рукоятки (рис. 8.11). Снова нажмите клавишу Insert.
Для сравнения вы можете загрузить файл axe_vl.mb из папки ChapterFiles\Axe_Anim\ scenes прилагаемого к книге компакт-диска.
Создание мишени
Переместите топор примерно на 40 единиц в отрицательном направлении оси X, чтобы получить пространство для броска. Затем переместите его на 15 единиц в положительном направлении оси У. Теперь нужно создать простейшую мишень:
Рис. 8.11. Правильный выбор центра тяжести объекта гарантирует его корректное
поведение при анимации
1. Выберите в меню Create (Создать) команду Polygon Primitives t Cylinder (Полигональные примитивы > Цилиндр).
2. С помощью инструмента Scale (Масштабировать) уменьшите высоту цилиндра (можно просто ввести в поле Scale Y (Масштабирование по оси Y) значение 0,79), а затем поверните его практически перпендикулярно поверхности, слегка наклонив вниз.
3. Введите в поля Scale X (Масштабирование по оси X) и Scale Z (Масштабирование по оси Z) значение 7.
Теперь нужно создать опору для мишени:
Выберите в меню Create (Создать) команду Polygon Primitives > Cub (Полигональные примитивы > Куб). Измените масштаб куба таким образом, чтобы он смог послужить основанием для мишени и при этом еще осталось место для подпорок. Например, введите в поля Scale X (Масштабирование по оси X) и Scale Z (Масштабирование по оси Z) значения 15,384 и 19,341 соответственно. С помощью команды Polygon Primitives > Cylinder (Полигональные примитивы > Цилиндр) из меню Create (Создать) создайте два цилиндра, предназначенные на роль подпорок мишени. Поменяйте масштаб цилиндров, поверните их и поместите за мишенью (рис. 8.12). Сгруппируйте все элементы мишени друг с другом и присвойте группе имя Target. Переместите группу Target на 40 единиц в положительном направлении оси X, а. затем немного подвиньте в положительном направлении оси У, чтобы объект как бы стоял на координатной плоскости XZ. Нажмите клавишу Insert и переместите опорную точку группы в нижнюю часть основания, в место пересечения с подпорками (рис. 8.13). Снова нажмите клавишу Insert.
Рис. 8.12. Положение подпорок мишени
Рис. 8.13. Место размещения опорной точки группы Target
Место для опорной точки выбрано с учетом того, что в момент попадания топора мишень должна покачнуться. И именно небольшой поворот вокруг этой точки с откатом назад будет создавать впечатление, что в мишень действительно воткнулся топор. Сохраните сцену. Теперь все готово для анимации.
Хорошую анимацию от плохой отличает корректное движение объектов, невозможное без имитации их веса. Благодаря наблюдениям за окружающими нас предметами мы инстинктивно представляем, как движется тот или иной объект. То есть мы чувствуем сущность движения. И именно вес объектов производит на нас определенное, по большей части подсознательное, впечатление. Пристальное наблюдение за перемещением объектов с учетом деталей их взаимодействия с окружающей обстановкой называется изучением движения.
К сожалению, знаний о том, как движется объект, недостаточно для его корректной анимации. В рассматриваемом случае вашей первостепенной задачей будет имитация веса топора. Нужно создать у зрителя ощущение, что созданный на экране объект действительно летит. Моделирование, назначение материалов и освещение не играют при этом решающей роли, но вот неверное воспроизведение движения может испортить все впечатление от анимации. Таким образом, получить убедительную сцену можно, только корректно смоделировав движение объектов. А это невозможно без пристальных наблюдений за объектом в реальном мире.
Ощущение веса во многом зависит от правильного выбора временных интервалов и корректного завершения движения, что требует от аниматора большого опыта.
Имеет смысл сначала попытаться совершить действие, которое вы собираетесь воспроизвести на экране компьютера. Возьмите ручку, снимите с нее колпачок и бросьте через комнату. Обратите внимание на то, как она описывает дугу в воздухе, как поворачивается вокруг центра тяжести и как ударяется о стену. Затем наденьте колпачок и повторите бросок, постаравшись заметить небольшое, но существенное отличие в движении, вызванное увеличением массы.
Подобные эксперименты являются частью подготовительной работы. Важно как можно лучше понять, как движется исследуемый предмет.
Известно, что правильно брошенный топор должен вращаться как можно меньше. Это нужно учитывать при работе над анимацией.
Теперь нужно создать начальные ключи анимации для топора. Это будет первый шаг его путешествия по заданной траектории.
Создание начальных ключевых кадров
Продолжите выполнение предыдущего упражнения или загрузите файл axe_v2.mb с прилагаемого к книге компакт-диска.
1. В окне диалога Outliner (Структура) выделите группу ахе. Чтобы облегчить процесс выделения группы в дальнейшем, сделайте видимыми манипуляторы выделения, выбрав в меню Display (Отображение) команду Component Display > Selection Handles (Отображение компонентов > Манипуляторы выделения). В месте расположения опорной точки топора появится крест, щелчок на котором будет приводить к выделению всех составных частей рассматриваемой группы.
ПРИМЕЧАНИЕ
Как вы убедитесь немного позже, с помощью манипулятора выделения можно выделить не только верхний узел группы, но и дочерние узлы.
Так как манипулятор выделения был сделан видимым при выделенном верхнем узле иерархической цепочки, он представляет собой полый крест, расположенный в опорной точке группы.
ПРИМЕЧАНИЕ
Манипуляторы выделения существуют практически для любого объекта в Maya вне зависимости от того, какое место этот объект занимает в иерархии группы. Манипулятор выделения для рядовых членов группы имеет вид обычного креста.
2. Установите ползунок таймера анимации на отметку кадра № 1 и создайте ключи для преобразований поворота и перемещения, нажав комбинации клавиш Shift+w и Shift+e. Этим вы зафиксировали начальное положение топора и его ориентацию.
Предвосхищение
Движение топора по предназначенной ему траектории начнется не сразу. Сначала он отклонится назад, как будто отведенный невидимой рукой. Подобные подготовительные действия называются предвосхищением (anticipation). Вот как это реализуется на практике:
1. Установите ползунок таймера анимации на отметку кадра № 15.
2. Переместите топор на 8 единиц в отрицательном направлении оси X и поверните его против часовой стрелки примерно на 45°.
3. Функция автоматического создания ключевых кадров зафиксирует заданные вами положение и ориентацию объекта.
Так как перемещение совершилось только относительно оси X, а поворот — только относительно оси Z, ключи анимации появились исключительно для атрибутов Translate X (Смещение по оси X) и Rotate Z (Поворот относительно оси Т). Ключей анимации для остальных атрибутов перемещения и поворота не появилось, так как их значения остались без изменений.
ПРИМЕЧАНИЕ
Функция Auto keyframe (Автоматическая установка ключевых кадров) создает ключевые кадры только для атрибутов, значения которых претерпели изменения.
4. Подвигайте ползунок таймера анимации, чтобы посмотреть на движение топора назад.
5. Установите ползунок таймера анимации на отметку кадра № 40 и переместите топор таким образом, чтобы его лезвие воткнулось в центр мишени.
Нужно учитывать, что в данном случае топор должен перемещаться вдоль осей X и У одновременно, в то время как для предвосхищающего движения вы перемещали его только вдоль оси X. Такая необходимость возникает из-за поворота оси вращения топора в процессе его движения. В данном случае речь идет о локальной оси, ориентация которой меняется вместе с ориентацией объекта. Вначале вы повернули топор на 45° назад, на такую же величину сместилась и его локальная ось.
При желании на этой стадии вы можете загрузить файл axe_v3.mb с прилагаемого к книге компакт-диска и сравнить свой результат с нашим.
К сожалению, после создания ключа анимации в кадре № 40 исходное движение топора назад изменилось. Подвигайте ползунок таймера анимации и рассмотрите его во всех подробностях.
Эта проблема связана с особенностями работы функции Auto keyframe (Автоматическая установка ключевых кадров). Исходные ключи анимации для преобразований перемещения и поворота были созданы в кадре № 1, затем в кадре № 15 вы переместили топор вдоль оси X и повернули его относительно оси Z.
Функция Auto keyframe (Автоматическая установка ключевых кадров) создала ключевой кадр для атрибута Translate X (Смещение по оси X) в кадре N° 15. Но чтобы привести топор в положение, указанное в кадре № 40, вам потребовалось перемещать его вдоль осей X и Уодновременно. В итоге ключи анимации для атрибута Translate Y (Смещение по оси Y) существуют только в кадрах № 1 и 40. Это и является причиной дополнительного движения между кадрами № 1 и 15.
Не снимая выделения с топора, откройте окно диалога Graph Editor (Редактор анимационных кривых), чтобы посмотреть, что же происходит с анимацией. Как вы уже убедились при выполнении упражнения с прыгающим мячиком, это крайне важный инструмент, и чем больше навыков работы с ним вы получите, тем лучше.
В окне диалога Graph Editor (Редактор анимационных кривых) вы увидите красные, зеленые и синие линии, идущие в разных направлениях. Чтобы увидеть анимационные кривые целиком, вам, скорее всего, потребуется поменять масштаб изображения. Управление отображением в окне диалога Graph Editor (Редактор анимационных кривых), как и в других окнах диалога и проекции, осуществляется с помощью комбинаций нажатия клавиши Alt и различных кнопок мыши.
Кроме того, для изменения масштаба изображения можно воспользоваться клавишами а и f. Щелкните в произвольной точке окна диалога Graph Editor (Редактор анимационных кривых), чтобы сделать его активным, и нажмите клавишу а, чтобы уместить в границах этого окна все анимационные кривые. Вы должны получить изображение, показанное на рис. 8.14.
Рис. 8.14. Анимационные кривые топора в окне диалога Graph Editor
Кривые в окне диалога Graph Editor (Редактор анимационных кривых) представляют собой зависимости значений положения и ориентации топора от номера кадра. Три оси, относительно которых совершаются упомянутые преобразования, обозначены красным, зеленым и синим цветами, а список атрибутов, для которых существуют ключи анимации, находится слева, на панели Outliner (Структура). Выделение имени объекта или его атрибута слева приводит к появлению соответствующей кривой справа.
Обратите внимание на отсутствие атрибутов Scale X (Масштабирование по оси X), Scale Y (Масштабирование по оси Y) и Scale Z (Масштабирование по оси Z). Это связано с тем, что для них не были созданы ключи анимации.
Также обратите внимание на то, что ключи анимации для атрибута Translate Y (Смещение по оси Y) существуют только в кадрах № 1 и 40. Именно поэтому топор опускается вниз между кадрами № 1 и 15. Этого эффекта не наблюдалось до появления кадра № 40.
6. Переместите первый ключ анимации атрибута Translate Y (Смещение по оси Y) из кадра № 1 в кадр № 15. Для этого выполните следующие действия:
Нажмите на клавишу w, активизируя инструмент Move (Переместить), или щелкните на значке Move Nearest Picked Key (Перемещение ближайшего к указателю ключевого кадра). Щелкните на кнопке Time Snap On/Off (Привязка ко времени вкл./выкл.), если она еще не нажата. Выделите ключ анимации в кадре № 1 и средней кнопкой мыши перетащите его вправо до отметки кадра № 15.
Подвигайте ползунок таймера анимации, и вы увидите, что предварительное движение топора назад осталось без изменений. При задании ключей анимации вручную вы избежали бы подобных проблем, однако функция Auto keyframe (Автоматическая установка ключевых кадров) настолько удобна, что имеет смысл работать именно с ней, редактируя затем полученный результат.
Теперь нужно создать для объекта траекторию, имеющую форму дуги.
7. Установите ползунок таймера анимации на отметку кадра № 27. Это середина траектории топора.
8. Слегка переместите топор в положительном направлении оси Y, используя зеленый управляющий вектор манипулятора.
Функция Auto keyframe (Автоматическая установка ключевых кадров) может создать в кадре № 27 два ключа анимации — для параметра Translate Y (Смещение по оси Y) и для параметра Translate X (Смещение по оси X), хотя из-за ограничения преобразования осью Fлогично было бы ожидать появления только одного ключа. Но так как топор в кадре № 27 слегка поворачивается, его положение может поменяться как относительно оси Y, так и относительно оси X глобальной системы координат.
9. В окне диалога Graph Editor (Редактор анимационных кривых) выделите расположенный в кадре №27 ключ атрибута Translate X (Смещение по оси X), если он был создан, и удалите его.
Теперь, чтобы сделать анимацию более достоверной, заставим топор совершить переворот в воздухе.
Установите ползунок таймера анимации на отметку кадра № 40, выделите топор и поверните его по часовой стрелке на 360°. Функция Auto keyframe (Автоматическая установка ключевых кадров) заменит старое значение в этом кадре новым. Вы увидите, что теперь анимационная кривая преобразования Rotate Z (Поворот относительно оси Z) резко уходит вниз. В окне диалога Graph Editor (Редактор анимационных кривых) выделите ключ анимации атрибута Rotate Z (Поворот относительно оси Z), расположенный в кадре № 40, активизируйте преобразование Move (Переместить) и средней кнопкой мыши перетащите ключ вниз за пределы окна.
СОВЕТ
Если в процессе перетаскивания ключа анимации средней кнопкой мыши удерживать клавишу Shift, перемещение будет ограничено одной осью.
Перемещая ключ анимации вниз, вы меняете значение параметра Rotate Z (Поворот относительно оси Z), что приводит к дополнительному вращению топора. Перед этой операцией сместите окно диалога Graph Editor (Редактор анимационных кривых) в сторону таким образом, чтобы видеть происходящее в окне проекции
Perspective (Перспектива). В процессе перетаскивания вы увидите, как топор меняет свою ориентацию. Заставьте его совершить еще один поворот.
Запустите воспроизведение анимации. Если топор перемещается слишком быстро, скорее всего, в раскрывающемся списке Playback Speed (Скорость воспроизведения) выбран вариант Play Every Frame (Воспроизводить каждый кадр). Откройте окно диалога Preferences (Параметры), щелкнув на кнопке Animation Preferences (Параметры анимации), расположенной справа от шкалы диапазонов, и выберите в этом списке вариант NTSC (30 fps) (NTSC (30 кадров/с)).
ПРИМЕЧАНИЕ
Изменение скорости воспроизведения анимации в окне диалога Preferences (Параметры) не влияет на ее продолжительность. Оно всего лишь влияет на скорость движения объектов на экране.
Осталось немного скорректировать временные интервалы, воспользовавшись для этого инструментом Graph Editor (Редактор анимационных кривых). Переместите все ключи анимации кадра № 15 на отметку кадра № 13. Затем перетащите ключ анимации атрибута Translate Y (Смещение по оси Y) из кадра № 27 в кадр № 19, а все ключи анимации из кадра № 40 перетащите в кадр № 25. Снова запустите воспроизведение анимации.
Продолжите выполнение предыдущего упражнения или загрузите файл axe_v4.mb с прилагаемого к книге компакт-диска.
Пока что наш топор не имеет веса. По крайней мере, ничто в сцене не указывает на то, что это тяжелый топор. Создать подобный эффект можно с помощью техник завершения движения (follow-through) и вторичного движения (secondary motion).
ПРИМЕЧАНИЕ
Завершением движения называется побочное действие, следующее немедленно за главным. Например, в момент приземления супергероя его колени слегка сгибаются, а сам он прогибается в талии, чтобы сохранить равновесие. Чем сильнее выражено вторичное движение, тем больше анимация напоминает мультфильм.
Вторичным движением называются небольшие перемещения отдельных элементов объекта, вызванные общим движением. Например, когда супергерой спрыгивает с крыши небоскреба, его шляпа начинает дрожать в потоке воздуха. Это волнообразное перемещение шляпы и называется вторичным движением.
В рассматриваемой сцене вторичным движением будет импульс, переданный мишени в момент столкновения. В результате мишень должна немного отклониться назад. Чем более проявленными вы сделаете завершение и вторичное движение, тем тяжелее будет выглядеть ваш топор. Однако не следует забывать и о чувстве меры.
Смоделировать завершающее движение можно в окне диалога Graph Editor (Редактор анимационных кривых):
1. Выделите топор, щелкнув на манипуляторе выделения, и откройте окно диалога Graph Editor (Редактор анимационных кривых).
2. Так как вам предстоит добавить три кадра в конец анимации, перейдите к кадру № 28.
3. В окне проекции Perspective (Перспектива) поверните топор вокруг оси Z еще на 1,5°.
4. Поворот, сделанный на предыдущем шаге, слегка перемещает топор вдоль оси Y, поэтому воспользуйтесь зеленым управляющим вектором манипулятора Move (Переместить), чтобы вернуть топор в положение, в котором он был до этого момента. Это приведет к еще более глубокому погружению лезвия в мишень. В окне диалога Graph Editor (Редактор анимационных кривых) при этом может появиться ключ анимации для атрибута Translate X (Смещение по оси X).
Пока что при воспроизведении анимации завершающее движение выглядит не очень хорошо. Топор сталкивается с мишенью и погружается в нее таким образом, как будто над движением работали два никогда не общавшихся друг с другом аниматора. Нужно сгладить переход между основным и вторичным движениями.
5. На панели Outliner (Структура) окна диалога Graph Editor (Редактор анимационных кривых) выделите строчку Rotate l (Поворот относительно оси Т). Оставшаяся в области просмотра кривая показана на рис. 8.15.
Рис. 8.15. Анимационная кривая атрибута Rotate Z после добавления вторичного движения
6. Сфокусируйтесь на трех последних ключах анимации. В данный момент кривая сначала уходит вниз, а потом значение выделенного атрибута немного возрастает.
Анимационные кривые в окне диалога Graph Editor (Редактор анимационных кривых) представляют собой сплайны Безье, которые являются гладкими по умолчанию. Поэтому при создании нового ключа анимации путем поворота топора на 1,5° кривая меняет свой вид. При этом сохранить как можно более гладкую форму кривой позволяет углубление, появляющееся на ней (рис. 8.16).
Рис. 8.16. Управляющие векторы
касательной к ключу анимации:
слева — вектор касательной
на входе в ключ; справа —
векторкасательной на
выходе из ключа
Нам нужно, чтобы топор при столкновении с мишенью слегка погрузился в нее и постепенно остановился. Для этого достаточно отредактировать кривизну сплайна с помощью управляющих векторов касательной к точке, расположенной в кадре № 25. Эти векторы появляются автоматически при выделении рассматриваемого ключа.
7. Выделите маркер управляющего вектора, расположенного на выходе из ключа, и средней кнопкой мыши перетащите его вверх, чтобы избавиться от углубления. Обратите внимание на то, как при этом меняется общая форма касательной.
8. Нажмите комбинацию клавиш Ctrl+z, чтобы отменить полученный результат. Нам нужно, чтобы перемещение одного управляющего вектора не влияло на состояние другого.
9. Выделите маркер управляющего вектора, расположенного на выходе из ключа, и щелкните на кнопке Break Tangents (Разрыв касательных) на панели инструментов окна диалога Graph Editor (Редактор анимационных кривых).
10. Переместите вверх управляющий вектор, расположенный на выходе из ключа, чтобы избавиться от углубления и получить в промежутке между кадрами № 25 и 28 прямую линию (рис. 8.17).
Рис. 8.17. Вид последнего сегмента анимационной кривой атрибута Rotate Z
Теперь для того чтобы топор постепенно прекратил движение после столкновения с мишенью, нужно сгладить последний сегмент анимационной кривой атрибута Rotate Z (Поворот относительно оси Z).
11. Выделите последний ключ анимации, чтобы сделать видимыми управляющие векторы его касательной, и щелкните на кнопке Flat Tangents (Плоская форма касательной) на панели инструментов окна диалога Graph Editor (Редактор анимационных кривых). Вид последнего сегмента кривой после этой операции показан на рис. 8.18.
Рис. 8.18. Результат приведения касательной к последнему ключу анимации к плоской форме
12. Отрегулируйте таким же способом управляющие векторы касательных к анимационным кривым атрибутов Translate X (Смещение по оси X) и Translate Y (Смещение по оси Y). Результат этого редактирования показан на рис. 8.19.
Рис. 8.19. Сглаженные кривые преобразования перемещения, приводящие к постепенному
замедлению движения
13. Запустите воспроизведение анимации, и вы увидите, как топор при столкновении с мишенью немного погружается в нее. Это и есть завершающее действие.
Осталось добавить еще один штрих.
Продолжите выполнение предыдущего упражнения или загрузите файл axe_v5.mb с прилагаемого к книге компакт-диска.
Не следует забывать о том, что мишень должна реагировать на удар брошенного в нее топора. Моделированием этого вторичного движения мы сейчас и займемся.
Движущийся объект обладает импульсом, который вычисляется как произведение массы объекта на его скорость. То есть чем тяжелее объект и чем быстрее он движется, тем больше его импульс. При столкновении импульс передается от одного объекта другому.
Например, при столкновении движущегося бильярдного шара с неподвижным первый передает часть своего импульса второму, приводя его в движение. А остаток импульса использует, чтобы срикошетировать в другую сторону.
В рассматриваемой сцене топор останавливается при столкновении с мишенью. То есть он передает ей весь свой импульс. Но так как мишень имеет намного большую массу, она практически не реагирует на удар. При этом чем более выраженной вы сделаете реакцию мишени на столкновение, тем более тяжелым будет казаться топор.
Начнем с того, что сделаем родительский узел топора дочерним по отношению к родительскому узлу мишени. Если этого не сделать, то после анимации мишени окажется, что топор забуксовал в воздухе, перед тем как в нее воткнуться. Но благодаря тому что дочерние узлы наследуют преобразования родительских, топор
повторит движение отклоняющейся мишени. Впрочем, операция формирования иерархической цепочки отразиться на результатах анимации топора.
Действуйте по следующей схеме:
1. В окне диалога Outliner (Структура) выделите узел Target и выберите в меню Modify (Изменить) команду Freeze Transformations (Зафиксировать преобразования). В результате все атрибуты преобразования мишени вернутся к заданным по умолчанию значениям.
ВНИМАНИЕ
Без предварительной фиксации преобразований родительского узла мишени перед добавлением в группу Target группы Ахе результат анимации топора изменится, что может привести к непредсказуемым результатам.
2. В окне диалога Outliner (Структура) перетащите средней кнопкой мыши узел Ахе на узел Target.
3. Установите ползунок таймера анимации на отметку кадра № 25, то есть на момент удара, выделите мишень и нажмите по очереди комбинации клавиш Shift+w и Shift+e.
4. Установите ползунок таймера анимации на отметку кадра № 28 и поверните мишень примерно на -2,5° вокруг оси Z, а также слегка переместите ее вверх и назад (рис. 8.20).
Рис. 8.20. Реакция мишени на столкновение с топором в окне проекции Front
5. Перейдите к кадру № 31 и верните мишени первоначальную ориентацию. Затем опустите ее до нулевой координаты по оси Ун еще немного сдвиньте назад вдоль оси X.
6. Установите ползунок таймера анимации на отметку кадра № 35 и повторите операции, описанные в шаге 4. Но при этом величины преобразований должны быть вдвое меньше.
7. Перейдите к кадру № 40 и повторите операции, описанные в шаге 5, но на этот раз сделав сдвиг по оси X совсем небольшим.
Наш вариант сцены вы найдете в файле axe_v6.mb на прилагаемом к книге компакт-диске.
Существует возможность увидеть траекторию перемещения объекта. Для этого выполните следующие действия:
1. Щелчком на маркере выделения выделите топор, а затем щелкните на квадратике, расположенном справа от команды Create Motion Trail (Создать траекторию движения) в меню Animate (Анимация). Появляющееся при этом окно диалога показано на рис. 8.21.
Рис. 8.21. Окно диалога Motion Trail Options
2. Установите переключатель Draw Style (Стиль рисунка) в положение Line (Линия), а затем убедитесь в наличии флажка Show Frame Number (Показывать номер кадра).
3. Щелкните на кнопке Apply (Применить), а потом на кнопке Close (Закрыть), чтобы закрыть окно диалога.
Траектория используется для точной регулировки движения объекта. При редактировании анимационной кривой в окне диалога Graph Editor (Редактор анимационных кривых) вы можете наблюдать в окне проекции, как меняется траектория перемещения объекта. Несколько раз запустите воспроизведение анимации, чтобы почувствовать движение.
4. Выделите топор и откройте окно диалога Graph Editor (Редактор анимационных кривых).
5. Сделайте траекторию движения топора более крутой. На панели Outliner (Структура) выделите строчку Translate Y (Смещение по оси Y), а затем выделите ключ анимации, расположенный в кадре № 19.
6. Переместите его примерно на 2 единицы вверх и посмотрите, как это повлияет на форму траектории.
7. Запустите воспроизведение анимации.
Обратите внимание на то, что теперь топор кажется еще тяжелее. Новая траектория движения показана на рис. 8.22.
Рис. 8.22. Отредактированная траектория движения топора
СОВЕТ
Чтобы скрыть номера кадров, выделите траекторию, нажмите комбинацию клавиш Ctrl+a и в окне диалога Attribute Editor (Редактор атрибутов) снимите флажок Show Frames (Показывать номера кадров). Чтобы удалить траекторию движения, выделите ее и нажмите клавишу Delete.
Альтернативой анимации по методу ключевых кадров является анимация вдоль траектории, при которой объект начинает двигаться по заранее созданной кривой.
Загрузите файл axe_v7.mb с прилагаемого к книге компакт-диска. Это сцена с полностью анимированным топором. Вы удалите ключи анимации, относящиеся к преобразованию перемещения, сохранив все остальное. Затем вы создадите траекторию и заставите топор двигаться вдоль нее:
1. Воспользуйтесь инструментом CV Curve (Управляющие точки кривой), чтобы в окне проекции Front (Вид спереди) скопировать траекторию движения топора. Убедитесь в том, что переключатель Curve Degree (Порядок кривой) в окне диалога Tool Settings (Параметры инструмента) установлен в положение 3 Cubic (Третий).
2. Обращайте внимание на номера кадров. Они помогут зафиксировать ключевые точки положения топора — например, изменение направления движения в кадре № 10 или столкновение с мишенью в кадре № 25. Выделите узел ахе. Затем выделите имена атрибутов Translate X (Смещение по оси X), Translate Y (Смещение по оси Y) и Translate Z (Смещение по оси Z) в окне диалога Channel Box (Окно каналов). Щелкните на них правой кнопкой мыши и выберите в появившемся меню команду Break Connections (Разорвать связи), чтобы удалить анимацию этих каналов. Если теперь запустить воспроизведение анимации, то вы увидите только переворот топора в воздухе и реакцию мишени на столкновение.
3. Траекторию движения пока удалять не надо. Она поможет вам с определением временных интервалов при движении топора по созданной для него траектории.
4. Выделите топор, затем при нажатой клавише Shift выделите траекторию движения и нажмите клавишу F2 для перехода в режим Animation (Анимация). Щелкните на квадратике, расположенном справа от команды Attach to Motion Path (Привязать к траектории движения) в меню Animate > Motion Paths (Анимация > Траектории движения).
5. В появившемся окне диалога снимите флажок Follow (Следовать) и щелкните на кнопке Attach (Присоединить).
Флажок Follow (Следовать) ориентирует объект на траектории таким образом, что его передняя часть всегда нацелена в направлении движения. Так как топор в первых кадрах начинает двигаться назад, наличие этого флажка заставит его повернуться дважды.
Теперь топор будет двигаться по созданной для него траектории. Вам остается только отрегулировать временные интервалы.
6. Выделите траекторию движения и сместите ее вертикально вниз. При этом она должна остаться на одной линии с новой кривой. Это потребуется при выборе временных интервалов.
Наш вариант готовой сцены находится в файле axe_path_vl.mb.
Двойники
В Maya существует возможность создания двойников, благодаря которой пользователь может наблюдать выделенный объект за несколько кадров до и после текущего положения. Например, выделите топор и выберите в меню Animate (Анимация) команду Ghost Selected (Двойники для выделенного). По умолчанию двойники выделенного объекта появляются за три кадра до и в трех кадрах после текущего положения. Отменить полученный результат можно с помощью команды Unghost Selected (Убрать двойников выделенного).
7. Выделите топор и откройте окно диалога Graph Editor (Редактор анимационных кривых). Вы увидите, что анимационная кривая преобразования Rotate Z (Поворот относительно оси Z) по-прежнему на своем месте, в то время как кривые, соответствующие преобразованию перемещения, отсутствуют. Щелкните на строчке motionPathl в разделе INPUTS (Входные данные) окна диалога Channel
Box (Окно каналов), и в окне диалога Graph Editor (Редактор анимационных кривых) появится кривая U Value (Значение по U-координате) атрибута Motion Path (Траектория движения). Выделите строчку U Value (Значение по U-координате) и нажмите клавишу а, чтобы сфокусироваться на данной кривой.
8. Эта кривая занимает диапазон от кадра № 1 до кадра № 60 и представляет собой отрезок прямой. Так как столкновение топора с мишенью происходит в кадре № 25, переместите последний ключ анимации из кадра № 60 в кадр № 25.
9. Отредактируем также время движения топора назад. Установите ползунок таймера анимации на отметку кадра № 4 и с помощью инструмента Insert Keys (Вставить ключи), кнопка которого находится на панели инструментов окна диалога Graph Editor (Редактор анимационных кривых), создайте ключ анимации в этом кадре. Для этого достаточно щелкнуть средней кнопкой мыши в нужном месте анимационной кривой.
10. Перетащите новый ключ анимации в кадр № 10. Именно в этом кадре изначально планировалось завершить движение топора назад.
11. Подвигайте ползунок таймера анимации, чтобы оценить полученный результат. Все выглядит вполне достоверно. Имеет смысл только слегка подкорректировать положение управляющих векторов касательных, но, по сути, вы получили точно такое же движение, как и в предыдущем случае.
Готовый вариант сцены находится в файле axe_path_v2.mb на прилагаемом к книге компакт-диске.
Хорошим упражнением по анимации вдоль траектории является моделирование атома. Нарисуйте вокруг ядра кривые, представляющие собой траектории движения электронов, и заставьте электроны двигаться по ним. Кроме того, попробуйте воспроизвести модель Солнечной системы, созданную вами в главе 3, но на этот раз используя анимацию вдоль траектории.
В примере с брошенным в мишень топором вы продолжили знакомство с послойной анимацией. Сначала было смоделировано основное движение топора, а затем в окне диалога Graph Editor (Редактор анимационных кривых) к нему были добавлены основные детали. Создание дополнительных ключей анимации позволило воспроизвести завершающее движение топора, а также вторичное движение. Благодаря последнему нам удалось создать впечатление наличия у топора веса.
Если бы после столкновения мишень не начала двигаться, зрителю показалось бы, что топор ничего не весит. Впрочем, и слишком сильная реакция мишени также повредила бы достоверности сцены. Еле заметные нюансы способны украсить даже простейшую анимацию.
Кроме того, вы познакомились еще с одним методом анимации в Maya — анимацией вдоль траектории и еще раз получили наглядное подтверждение того, что в Maya одна и та же задача может быть решена различными способами. Вам остается только найти наиболее предпочтительный.
Мало создать объект и назначить ему материалы — его в большинстве случаев требуется еще и анимировать. Перед этим обычно тщательно проверяется группировка отдельных элементов, расположение опорных точек и вид геометрии.
Впрочем, существует также практика анимации аппроксимирующего объекта, то есть простой модели, которая впоследствии заменяется усложненной версией. С процессом замещения вы познакомитесь в следующем упражнении. Вам предстоит заменить топор алебардой, которой вы назначали материалы в предыдущей главе, а кроме того узнать, как скопировать анимацию с одного объекта на другой.
1. Загрузите файл axe_v7.mb с прилагаемого к книге компакт-диска.
2. Выберите в меню File (Файл) команду Import (Импорт).
3. Найдите ваш собственный файл с готовой моделью алебарды или воспользуйтесь файлом axe_texture_C.mb из папки ChapterFHes\Axe_Model\scenes прилагаемого к книге компакт-диска. В начале координат существующей сцены появится алебарда. Обратите внимание на то, что при этом был импортирован и источник рассеянного света.
Чтобы алебарда унаследовала все свойства топора, выполните следующие настройки:
1. Переместите опорную точку алебарды в место расположения опорной точки топора. Это гарантирует аналогичное вращение алебарды при броске.
2. Выделите алебарду и поверните ее на 180° вокруг оси Y.
3. Верните алебарду в начало координат. Нужно, чтобы рукоятка совпала с габаритным контейнером узла размещения текстуры.
4. Теперь требуется зафиксировать преобразования алебарды, чтобы вернуть всем ее атрибутам заданные по умолчанию значения. Но так как узел размещения текстуры Wood (Дерево) находится в группе ахе, фиксация преобразований вернет к заданным по умолчанию значениям и его атрибуты. Вы можете попробовать выбрать в меню Modify (Изменить) команду Freeze Transformations (Зафиксировать преобразования), чтобы посмотреть, что из этого выйдет, но потом обязательно отмените полученный результат. Для обхода этого ограничения на время выведем узел place3dTexture2 из состава группы ахе. Для этого достаточно перетащить его средней кнопкой мыши за пределы этой группы. Затем выберите в меню Modify (Изменить) команду Freeze Transformations (Зафиксировать преобразования) и средней кнопкой мыши верните узел placeSdTextureZ в группу ахе.
5. Выберите в меню Display (Отображение) команду Component Display > Selection Handles (Отображение компонентов > Манипуляторы выделения), чтобы сделать видимым манипулятор выделения алебарды.
6. Установите ползунок таймера анимации на отметку кадра № 1. Выделите исходный топор, откройте окно диалога Graph Editor (Редактор анимационных кривых) и выберите в меню Edit (Правка) этого окна команду Сору (Копировать).
ВНИМАНИЕ
При копировании и вставке кривых в окне диалога Graph Editor (Редактор анимационных кривых) нужно вернуть ползунок таймера анимации на отметку первого кадра. В противном случае анимация начнется с того кадра, на котором был установлен ползунок.
7. Выделите алебарду и выберите в меню Edit (Правка) окна диалога Graph Editor (Редактор анимационных кривых) команду Paste (Вставить). Топор и алебарда будут немного смещены друг относительно друга (рис. 8.23).
8. Совместите алебарду с топором. Так как она уже анимирована, переместите ее с помощью анимационных кривых. Например, выделите кривую преобразования Translate Y (Смещение по оси Y) и переместите немного вверх, пока не совместите лопасти.
9. Выделите кривую преобразования Translate X (Смещение по оси X) и переместите ее таким образом, чтобы рукоятка топора совпала с рукояткой алебарды (рис. 8.24).
Рис. 8.24. Результат выравнивания осей топора и алебарды
Рис. 8.23. Вид алебарды рядом с топором
Подвигайте ползунок таймера анимации, чтобы посмотреть на полученный результат. Легко заметить, что движение алебарды отличается от движения топора только в самом конце, в момент удара о мишень. Как вы помните, топор в свое время был сделан дочерним объектом по отношению к узлу Target. Именно таким способом было создано завершающее движение. Проделайте ту же операцию с алебардой.
Нашу версию сцены вы можете посмотреть, загрузив файл axe_v8.mb с прилагаемого к книге компакт-диска.
10. Теперь, когда вы убедились, что алебарда движется корректно, удалите топор.
Теперь вернемся к модели катапульты, созданной вами в главе 5, чтобы заставить ее двигаться.
Рис. 8.25. Вид объекта Catapult в окне диалога Outliner
Создайте новый проект с именем Catapult_Anim или скопируйте уже готовый проект с компакт-диска. Загрузите файл catapult_anim_v01.mb, содержащий готовую модель катапульты.
В процессе построения модели важно помнить о возможности ее дальнейшей анимации. В частности, правильно выстроенные иерархические цепочки могут в дальнейшем значительно облегчить вам жизнь. Именно поэтому в процессе создания катапульты мы использовали окно диалога Outliner (Структура) для группировки объектов сцены. Теперь пришло время проверить полученный результат, а заодно освежить в памяти структуру катапульты.
На рис. 8.25 показана структура, которую объект Catapult должен иметь в данный момент. Она довольно логична. Все движущиеся части механизма имеют значимые имена и сгруппированы друг с другом.
Если в вашем файле элементы катапульты пока не систематизированы, пришло время этим заняться. Присвойте им значимые имена и объедините в иерархические цепочки.
Как и в случае с моделью Солнечной системы из главы 3, вам нужно убедиться в правильности расположения опорных точек всех элементов группы.
Рис. 8.26. На стадии моделирования важно правильно разместить опорные точки отдельных
элементов объекта
Например, опорная точка группы Arml должна располагаться на конце рычага (рис. 8.26). Ведь именно вокруг этой точки будет осуществляться вращение при броске.
Вам предстоит анимировать три группы, поэтому внимательно проверьте иерархические связи и расположение опорных точек всех элементов модели.
На рис. 8.27 показано расположение опорных точек у родительских узлов еще двух подлежащих анимации групп.
Рис. 8.27. Опорные точки групп Rear_Wheel и Front_Wheell, центрированные по оси
Элементы лебедки также должны быть объединены в одну группу, а их опорная точка центрирована (рис. 8.28).
Опорная точка лебедки должна располагаться в ее геометрическом центре. Впрочем, результат действия команды Center Pivot (Центрировать опорную точку) из меню Modify (Изменить) зависит от расположения входящих в группу элементов. И в некоторых случаях устанавливать положение опорной точки приходится вручную.
Неправильное расположение опорной точки становится очевидным в процессе анимации. Это проявляется, например, в некорректном вращении объектов.
Для получения дополнительного опыта в области группировки объектов и создания иерархических цепочек можно разрушить все имеющиеся связи, воспользовавшись командой Ungroup (Разорвать связь) из меню Edit (Правка), или загрузить файл catapult _anim_v01_B.mb с прилагаемого к книге компакт-диска, в котором эта работа сделана за вас. После этого попытайтесь самостоятельно вернуть катапульту в исходный вид.
Манипуляторы выделения облегчают процесс выделения групп, сокращая тем самым время работы над сценой. Поэтому имеет смысл сделать их видимыми.
Рис. 8.28. элементы, лебедки сгруппированы друг с другом, а опорная точка группы центрирована, чтобы обеспечить корректное вращение
Выделите лебетку и выберите в меню Display (Отображение) команду Component Display > Selection Handles (Отображение компонентов > Манипуляторы выделения). Затем выделите задание и иередние колеса, а также рычаг катапульты и проделайте ту же операцию.
Действие манипуляторов выделения зависит от порядка выделения в Maya Этот порядок определяет приоритет выделения объектов. Так как вы сделали видимыми манипуляторы четырех узлов катапульты, попытка выделить катапульту с помощью рамки приведет к выделению только этих узлов. Это связано с более высоким приоритетом манипуляторов по сравнению с остальными объектами сцены-
Анимация большинства элементов катапульты довольно очевидна. Простое преобразование поворота заставит вращаться колеса. Перемещение родительского узла всей иерархии заставит катапульту двигаться. Поворот лебедки приведет рычаг в боевое положение.
Остается понять как анимировать сам рычаг. Установим временные интервалы для движения лебедки, а уже н их основе запрограммируем перемещение рычага:
1. Выделите группу Winch и убедитесь в том, что ползунок таймера анимации стоит на отметке первого кадра. Создайте ключ анимации для атрибута Rotate X (Поворот относительно оси X). Для этого выделите имя данного атрибута в окне диалога Channel Box (Окно каналов), щелкните на нем правой кнопкой мыши и выберите в появившемся меню команду Key Selected (Установить ключ у выделенного параметра).
2. Установите ползунок таймера анимации на отметку кадра № 60.
3. Несколько раз поверните лебедку назад или просто введите в поле Rotate X ( Поворот относительно оси X) значение -400.
4. Откройте окно диалога Graph Editor (Редактор анимационных кривых) и поменяйте касательные к ключам анимации таким образом, чтобы вращение начиналось довольно быстро, но по мере того как рычаг катапульты отходит назад, замедлялось. К сожалению, в нашей модели отсутствует канат, соединяющий рычаг и лебедку. Но так как анимация подобного объекта представляет собой слишком сложную для начинающих задачу, нам придется обойтись без него. Мы всего лишь представим, как этот канат постепенно натягивается, отводя рычаг.
5. Чтобы подчеркнуть, насколько тяжело лебедка движется в конце, создадим на кривой еще один ключ анимации. Щелкните на кнопке Insert Keys (Вставить ключи), расположенной на панели инструментов окна диалога Graph Editor (Редактор анимационных кривых). После этого указатель мыши примет форму креста.
6. Щелкните средней кнопкой мыши на кривой в районе кадра № 42 (рис. 8.29). Это будет проще сделать при включенном режиме привязки к кадру, который активизируется щелчком на кнопке Time Snap On/Off (Привязка ко времени вкл./выкл.).
Рис. 8.29. Вставка ключа анимации в кадр № 42
7. Переместите новый ключ анимации вниз, чтобы сделать завершающий участок кривой более пологим. При этом нужно следить, чтобы на кривой не появилось минимума. Ведь изменение направления кривой означает изменение направления вращения. С помощью управляющих векторов касательной сгладьте кривую. Можно также смоделировать небольшой откат лебедки, вставив в кадр № 70 еще один ключ анимации (рис. 8.30).
Теперь пришло время на базе временных интервалов движения лебедки запрограммировать перемещение рычага катапульты. Так как рычаг поддерживается скобой, а в основе действия катапульты лежит процесс натяжения, требуется изогнуть рычаг назад.
Рис. 8.30. Программирование постепенного замедления движения лебедки с откатом в конце
Эта задача будет решена с помощью деформатора. С этим инструментом вы уже знакомы по упражнениям главы 4, но в данном случае деформатор нужно будет анимировать:
1. Нажмите клавишу F2 для перехода в режим Animation (Анимация). Выделите группу Axel и выберите в меню Deform (Деформация) команду Create NonLine-ar > Bend (Создать нелинейный > Изгиб). В сцене появится деформатор Bend (Изгиб), расположенный перпендикулярно рычагу. Выделите его и поверните таким образом, чтобы он был выровнен с осью рычага.
2. Щелкните на строчке bendl в разделе INPUTS (Входные данные) окна диалога Channel Box (Окно каналов) и введите в поле Curvature (Кривизна) значение 0,5. В результате катапульта окажется изогнутой вбок. Поверните деформатор таким образом, чтобы изгиб был направлен вниз.
3. Нам нужно, чтобы сгибалась только верхняя часть, причем изгиб проиходил в области поддерживающей скобы. Перемещайте деформатор вниз, пока центральная часть не будет выровнена со скобой.
4. Чтобы устранить изгиб в нижней части, введите в поле Low Bound (Нижняя граница) значение 0. Корзина также не должна сгибаться, поэтому введите в поле High Bound (Верхняя граница) значение 0,9.
ПРИМЕЧАНИЕ
Атрибуты Low Bound (Нижняя граница) и High Bound (Верхняя граница) определяют область действия деформатора. Параметр Envelope (Огибающая) определяет общее влияние деформатора на объект. В частности, если этот параметр равен 0, объект сохраняет первоначальную форму.
5. Начнем создание ключей анимации для рычага. Установите ползунок таймера анимации на отметку кадра № 1 и введите в поле Curvature (Кривизна) значение 0. Выделите строчку Curvature (Кривизна) в окне диалога Channel Box (Окно каналов), щелкните на ней правой кнопкой мыши и выберите в появившемся меню команду Key Selected (Установить ключ у выделенного параметра).
6. Установите ползунок таймера анимации на отметку кадра № 60 и введите в поле Curvature (Кривизна) значение 0,8. Если у вас включена функция Auto keyframe (Автоматическая установка ключевых кадров), ключ анимации появится автоматически. В противном случае вам придется создать его вручную. Положение рычага катапульты в кадре № 60 показано на рис. 8.31.
7. Если теперь запустить воспроизведение анимации, вы увидите, что скорость вращения лебедки не совпадает со скоростью сгиба рычага. Решить эту проблему можно редактированием анимационной кривой, поэтому откройте окно диалога Graph Editor (Редактор анимационных кривых).
8. На кривой параметра Curvature (Кривизна) создайте еще один ключ анимации, расположив его в кадре № 42. Переместите этот ключ таким образом, чтобы анимационные кривые лебедки и рычага имели одинаковую кривизну.
9. Создайте еще один ключ анимации, поместив его в кадр № 70. Он будет отвечать за движение рычага при откате лебедки. Параметр Curvature (Кривизна) в этом кадре должен иметь значение 0,79 или 0,8. Полученная в итоге анимационная кривая показана на рис. 8.32.
Рис. 8.31. Результат действия деформатора Bend в кадре № 60
Рис. 8.32. Постарайтесь совместить относительную кривизну анимационных кривых
лебедки и рычага
10. Установите ползунок таймера анимации на отметку кадра №90, присвойте параметру Curvature (Кривизна) значение 0 и создайте ключ анимации. Затем переместите ползунок на отметку кадра № 97 и введите в поле Curvature (Кривизна) значение 0,82, чтобы создать упреждающее движение. В кадре № 103 рычаг катапульты должен прогнуться в другую сторону, поэтому, установив ползунок на отметку этого кадра, введите в поле Curvature (Кривизна) значение -0,8.
11. Теперь воспользуемся преобразованием поворота, чтобы создать более впечатляющее зрелище. В сотом кадре рычаг катапульты должен располагаться практически вертикально. Выделите группу Arml и в первом кадре создайте ключ анимации для параметра Rotate X (Поворот относительно оси X). Установите ползунок таймера анимации на отметку кадра № 105 и поверните рычаг на 45° от-
носительно оси X. Если в исходном положении рычаг повернут на 30°, значит, в кадре № 105 параметру Rotate X (Поворот относительно оси X) нужно присвоить значение 75.
12. Если теперь запустить воспроизведение анимации, окажется, что изгиб рычага выглядит несколько странно. Дело в том, что деформатор не перемещается вслед за рычагом, соответственно, меняется и его действие. Чтобы решить данную проблему, установите ползунок таймера анимации на отметку кадра № 100 и сделайте деформатор дочерним объектом по отношению к узлу Arml.
13. Создайте дополнительные ключи анимации для атрибута Curvature (Кривизна) деформатора и атрибута Rotate X (Поворот относительно оси X) рычага катапульты таким образом, чтобы рычаг лег на поддерживающую скобу и после небольшого колебания вернулся в вертикальное положение. Итоговая анимационная кривая деформатора показана на рис. 8.33. Анимационная кривая, определяющая вращение рычага, изображена на рис. 8.34. Эффект замирания рычага в вертикальном положении достигается с помощью плоской формы касательной, с которой вы уже знакомы по упражнению, посвященному анимации мяча.
Рис. 8.33. Анимационная кривая параметра Curvature деформатора Bend заставляет рычаг катапульты совершать колебания до момента остановки движения
Рис. 8.34. Анимационная кривая параметра Rotate X объекта Arm
Наш вариант сцены вы можете посмотреть, загрузив файл catapult_anim_v02.mb с прилагаемого к книге компакт-диска.
Дальнейшая анимация катапульты остается на ваше усмотрение. Вот несколько заключительных советов:
В момент отпускания рычага лебедка должна повернуться, как будто к ней привязан канат. Заставьте катапульту покачиваться взад и вперед, смоделировав тем самым вторичное движение, обусловленное отпусканием рычага. Запрограммируйте перемещение катапульты по дороге. Нарисуйте и смоделируйте свою собственную катапульту и самостоятельно анимируйте ее.
Анимация сложных систем обычно выполняется послойно. Например, в случае с катапультой сначала были анимированы ее отдельные части, а потом работа пошла над движением объекта в целом.
Этот принцип использовался и в более простых упражнениях, например, при анимации прыгающего мяча и брошенного в мишень топора. Проблемы решались по мере их возникновения; начав с общей анимации объекта, вы постепенно добавляли такие детали, как иллюзия наличия у топора массы. Последним штрихом было редактирование временных интервалов.
Вы узнали о том, как поменять метод анимации объекта, заменив, например, анимацию по методу ключевых кадров анимацией вдоль траектории. Кроме того, вы узнали, как можно заместить анимированный объект более совершенной моделью. Для успешного создания анимации требуется умение наблюдать за окружающими объектами, интерпретировать результаты своих наблюдений и воплощать их в жизнь на экране компьютера.