Сайт о телевидении

Сайт о телевидении

» » Добавим растяжение и сжатие

Добавим растяжение и сжатие

Теперь нужно создать набор ключевых кадров для различных положений сферы. В главе 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 (Редактор анимационных кривых) и поэкспериментируйте с анимационной кривой.

Откройте файл и начните с настройки рабочего пространства для данной анимации.

1. Откройте имеющийся на компакт-диске файл BallSetup.mb. В нем содер­ жится простая анимационная оснастка мяча, на примере которой будут рас­ смотрены некоторые основные концепции установки ключевых кадров.

2. Выберите пункт меню Windo w => Settings/Preference s => Preference s (Окно => Параметры/Предпочтения => Предпочтения). Предпочтения позволяют на­ строить рабочее пространство и, что более важно, временную шкалу (timeline) анимации. Рассмотрим параметры, которые следует изменить.

3. Выбрав категорию Interface (Интерфейс), установите для переключателей Ope n Attribute Editor (Открывать редактор атрибутов) и Ope n Tool Setting s (Открывать параметры инструмента) значение In Separat e Windo w (В от­ дельном окне), а для переключателя Ope n Layer Editor (Открывать редактор слоев) выберите значение In Main Maya Windo w (В главном окне Maya).

4. Выбрав категорию UI Element s (Элементы пользовательского интерфейса), установите отображение всех видимых элементов пользовательского интер­ фейса (Visible UI Elements) , установив все флажки указанного раздела. В разделе Editor in Main Windo w (Редактор в главном окне) установите фла­

жок Sho w (Показать), а в качестве самого редактора выберите Channe l Box/Layer Editor (Панель каналов/Редактор слоев).

5. Выбрав категорию Settings (Параметры) в разделе Workin g Units (Используемые единицы), в качестве единицы времени (Time) выберите NTS C (NTSC ). Эта частота кадров подходит для телевидения. При работе с файлами, которые имеют разрешающую спо­ собность кинопленки, следует установить кинематографическую частоту Film (Филь м ).

6. В разделе Settings/Animatio n (Параметры/Анимация) установите флажок Auto Key (Автоматическая установка ключевых кадров). В разделе Tangent s (Касательные) для параметров Default In Tangen t (Входящая касательная по умолчанию) и Default Out Tangen t (Исходящая касательная по умолчанию) выберите значение Clampe d (С фиксацией). Касательные и их связь с ани­ мацией в Майя обсуждаются ниже, при рассмотрении редактора анимацион­ ных кривых (Graph Editor).

7. Выбрав категорию Settings/Timelin e (Параметры/Временная шкала), уста­ новите для параметров Playbac k Start/End (Начало/Конец воспроизведе­ ния) значения 0 и 90 соответственно; а для параметров Animatio n Start/En d (Начало/Конец анимации) - значения 0 и 120. Выберите для переключате­ ля Height (Высота) значение 1х (Одна строка), а для переключателя Ke y Ticks (Отметки ключевых кадров) - значение Active (Активно). Установите ширину отметки равной 2. В разделе Playbac k (Воспроизведение) установи-

те параметр Update View (Обновлять представление) в значение Active (Активно). Это задаст обновление только текущего представления, ускоряя тем самым процесс воспроизведения анимации. Для переключателя Looping (Зацикливание) выберите значение Continuou s (Непрерывно), для параметра Playbac k Spee d (Скорость вос­ произведения) - значение real-tim e (В реальном времени ). Все это обеспечит наиболее точные параметры воспроизведения рассматри­ ваемого файла. Не забывайте, что при наличии импортированного и воспроизводи­ мого звукового сопровождения следует использовать именно реальный масштаб времени.

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

Отскакивающий мяч

Создание отскакивающего мяча кажется простой задачей, однако это не просто переме­ щение мяча вверх и вниз с одновременным его масштабированием. Файл BallSetup .m b содержит относительно простую сцену, в которой можно разделять движение относительно различных осей, а также использовать предоставляемый Maya деформатор сжатия (squash deformer) для создания более убедительного деформирования мяча при отскоках. Давайте реализуем отскок.

