Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ponimayka1

.pdf
Скачиваний:
131
Добавлен:
07.06.2015
Размер:
37.11 Mб
Скачать

Примечание.

Если вы будете масштабировать ключи на временной

линейке за

крайние стрелки, имейте в

виду,

что все

ключи

внутри выделенной области могут

«съехать» и

попасть между

кадрами. Для

того,

чтобы их «приснапитъ» к целым

значениям,

в контекстном

меню

временной линейки есть пункт Snap.

 

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

Перенос анимации с объекта на объект

Создайте в сцене с кубом полигональный цилиндр.

Задайте для него Scale=0.5, чтобы он идеально вписывался в куб. Выберите куб, и два раза щелкните мышью в любом месте временной линейки. При этом выделится сразу весь диапазон проигрывания анимации. Нажмите правую кнопку мыши над выделенной областью.

Появится меню (я буду называть его «контекстным меню временной линейки»). Выберите в нем пункт Сору.

Дальше выберите цилиндр, перейдите в первый кадр на таймлайне и над первым кадром (это важно) нажмите правую кнопку мыши.

В контекстном меню выберите Paste=>Paste.

Ключи скопируются с куба на цилиндр.

Однако, как следует из проигрываемой анимации, скопировались только ключи для атрибута rotateZ. Анимационные кривые для положения пивота не продублировались, так как соответствующие атрибуты не присутствуют у цилиндра в Channel Box и поэтому считаются «неанимируемыми» (nonkeyable).

Откройте окно Channel Control для выбранного цилиндра.

Разыщите в средней колонке атрибуты rotatePivotTranslateX, rotatePivotTranslateY, rotatePivotTranslateZ, rotatePivotX, rotatePivotY, rotatePivotZ и нажмите кнопку <<Move, чтобы перенести их в список анимируемых атрибутов.

561

Опять нажмите правую кнопку мыши над первым кадром. В контекстном меню выберите Paste=>Paste.

Теперь ключи скопируются и для положения «вращательного» пивота. Проиграйте анимацию.

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

Перейдите в двадцатый кадр и выполните там же Paste= >Paste. Таким образом вы скопировали несколько ключей с цилиндра на цилиндр.

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

Пытливые умы могут заметить, что в диапазоне между десятым и двадцатым кадром, когда цилиндр вроде как не должен вращаться (так как ключевые кадры справа и слева задают одинаковое вращение rotateZ=-90), он слегка покачивается. Наиболее просвещенные пользователи сразу сообразят, что все дело в интерполяции между ключевыми кадрами или, иначе говоря, в типе ключей. Однако, чтобы изменить тип интерполяции, по-прежнему нет необходимости открывать великий и ужасный Graph Editor.

Щелкните два раза в любое место временной линейки. В контекстном меню над выделенным диапазоном выберите Tangents=>Flat.

Проиграйте анимацию. Теперь цилиндр исполняет паузу абсолютно неподвижно. Сохраните сцену (rollingCubeAndCylinder.ma), она, возможно, еще пригодится.

562

Примечание. Информация

о

скопированных

ключах остается

в

майском

буфере

обмена даже в тот момент,

когда вы открываете новую сцену.

Таким образом, вы

можете переносить информацию от объекта из одной сцены на

объект

в другой

сцене. Следите только

за

соответствием

атрибутов.

 

 

 

Для более продвинутой работы с ключами есть целое «подразделение» в основном меню MAYA. По адресу Edit=>Keys находятся основные операции для работы с ключами. Их назначение довольно очевидно, а опция Help Images в Option Box этих операций облегчает понимание их логики.

Работа с ключами в Channel Box

Для работы с ключами в Channel Box имеются пункты меню Cut/Copy/Paste/Delete Se­ lected. Важно только понимать, что эти операции применяются ко всем ключам на выделенных в Channel Box атрибутах. Например, операция Delete Selected удаляет всю анимационную кривую целиком, сколько бы ключей на ней ни было. В отличие от аналогичных операций в контекстном меню временной линейки, действующих на конкретные ключи в выбранном диапазоне или кадре, все действия, производимые из Channel Box, производятся над анимационными кривыми, или, иначе говоря, над анимированными атрибутами.

Таким образом, вы может переносить анимацию с атрибута на атрибут или удалять ее целиком.

