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

ponimayka1

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

две дополнительные группы (а следовательно две новых ноды transform) для -послойной- анимации. Самую верхнюю группу запускаете по пути (один вид анимации), следующую группу трясете с помощью expression (процедурная анимация), а с нужного момента начинаете вращать сам корабль обычными ключами на атрибутах rotate. С этого же момента можете выключить тряску, проанимировав атрибут Node State у созданного expression. Иногда имеет смысл создать пару -лишних- групп «про запас», на случай, если понадобится дополнительная вторичная анимации.

Проделаем небольшой пример иерархической анимации. Нет, это не будет планетарная система. Это будет анимация юлы.

Анимация юлы

Перейдите в камеру front и нарисуйте профиль юлы с помощью Create=>CV Curve Tool.

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

Выберите кривую и выполните Surface=>Revolve. Любители кубизма могут установить в Channel Box для ноды revolve! значения degree=Linear и sections=6.

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

571

Переименуйте поверхность в spin.

«Обнулите» текущее положение, а точнее говоря, задайте значения трансформационных атрибутов «по умолчанию»: Modify=> Freeze transformation.

Теперь все вращения и перемещения равны 0, а размер равен 1. После окончания редактирования избавьтесь от истории. Edit=>Delete All by Type=>History

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

Выделите все атрибуты, кроме rotateY, и из контекстного меню Channel Box (выпадающего по правой кнопке) выполните Lock Selected.

Кроме того, спрячьте все только что заблокированные атрибуты: Channel Box=>Hide Selected.

572

Проверьте настройки анимации.

Задайте диапазон проигрывания от 0 до 25, а глобальный диапазон анимации от 0 до 200. Задайте скорость проигрывания как Real-time (25 fps).

Выберите spin и поставьте два ключа на атрибут rotateY. Для этих целей хорошо подойдет горячая клавиша «s».

Внулевом кадре задайте rotateY=0 и поставьте ключ.

Вдесятом кадре rotateY=360 и поставьте ключ.

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

Откройте Graph Editor. Нажмите «f».

Выберите анимационную кривую.

Выполните в меню Graph Editor операцию Curves=>Post lnfinity=>Linear.

Чтобы увидеть, как кривая будет продолжаться после второго ключа выполните View=>lnfinity.

573

Теперь юла будет вращаться бесконечно. Самое время проанимировать наклон оси юлы. Для этого проще всего сгруппировать юлу саму с собой и проанимировать верхнюю группу. Выберите юлу. Сгруппируйте: Edit=>Group. Переименуйте получившуюся группу в axis. Заблокируйте и спрячьте все атрибуты axis, кроме rotateX и rotateZ.

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

Кадр 0: rotateX=30, rotateZ=0. Кадр 25: rotateX=0, rotateZ=-30. Кадр 50: rotateX=-30, rotateZ=0. Кадр 75: rotateX=0, rotateZ=30. Кадр 100: rotateXOO, rotateZ=0.

574

Подредактируем анимационные кривые. Откройте Graph Editor и нажмите «f».

Удалите «лишние» ключи на наклонных участках.

И включите отображение «бесконечности»: View=>lnfinity.

Выберите обе анимационные кривые и задайте для них бесконечное циклическое повторение: Curves=>Post lnfinity=>Cycle.

Чтобы «повторы» гладко стыковались на границах, задайте «плоские» тангенсы для всех выбранных ключей: Tangents=>Flat.

Выделите слева в Graph Editor канал Rotate Z, чтобы увидеть только его анимационную кривую. Выберите первый и последний ключ на ней и выполните Tangents=>Spline, чтобы гладко состыковать начало и конец анимационной кривой.

575

Теперь ось юлы бегает по кругу.

Можно анимировать перемещения юлы по горизонтальной плоскости.

Для этого создадим еще один уровень иерархии для очередного «слоя» анимации. Выберите группу axis и снова группируйте ее саму с собой.

Полученную группу назовите deviation.

Заблокируйте и спрячьте все атрибуты deviation в Channel Box, за исключением translateX и translateZ.

Поставьте ключи на перемещение группы deviation. Кадр 0: translateX=0, translateZ=0,