1. Установите индикатор текущего времени на кадр 1.

2. Выделите кривую ControlBoxCrv, а затем щелчком мыши выделите атрибут Bounce_Down_Up. Этот атрибут связан с каналом translateY управляющим вер­ тикальным движением мяча группы UpDnGrp. Более подробная информация о свя­ зывании атрибутов приведена в главе 8, "Постановка и оснащение персонажа".

3. Чтобы переместить мяч вверх по оси Y, щелкните в области просмотра средней кнопкой мыши справа от мяча и перемещайте его до тех пор, пока в поле атрибута Bounce_Down_U p не отобразится значение 7.

4. Щелкните правой кнопкой мыши на атрибуте Bounce_Down_U p и в появившемся контекстном меню выберите пункт Key Selecte d (Установить ключевой кадр для выбранного). В результате ключевой кадр будет установлен для данного специаль­ ного атрибута (custom Attribute). Теперь кадр 7 должен иметь оранжевый фон, озна­ чающий, что его атрибут участвует в анимации.

5. Перейдите к кадру 15, щелкнув на нем.

6. Так же как и на шаге 4, установите ключевой кадр для атрибута Bounce_Down_Up.

7. Перейдите к кадру 8.

8. Установите значение атрибута Bounce_Down_U p равным 0. Поскольку кнопка Aut o Key (Автоматическая установка ключевых кадров) нажата (кнопка с красным клю­ чом справа), при изменении значения атрибута ключевой кадр будет установлен ав­ томатически.

9. Воспроизведите анимацию вручную (с помощью ползунка времени).

10. Нажав клавишу , выделите мышью на ползунке времени кадры от 1 до 14, чтобы выделить этот диапазон (рис. 7.4).

11. . Чтобы ограничить ползунок времени периодом отскока мяча, щелкните на нем пра­ вой кнопкой мыши и в появившемся контекстном меню выберите пункт Set rang e To => Selecte d (Установить диапазон равным => Выбранному).

12. Чтобы просмотреть анимацию, щелкните на кнопке Play Forwar d (Воспроизводить в прямом направлении). Чтобы остановить воспроизведение, либо еще раз щелкните на той же самой кнопке (которая теперь стала кнопкой Sto p Play (Остановить вос­ произведение)), либо нажмите клавишу .

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

1. На ползунке времени перейдите к кадру 2.

2. Выделите атрибут Bounce_Down_U p кривой ControlBoxCr v и, чтобы установить на этом кадре разделяющий ключевой кадр, щелкните на атрибуте правой кнопкой мыши и в появившемся контекстном меню выберите пункт Breakdow n Selecte d (Установить разделяющий ключевой кадр для выбранного). При этом отметка соот­ ветствующего ключевого кадра на ползунке времени станет зеленой.

3. Чтобы выделить разделяющий ключевой кадр, выделите кадр 2, нажав клавишу

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

5. Чтобы включить привязку ко времени, щелкните на кнопке Tim e Sna p On/Off (Включить/Выключить привязку по времени). Это гарантирует, что все ключевые кадры будут привязаны к целочисленным значениям кадров, что в данном случае весьма полезно.

6. Выделите и переместите разделяющие ключевые кадры вниз, до тех пор, пока конец тангенциального манипулятора не сравняется с вершиной кривой (см. рис. 7.10, справа).

7. Воспроизведите анимацию и посмотрите, на что похож окончательный результат.

В качестве упражнения попытайтесь освободить весовые коэффициенты касательных указанных разделяющих ключевых кадров и переместить их вверх на графике; затем пе­ реместите тангенциальные манипуляторы касательных вниз, где они были перед этим. Но сначала поместите в буфер копию кривой. В этом случае, используя команду Curves => Swa p Buffer Curve (Кривые => Заменить кривую в буфере), можно будет посто­ янно переключаться назад и вперед между двумя кривыми в буфере, чтобы увидеть эф­ фект от изменений.