Еще раз напомню: операция Delete Selected удаляет все анимационные кривые с выбранных атрибутов, а операция Break Connections лишь разрывает связь между атрибутом и анимационной кривой, оставляя последнюю спокойно существовать в сцене без всяких связей .Такие -бесхозные- анимационные кривые замусоривают сцену, поэтому удаляйте ключевую анимацию с атрибутов с помощью операции Delete Selected.

Примечание.

«Безхозные» анимационные кривые

можно удалить одним махом из

всей сцены

с помощью операции File=>Optimize

Scene Size

Работа с ключами в Attribute Editor

Обнаружить наличие анимации на атрибутах объекта можно не только по их цвету в Channel Box или Attribute Editor. Если нажать правую кнопку мыши над любым анимированным атрибутом в Attribute Editor, первый же пункт контекстного меню будет содержать название анимационной кривой, присоединенной к этому атрибуту.

563

Более того, если выбрать этот пункт меню, можно увидеть атрибуты анимационной кривой. (Анимационная кривая - тоже объект, поэтому имеет свои атрибуты, которые ничем не хуже других. И не лучше).

Для любителей вбивать цифры в клетки, представление анимационной кривой в Attribute Editor - сущая находка.

В единую таблицу сведены номера ключей, их значения, тип интерполяции и масса других свойств. И все эти свойства можно редактировать. Если у вас хорошее абстрактное мышление, вы можете работать с анимационными кривыми в Attribute Editor, по-прежнему избегая контактов с Graph Editor.

Для взрослых. Из представления анимационной кривой в Attribute Editor следует один вывод: ключи являются атрибутами анимационной кривой. Действительно, номер кадра и значения атрибутов в ключевых кадрах хранятся в специальных атрибутах .keyTime и .keyValue. В этом нетрудно убедиться, выбрав в Attribute Editor для анимационной кривой пункт Help=>Help on "animCurveTA" и прочитав описание ноды animCurveTA. Вы можете использовать MEL-команды getAttr и setAttr для работы с ключами.

Основы работы с Graph Editor.

Свойства ключей и анимационных кривых

Для наиболее гибкого редактирования ключевой анимации предназначен редактор Graph Editor. Его, как правило, назначают на горячую клавишу, поскольку мало у кого хватает терпения

564

каждый раз «продираться» по адресу Window=>Animation Editors=>Graph Editor.

Работа в Graph Editor ведется в основном с анимационными кривыми и ключами. Как я упоминал выше, ключи представляют собой атрибуты анимационных кривых, поэтому можно сказать, что Graph Editor - это специальный редактор для работы со свойствами анимационных кривых.

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

часто используемыми инструментами и собственно рабочая область.

 

Примечание.

Если

вы владеете MEL-программированием на более,

чем среднем

уровне,

для

вас не

составит труда модифицировать встроенную в

Graph Editor

полку.

Она,

к сожалению, не допускает такой безболезненной модификации, как

обычные

полки.

 

 

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

Совет.

При открытии

Graph

Editor

часто

появляется весьма

экзотическая

картинка,

связанная

с

отображением

только

части

анимационных

кривых для

выбранного

объекта.

Нажмите

клавишу

«f»,

чтобы

увидеть все

анимационные

кривые

целиком.

 

 

 

 

 

 

 

Работу в Graph Editor можно более чем условно разбить на три категории: работа с кривыми, редактирование ключей, редактирование тангенсов.

Рассмотрим небольшой конкретный пример, для того чтобы проиллюстрировать принципы работы с Graph Editor.

Откройте сцену с валяющимся кубом (rollingCube.ma). Выберите куб и откройте Graph Editor.

Чтобы увидеть все анимационные кривые целиком, нажмите клавишу «f».

Слева отображаются все атрибуты выбранного объекта, имеющие анимацию (и часто называемые каналами). Есть подозрение что некоторые атрибуты имеют «вырожденную анимацию», то есть ключи-то на них стоят, но значение атрибутов не изменяется во времени. Анимационные кривые для таких атрибутов представляют собой горизонтальные прямые. Избавимся от такой анимации.

Выполните Edit=>Delete All by Type=>Static Channels (удалить во всей сцене статичную анимацию). Число анимированных атрибутов (и кривых) в Graph Editor существенно сократится. Выделите ключи, принадлежащие короткому отрезку из анимационных кривых в районе двадцатого кадра, и нажмите «f», чтобы наехать на них.

565

Примечание.Если вы хотите выбрать саму анимационную кривую, выбирайте ее за участок без ключей. Однако помните: в этом случае будут просто выбраны все ее ключи.