Кадр 50: transtateX=0, translateZ=5. Кадр 00: translateX=5, translateZ=5. Кадр 150: translateX=5, translateZ=0. Кадр 200: translateX=0, translateZ=0. Отредактируем анимационные кривые. Откройте Graph Editor и нажмите «f».

Выделите обе анимационные кривые и выполните Tangents=>Spline.

576

Чтобы сделать перемещения юлы более «жесткими», выберите два верхних ключа на кривой для translateZ, а затем выделите соседние тангенсы этих ключей.

Выполните Keys=>BreakTangents, чтобы «сломать» тангенсы и редактировать их независимо, с каждой стороны от ключа. Не забудьте включить Move Tool и потяните «сломанные» тангенсы вниз.

Выполните аналогичные действия с нижними ключами на красной анимационной кривой для translateX.

577

Поэкспериментируйте с ключами и различными видами интерполяции. Сохраните сцену (ula.ma).

Пытливые умы наверняка держат за пазухой едкий вопрос: зачем это городить такой «групповой огород», когда в принципе можно было бы обойтись одним объектом. Надо было бы просто задать нужный порядок поворотов (атрибут Rotate Order в Attribute Editor), а перемещения и вращения проанимировать независимо. Да, это так. Однако гораздо удобнее работать с несколькими объектами (хотя бы с точки зрения постановки ключей) и разделять анимацию на «слои». В данном примере каждая группа ответственна за определенный тип движения, и, выбрав ее, совершенно очевидно, какие атрибуты и как надо редактировать для корректировки анимации. В случае «экономии» и использования атрибутов одного объекта для общего движения, придется все время держать в голове, какие атрибуты отвечают за определенный тип анимации и переключаться в Graph Editor между «зарослями» анимационных кривых.

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

Типы ключей. Breakdowns

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

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

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

Вы можете превращать нормальный ключ в ключ типа breakdown и обратно с помощью операции Keys=>Convert to Breakdown/Convert to Key в меню Graph Editor или через контекстное меню временной линейки.

Ключи типа breakdown отображаются на временной линейке и в Graph Editor зеленым

цветом.

578

Терминологический

комментарий.

Я ничего не смог

придумать

в качестве не

то

что перевода, но

даже русскоязычного написания термина breakdown. Надеюсь,

вы

догадались, как называют такие

ключи аморальные

майщики.

 

 

Короткие вставки. Inbetweens

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

Эту операцию можно выполнить в Graph Editor в меню Keys, либо в контекстном меню временной линейки.

Примечание. Inbetween - это не тип ключей, как breakdown, это просто дополнительный (не ключевой) кадр, вставляемый во всю анимацию.

Если вы хотите вставить такой кадр только в конкретные анимационные кривые, то следует выбрать эти анимационные каналы в левой части Graph Editor и выполнить операцию Keys=>Add Inbetween только для них.

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

Анимация по пути

Иногда бывает удобнее нарисовать в пространстве кривую и запустить объект по ней, чем ставить множество ключей на перемещение и вращение объекта. Такой тип анимации, называемый «движением по пути» (Motion Path Animation), более чем популярен.

С майской точки зрения, в ходе создания анимации по пути между объектом и временем появляется «посредник» - объект motionPath, ответственный за то, чтобы объект постоянно находился на кривой и преобразующий позицию объекта на кривой в мировые координаты. Сам объект при этом движется пассивным образом. Реальная анимация по ключам создается для объекта motionPath, который в свою очередь управляет положением и ориентацией объекта. Таким образом, движение объекта зависит не от времени напрямую, как в случае ключевой анимации, а от «посредника» motionPath.

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

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

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

579

этом диапазоне.

Сначала нужно выбрать объект (или объекты), затем кривую (кривая-путь выбирается последней) и выполнить операцию Animate=>Motion Paths=>Attach to Motion Path.

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

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

Пресмыкание по пути

Перейдите в окно side и нарисуйте профиль какого-нибудь Гада Пресмыкающегося. Используйте CV Curve Tool и рисуйте слева направо, даже если вы привыкли писать наоборот. Удостоверьтесь, что первая точка попала в начало координат, а последняя легла на горизонтальную ось Z.

Далее для выбранной кривой строим поверхность вращения: Surfaces=>Revolve (ось вращения, очевидно, Z).

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

580

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