Добавим растяжение и сжатие

К сожалению, подпрыгивающему мячику не хватает реализма, делающего ани- мацию наглядной и интересной. Поэтому придадим мячику некоторые элементы растяжения и сжатия, которые сделают анимацию более реалистичной. Ball – SquashStretch кривой ControlBoxCr v - это дополнительный атрибут, связанный установленным управляемым ключом с деформирующим мяч нелинейным деформато- ром сжатия. Используем этот атрибут, чтобы деформировать мяч, придав при этом от­ скоку некоторое дополнительное преувеличение или удар. Создайте сжатие и растяже­ ние так, как описано ниже. Откройте имеющийся на компакт-диске файл Ball –

BounceOlSquashStart.mb, и приступим.

1. Чтобы видеть, как формируется кривая по мере изменения значения атрибута

BallSquashStretch, убедитесь, что редактор анимационных кривых открыт.

2. Перейдите к кадру 1.

3. Выделите атрибут BallSquashStretc h и установите ключевой кадр только для этого атрибута.

4. Немного сожмите мяч, перемещая по области просмотра мышь с нажатой средней кнопкой до тех пор, пока в поле вывода атрибута BallSquashStretc h не появится значение – 0.6.

5. Нажав клавишу <К> , щелкните средней кнопкой мыши на кадре 21 в редакторе анимационных кривых.

6. Установите ключевой кадр для атрибута BallSquashStretch . Перемещение мыши с нажатой средней кнопкой и одновременно нажатой клавишей <К > изменяет инди­ катор текущего времени, не изменяя при этом ни область просмотра, ни значения в панели каналов. Поэтому установка ключевого кадра на кадре 21 по существу копи­ рует кадр 1 в этот кадр.

7. Перейдите к кадру 7, на котором был установлен разделяющий ключевой кадр, и ус­ тановите значение атрибута BallSquashStretc h равным 0. Мяч станет совершен­ но круглым.

8. Нажав клавишу <К> , щелкните средней кнопкой мыши на кадре 15 и установите ключевой кадр на канале атрибута BallSquashStretch.

9. Перейдите к кадру 10 (кадр перед ударом мяча о землю) и растяните мяч, установив значение атрибута BallSquashStretc h примерно равным 1. 6.

10. Нажав клавишу <К> , щелкните средней кнопкой мыши на кадре 13. Установите ключевой кадр на канале BallSquashStretch, чтобы скопировать в этот кадр его значение из кадра 11.

11. . Чтобы переместить индикатор текущего времени в кадр удара мяча о землю, нажав клавишу <К> , щелкните средней кнопкой мыши на кадре 11.

12. Сожмите мяч, установив значение атрибута BallSquashStretc h равным -1. 6.

13. Чтобы кривая в течение анимации повторялась бесконечно, в редакторе анимацион­ ных кривых выберите пункт меню Curves => Post lnfinity => Cycle (Кривые => Постбесконечность => Цикл).

14. Чтобы сгладить кривую, выделите начальный и конечный ключевые кадры атрибута BallSquashStretc h и установите для них параметр Tangent s (Касательные) в значение Flat (Горизонтально).

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

16. Сохраните получившийся файл.

О Т К Л О Н И М его немного от вертикали!

Следующее планируемое действие выходит за рамки реальности: отклоним в от- скоке мяч от вертикали, используя атрибут Lean_Bck_Fw d кривой Control – BoxCrv. Это придаст мячу такой вид, как будто он поднимает себя в воздухе. Но в пер­ вую очередь, чтобы можно было правильно установить отклонение, необходимо пере­ местить мяч вперед. Продолжите работу с файлом, созданным ранее, или откройте файл

BallBounceOlLeanStart.mb.

1. В панели каналов на кадре 1 установите ключевой кадр для атрибута Control –

BoxCrv.translateZ .

2. Переместите индикатор текущего времени на кадр 63.