Выберите в левой части атрибут Scale Pivot Y, чтобы увидеть справа только его анимационную кривую. Выделите ее и удалите, она нам не нужна, так как мы не собираемся продолжать ставить анимацию, а лишь редактируем ее.

Теперь давайте порассуждаем. В двадцатом кадре кубик уже повернулся на 90 градусов (rotateZ=-90) и дальше должен начать вращаться вокруг нового пивота. Однако на участке между двадцатым и двадцать первым кадром пивот перемещается в новое положение. Мы хотим, чтобы пивот мгновенно «прыгнул» в новое положение без всяких плавных переходов. Для этого надо изменить способ, которым MAYA интерполирует участок между ключами. Проще говоря, изменить тип ключей, так как интерполяция участка кривой определяется типом ключей, ограничивающих этот участок.

Выберите в Graph Editor слева куб, а справа все ключи, соответствующие анимации пивота, и выполните в меню Graph Editor операцию Tangents=>Stepped.

Анимационная кривая примет ступенчатую форму.

В принципе это то, что нам нужно. Однако если подумать, то такой ступенчатый «прыжок» должен происходить не в двадцать первом кадре, а в на кадр раньше, чтобы пивот смещался в новое положение в двадцатом кадре и дальнейшее вращение шло вокруг нового пивота.

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

Первый способ «официальный» и заключается в традиционном использовании инструмента Move Tool и привязки к сетке.

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

566