Точечная форма записи (.) позволяет быстро указать конкретный канал конкретного объекта. Таким образом, "установите ключевой кадр для атрибута ControlBoxCrv . translateZ" озна­ чает: "Выделите объект ControlBoxCrv. Затем в панели каналов щелкните на атрибуте translateZ, щелкните на нем правой кнопкой мыши и в появившемся контекстном меню выбе­ рите пункт Key Selected (Установить ключевой кадр для выбранного)".

3. Перемещайте кривую ControlBoxCr v вперед по оси Z до тех пор, пока значение со­ ответствующего канала не станет равным 8. При нажатой кнопке Aut o Ke y (Автоматическая установка ключевых кадров) ключевой кадр будет установлен ав­ томатически. Если этого не произошло, установите ключевой кадр для атрибута translateZ. А затем щелкните на кнопке Aut o Key.

4. Вернитесь к кадру 1. Обратите внимание, что на ползунке времени видны все ключе­ вые кадры. Используем это далее как преимущество.

5. Установите ключевой кадр на канале ControlBoxCrv.Lean_Bck_Fwd, значение которого должно быть равным 0.

6. Перейдите к кадру 6 или 7. Так как мяч опускается в падении, отклоните его немного назад, установив значение атрибута Lean_Bck_Fw d равным примерно -8.5.

7. Перейдите к кадру 10, который непосредственно предшествует отскоку и моменту наибольшего растяжения, и подчеркните отклонение, установив значение атрибута Lean_Bck_Fw d равным примерно -9.

8. В кадре 11, где происходит удар, установите значение атрибута Lean_Bck_Fw d рав­ ным 0.

9. В кадре 12 отклоните мяч вперед, установив значение атрибута Lean_Bck_Fw d рав­ ным 9.

10. В кадре 15 установите значение атрибута Lean_Bck_Fw d равным примерно 16.

11. . В кадре 21 завершите движение, установив значение атрибута Lean_Bck_Fw d рав­ ным 0.

12. В редакторе анимационных кривых выделите кривую атрибута Lean_Bck_Fwd, щелкнув на ней в области просмотра левой кнопкой мыши, и выберите пункт меню Curves => Post infinity => Cycle (Кривые => Постбесконечность => Цикл).

13. Выберите для этой кривой пункт меню Vie w => Infinity (Вид => Бесконечность).

14. Чтобы увидеть результат, воспроизведите получившуюся анимацию.

Он… ОЖИЛ! Действительно, внесенные здесь изменения превратили анимацию от­ скакивающего мячика из скучного механического движения в эластичный, полный ин­ дивидуальности реалистичный виртуальный объект. Увеличение отклонения (т.е. атри­ бута Lean_Bck_Fwd) на восходящей стороне прыжка сделало отклонение мяча на подъ­ еме прямым, подчеркивая поднятие на вершине отскока. Манипулируя этими значениями, измените величину отклонения; возможно, результат удастся улучшить.

Временные интервалы

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

Загрузите файл ball_v02.mb из папки ChapterFiles\Bouncing_BaU\scenes . Пока что при воспроизведении анимации движения мяча выглядят не очень натурально. Возникает ощущение, что он не отскакивает от пола, а опускается и поднимается на гребне волны. Проблема состоит в отсутствии ускорений и замедлений движения мяча. По умолчанию ключи анимации в Maya создаются таким образом, чтобы итоговая анимационная кривая была гладкой, как неоднородный рациональный сплайн Безье. Именно это является причиной некорректного движения мяча. Он должен постепенно разгоняться при падении и замедляться при отскоке. Вот как можно решить данную проблему.