(это следует из нажатой кнопки с магнитом на полке Graph Editor. Поэтому все ключи должны сместиться на кадр влево.

Примечание.

Так как при использовании Move Tool

или Scale Tool в

Graph Editor не

появляется

абсолютно никаких манипуляторов,

следует

постоянно

помнить,

какой инструмент сейчас активен. Кроме того,

выделение

ключей

происходит

левой кнопкой мыши, а перетаскивание (или масштабирование)

- средней. На

первых порах это довольно непривычно и напоминает освоение

ручной коробки

передач.

 

 

 

 

 

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

Затем разыщите на полке Graph Editor два числовых поля Stats, отображающих информацию о выделенных ключах (их значения по горизонтали и вертикали).

Введите в первое поле формулу

-= 1 (минус равно один)

инажмите Enter.

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

Примечание. Использование формул типа +=10 или *=1.1 исключительно удобно для того чтобы одним махом выбранные ключи сдвигать по горизонтали (первое поле Stats) или растягивать их по вертикали (второе поле Stats).

Теперь кубик катится абсолютно корректно, даже между кадров.

Итак, ключи могут обладать различными типами интерполяции, которые можно менять либо через меню Tangets, либо с помощью соответствующих кнопочек на полке Graph Editor.

Однако на самом деле тип интерполяции определяется не для ключей, а для их тангенсов. Если на пальцах, то тангенсы - это отрезки касательных к анимационной кривой в той точке, где находится ключ. Когда вы выбираете ключ и меняете тип интерполяции, на самом деле этот тип меняется для обоих тангенсов, торчащих вправо и влево из ключевой точки. Интерполяцию можно менять индивидуально для каждого тангенса, достаточно просто его выбрать или воспользоваться пунктами In/Out Tangent в меню Tangents.

567

Терминологический комментарий. Слово «тангенсы» стопроцентно жаргонное, однако настолько прочно прижилось, что искать ему замену мне даже не приходит в голову. Ну, не будут же взрослые мальчики говорить «покрутим гантельки» или «подергаем за усики»

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

Выберите слева в Graph Editor канал rotateZ и нажмите «f», чтобы увидеть его анимационную кривую целиком. Выберите ключ в середине кривой и измените для него тип интерполяции на Flat.

Однако движение куба станет при этом совсем невыразительным. Подредактируем тангенсы вручную. Выберите (левой кнопкой) левый тангенс и приподнимите его средней кнопкой.

(Move Tool при этом должен быть включен!)

Примечание. Если вы хотите «расцепить» два тангенса, можете воспользоваться меню Key =>Вгеак Tangents или соответствующей кнопкой на полке.

Однако далее вам, возможно, захочется изменить не только направление, но и длину тангенса. И вот тут вам придется преодолеть двойную защиту. Дело в том, что МАУА считает тангенсы произвольной длины глубоко безнравственными и, по умолчанию, не позволяет менять из размер. И хотя на полке и в меню Keys вы можете разыскать операцию Free Tangent Weight (разблокировать вес тангенса), выполнив его, вы получите такое сердитое сообщение об ошибке:

Error: All of the animation curves are non-weighted. Unable to change the weight locked state

Это означает, что сначала нужно разблокировать всю анимационную кривую, а уж затем работать с отдельными тангенсами.

Поэтому выполните сначала операцию Curves=>Weighted Tangents. После этого можно будет менять длину тангенсов выбранного ключа.

568

Нажимая Shift, растяните тангенс средней кнопкой мыши, не изменяя его направления.

Теперь кубик, будет бодро переваливаться через ребро, немного «Зависая» в верхней точке. Сохраните сцену (rollingCubeCorrected.ma).

Дополнительные возможности Graph Editor

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

Кроме обычных инструментов Move и Scale, для работы с ключами есть более специфические инструменты.

Когда анимационная кривая «густо засажена» ключами, удобно выделить сразу всю кривую и двигать ключи с помощью Move Nearest Picked Key Tool. Этот инструмент перемещает только один ключ, ближайший к точке, где была нажата средняя кнопка мыши.

Добавлять ключи на кривые можно с помощью Insert Keys Tool и Add Keys Tool. Первый вставляет новый ключ в ближайшее место на кривой при нажатии средней кнопки мыши, второй - ставит новый ключ в любое место и «подтягивает» анимационную кривую в это место.

Еще один инструмент, Lattice Deform Keys, позволяет деформировать выбранные ключи с помощью решетки (Lattice). Это, естественно, может быть удобным лишь при достаточном большом количестве выделенных ключей.

Все эти инструменты можно найти на полке Graph Editor.

Если в результате манипуляций с ключами некоторые из них съехали в межкадровое пространство, то можно «приснапить» выбранные ключи к ближайшим целым кадрам с помощью операции Edit=>Snap.

Если часть атрибутов объекта анимирована не с помощью анимации по ключам, а, например, посредством expressions, то воображаемую анимационную кривую для этих атрибутов можно нарисовать с помощью операции View=>Show Result.

С помощью меню Curves=> Post/Pre Infinity можно задавать, как будет продолжаться анимационная кривая после своего последнего ключа (или перед первым ключом). Об этом я еще поговорю позже.

Dope Sheet - альтернативный графический редактор

Я не пользуюсь этим альтернативным редактором анимации, поэтому могу лишь сказать, что основное его преимущество - возможность одновременно видеть ключи для всех объектов в сцене (или только для выбранных объектов). Благодаря тому, что ключи отображаются в виде прямоугольников одинаковой ширины, на основании содержимого окна Dope Sheet удобно делать выводы о тайминге анимации как для выбранных объектов, так и для всей сцены. Внешний вид этого редактора чем-то напоминает экспозиционный лист (XSheet) для классической анимации, поэтому пользователям с соответствующим образованием он, возможно, придется по вкусу.

569

Это окно может быть также полезно при работе со звуком. Структура окна Dope Sheet, его меню и основные приемы работы с ним практически повторяют аналогичные возможности для Graph Editor.

Иерархическая анимация. Стэк анимации. Слоеная анимация

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

Вы можете выбрать любой объект и с помощью операции Edit=>Group сколько угодно раз сгруппировать его с самим собой. Получится система вложенных групп, содержащая одинединственный объект. Но каждая из этих групп может быть проанимирована независимо, у каждой их них есть свой пивот, который можно редактировать, в общем, каждая группа представляет собой полноценный объект (с нодой transform), и, выбрав ее отдельно, вы можете создать для нее анимацию любого типа. Надо лишь хорошо представлять себе, как будут «складываться» анимации отдельных групп в общее движение объекта, входящего в иерархию.

Проделайте простой пример.

Создайте полигональный куб.

Сгруппируйте его с самим собой (Edit=>Group). Выберите куб, поверните его (rotateZ=20).

Выберите группу, растяните по вертикали (scaleY=2). Теперь выберите куб, сожмите по вертикали (scaleY=0.5). Выберите группу, поверните ее «обратно» (rotateZ=-20).

Почувствуйте разницу.

Таким образом, трансформации «наслаиваются» друг на друга, и совершенно очевидно, что порядок применения трансформации к отдельным уровням иерархии очень важен.

Такой принцип можно также назвать «слоеной» анимацией. Важно помнить о том, что анимация «слоев», то есть уровней иерархии складывается «сверху вниз»: сначала производятся трансформации самого верхнего уровня (верхней группы), затем внутри этого уровня вычисляются нужные трансформации и т.д.

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

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

570

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]