Одной из серьезных проблем при моделировании и анимации является необходимость учитывать обычные законы физики: трение, притяжение и т.д., без соблюдения которых реалистичности не добиться. На практике это совсем непросто: например, если требуется смоделировать свободно свисающую под собственной тяжестью ткань, то придется долго и кропотливо работать на уровне вершин, распределяя их так, чтобы складки выглядели действительно реально. Еще сложнее в случае анимации - так, любое упругое тело (например, обычный резиновый мяч) при падении подпрыгивает, причем многократно и на разную высоту. Это означает, что получение анимации подобного падения методом ключевых кадров потребует создания нескольких ключей анимации, что придется сделать вручную, на глазок оценив временные интервалы между ключевыми кадрами и расстояние, на которое должен подниматься объект при подпрыгивании. Очевидно, что подобных движущихся объектов в любой сцене множество, да и движение их гораздо сложнее. Более того, помимо них имеется немало второстепенных объектов - создающих фон и на первый взгляд статичных, которые, тем не менее, для реалистичности тоже должны изменяться во времени, например провода на ветру чуть колышутся, свисающая с чердака веревочная лестница слегка колеблется, по водной поверхности бежит слабая рябь и т.п. Анимировать все их вручную - задача непосильная, тем более что нужно не просто анимировать, а анимировать с учетом реальных физических свойств данных объектов.
Для решения названной проблемы в Maya включены специальные модули, позволяющие работать с разными типами динамических объектов: частицами (Particles), телами (Bodies), волосами (Hair) и жидкостями (Fluids). Системы частиц представляют собой малоразмерные объекты, обладающие динамическими свойствами и позволяющие имитировать такие явления, как дым, огонь, пыль, брызги и т.д. Тела создаются из геометрических поверхностей путем назначения им динамических свойств и используются в основном при моделировании столкновений. Волосы представляют собой кривые, обладающие динамическими свойствами, и своим поведением напоминают веревки. А для имитации жидкостей применяются объемные частицы, умеющие проявлять свойства поверхностей и позволяющие моделировать такие природные явления, как волнистые облака или струйки дыма. С системами частиц мы уже познакомились в одном из предыдущих уроков, а этот урок будет посвящен динамике твердых тел.

Теоретические аспекты

В Maya предусмотрены два типа динамических тел: твердые и мягкие. И те и другие могут создаваться на базе NURBS-моделей либо полигональных поверхностей. Твердые тела (Rigid Body) имеют некоторую массу и трение, подвержены воздействию разнообразных сил (гравитации, ветра и т.д.) и при столкновении могут разрушаться, но не деформируются. Примером твердых тел служат костяшки домино и игральные кости, при падении рассыпающиеся по столу некоторым образом и не изменяющие при этом своей формы. Подобный эффект достигается за счет превращения соответствующих геометрических объектов в динамические тела. Мягкие тела (Soft Body), к которым можно отнести, например, резиновый мячик или кусок ткани, также обладают массой и трением, подвергаются силовым воздействиям и при столкновениях и иных внешних воздействиях деформируются. Для достижения подобного эффекта динамические свойства назначаются не всему геометрическому объекту (как у твердых тел), а лишь его управляющим точкам (в случае NURBS-поверхности) или вершинам (при использовании полигональной сетки). При столкновениях или под действием полей эти точки смещаются, что и приводит к деформации поверхности.

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

За работу с телами отвечает меню Soft/Rigid Bodies (Мягкие/Твердые тела - рис. 1), которое доступно лишь в режиме Dynamics (Динамика), активируемом при нажатии клавиши F4. В данном меню находятся команды, используемые для создания тел, а также для выполнения в их отношении некоторых операций.

Рис. 1. Меню Soft /RigidBodies

Динамические тела приводятся в движение действием внешних сил, называемых полями (Fields). За работу с полями отвечает меню Fields (рис. 2), также доступное лишь в режиме Dynamics . Поля позволяют имитировать самые разные силы - от силы ветра до силы тяжести:

  • Air (Ветер) - имитирует воздействие ветра, отклоняющего тела;
  • Drag (Трение) - замедляет движение тел вследствие трения;
  • Gravity (Гравитация) - используется для имитации воздействия на тела силы тяжести;
  • Newton (сила Ньютона) - обеспечивает орбитальное вращение тел;
  • Radial (Радиальность) - приводит к разбрасыванию тел в разные стороны или, наоборот, притягиванию их к некоторой зоне;
  • Turbulence (Турбулентность) - приводит к перемешиванию тел во время движения;
  • Uniform (Однородность) - заставляет тела двигаться в определенном направлении с постоянной скоростью;
  • Vortex (Вихрь) - создает эффект закручивания тел по спирали;
  • Volume Axis (Объемность) - позволяет создавать эффект внутри некоторого объема, который может иметь форму куба, сферы, цилиндра, конуса или тора.

Рис. 2. Меню Fields

Тела можно не только приводить в движение, назначая динамические силы, но и ограничивать у них движение, создавая следующие ограничители:

  • Nail (Гвоздь) - привязывает объект к определенной точке сцены, не мешая ему вращаться вокруг данной точки под воздействием сил или в результате столкновений с другими объектами; длина ограничителя фиксирована;
  • Pin (Булавка) - связывает два объекта вместе, создавая для них общую опорную точку;
  • Hinge (Шарнир) - позволяет объекту, который связывается с точкой в пространстве, с другим активным объектом или с пассивным объектом, свободно вращаться вокруг единственной оси;
  • Spring (Пружина) - привязывает объект к определенной точке сцены, при этом длина ограничителя может циклически изменяться; возможно связывание объекта с точкой в пространстве, с другим активным объектом или с пассивным объектом;
  • Barrier (Барьер) - запрещает объектам перемещение за пределы определенной плоскости (столкнувшиеся с барьером объекты могут менять направление своего движения, но никогда не отскакивают от него).

В Maya предусмотрено два типа твердых тел: активные и пассивные. Активные тела (Active Rigid Body) действуют в соответствии с назначенными им динамическими силами и реагируют на столкновения с другими объектами. Пассивные тела (Passive Rigid Body) лишь являются объектами для столкновений с активными телами и никак не реагируют на воздействие полей или удары о них других тел, но зато могут влиять на активные твердые тела. Примером пассивного тела может служить поверхность, с которой сталкиваются активные тела, - то есть упавшая на стол игральная кость будет активным твердым телом, а сам стол - пассивным. Активными телами нельзя управлять через ключевые кадры, пассивными - можно.

Для превращения NURBS-моделей или полигональных поверхностей в пассивные твердые тела достаточно выделить их и воспользоваться командой Soft /Rigid Bodies =>Create Passive Rigid Body (Мягкие/Твердые тела=>Создать пассивное твердое тело). Создавать активные твердые тела можно двумя способами: либо применить к исходным геометрическим объектам команду Soft /Rigid Bodies =>Create Active Rigid Body (Мягкие/Твердые тела=>Создать активное твердое тело), либо сразу назначить данным объектам требуемые силы и/или ограничители, что приведет к преобразованию каждого из объектов в активное твердое тело и одновременно свяжет их с динамическими силами либо ограничителями. Для того чтобы прекратить существование объектов как твердых тел (например, тогда, когда это уже не требуется), необходимо выделить их и применить команду Edit =>Delete by Type =>Rigid Bodies (Редактирование=>Удалить в зависимости от типа=>Твердые тела).

Для примера создайте простую сцену из обычной плоскости с шаром (рис. 3). Предположим, что шар очень легкий (пусть это будет теннисный мяч) и потому должен не просто упасть на плоскость (например, на пол), но и несколько раз подпрыгнуть - это означает, что плоскость представляет собой пассивное твердое тело, а шар - активное. Для того чтобы Maya точно воспроизводила симуляцию падения шара под воздействием силы, установите режим воспроизведения каждого кадра, щелкнув на кнопке Animation Preferences и выбрав в раскрывающемся списке Playback Speed (Скорость воспроизведения) в категории Timeline (Временная шкала) вариант Play every frame (Воспроизводить каждый кадр) - рис. 4. Одновременно увеличьте общее число кадров анимации до 300. Превратите шар в активное твердое тело, на которое воздействует сила тяжести, выделив его и назначив ему гравитационную силу при помощи команды Fields =>Gravity (Поля=>Гравитация). На первый взгляд ничего не изменится, но в действительности у шара появится набор динамических атрибутов (рис. 5), управляющих его поведением. Более того, шар окажется уже анимированным, и при проигрывании анимации вы увидите, что он падает и проваливается сквозь плоскость. Теперь превратите плоскость в пассивное твердое тело, выделив ее и применив команду Soft /Rigid Bodies =>Create Passive Rigid Body , - после этого плоскость окажется преградой на пути шара, который при падении уже не будет проходить сквозь нее, а отскочит, причем несколько раз с естественным замедлением скорости. Для интереса дополните сцену высоким кубом, чтобы было удобнее наблюдать за перемещениями шара (рис. 6).

Несколько усложним задачу и попробуем подвесить обладающий гравитационной силой шар в некоторую точку пространства. Для этого выделите шар и назначьте ему ограничитель Nail , воспользовавшись командой Soft /Rigid Bodies =>Create Nail Constraint (рис. 7). Немного оттяните шар в сторону для того, чтобы он мог начать под воздействием силы тяжести колебаться, и перетащите ограничитель в верхнюю часть куба (как бы подвесив шар на куб) - рис. 8. Увеличьте число кадров анимации до 500 и воспроизведите анимацию - сфера станет раскачиваться на гвозде вперед-назад в одной плоскости наподобие маятника (рис. 9). Увеличьте для шара значения параметра Initial Velocity (Начальная Скорость) по осям X и Z примерно до 5 - и шар будет раскачиваться уже не на плоскости, а в пространстве.

Рис. 7. Появление ограничителя Nail

Удалите ненужный более Nail-ограничитель и создайте в сцене еще один шар меньшего размера и другого цвета (в нашем случае старый шар имеет зеленый цвет, а новый - красный). Выделите оба шара и свяжите их между собой ограничителем Pin (команда Soft /Rigid Bodies =>Create Pin Constraint ) - рис. 10. Переместите немного Pin-ограничитель вверх и в сторону (рис. 11) - это добавит динамическому движению дополнительный поворот. Запустите анимацию - зеленый шар, падающий под воздействием силы тяжести и имеющий вдобавок начальную скорость, будет стремительно увлекать за собой красный шар, на который ни одно из силовых полей не действует (рис. 12).

Рис. 10. Появление ограничителя Pin

Стоит заметить, что при желании динамические воздействия можно использовать не только для управления перемещением объектов, но и для изменения их формы, правда, не напрямую, а через введение вспомогательных (исключаемых при визуализации) объектов. Рассмотрим простой пример деформации масштабированной NURBS-сферы (рис. 13). Перейдите в режим работы с вершинами (клавиша F9), выделите указанные на рис. 14 вершины и создайте кластер, применив команду Animation =>Deform =>Create Cluster (Анимация=>Деформировать=>Создать кластер). Аналогичную операцию проведите в отношении таких же вершин в нижней части сферы (рис. 15). По замыслу мы хотим сделать так, чтобы кластеры перемещались под воздействием силы Ньютона и соответственно деформировали сферу, однако назначить данную силу непосредственно кластерам нельзя. Поэтому создайте две вспомогательные полигональные сферы и разместите их прямо на кластерах (рис. 16). Сделайте первую сферу родительской для первого кластера, а вторую - для второго (рис. 17). Для этого в окне Outliner нужно при нажатой средней кнопке мыши вначале перетащить первый кластер на первую сферу, а затем второй кластер - на вторую сферу. Либо выделить первый кластер, затем, удерживая нажатой клавишу Shift, выделить первую сферу и выбрать из меню Edit (Правка) команду Parent (Сделать родителем), аналогичную операцию провести для второго кластера и второй сферы. Выделите обе сферы и назначьте им силу Ньютона (команда Fields =>Newton ). Скройте сферы (команда Display => Hide => Hide Selection ), увеличьте число кадров анимацию до 150 и запустите ее проигрывание - сфера немного опадет и начнет колыхаться (рис. 18).

Рис. 17. Окно Outliner после настройки родительских связей