Первые шаги в Maya. Урок 11. Анимация вдоль пути

Светлана Шляхтина

Технология создания анимации вдоль пути

Привязка объекта к готовой кривой-траектории

Формирование траектории по ключевым положениям объекта

Редактирование траектории движения

Определение поведения объекта при его движении по траектории

Искажение формы объекта при его поворотах

Перемещение объекта по поверхности

Практические примеры создания простых анимаций вдоль пути

Горящий шнур

Летящая ракета

Плывущая рыба

Ползущая и оставляющая светящийся след морская звезда

 

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

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

Технология создания анимации вдоль пути

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

Существует два технологически разных подхода к созданию анимации вдоль пути. Чаще всего объект привязывается к уже готовой траектории — в этом случае последовательность действий такова: вначале нужно сформировать NURBS-кривую (предполагаемую траекторию движения), а потом присоединить к ней объект, сориентировав его на траектории таким образом, чтобы передняя часть объекта всегда была нацелена в направлении движения. Но можно пойти и иным путем (весьма схожим с технологией создания анимации по ключевым кадрам): последовательно указать все ключевые положения объекта в пространстве и сориентировать его положение в каждой из ключевых точек, что приведет к формированию траектории его движения. В любом случае программа сама рассчитает положение объекта в каждом из кадров анимации (ключевых и промежуточных в первом варианте и промежуточных — во втором) таким образом, что он будет двигаться по заданному пути, автоматически поворачивая нужным образом при изменении траектории. Более того, при поворотах объект может даже деформироваться — это необходимо для обеспечения реалистичности перемещения некоторых видов объектов.

За создание анимации вдоль пути отвечает подменю Motion Paths (Траектории движения; рис. 1) из меню Animate (Анимация), доступное лишь в режиме создания анимации, устанавливаемом при нажатии клавиши F2.

 

Рис. 1. Подменю MotionPaths

Рис. 1. Подменю MotionPaths

В начало В начало

Привязка объекта к готовой кривой-траектории

Для того чтобы разобраться с особенностями формирования анимации по пути, создайте новую сцену с шаром в центре и установите режим Animation, нажав клавишу F2. В проекции Top инструментом EPCurveTool (Кривая по точкам редактирования) нарисуйте на плоскости произвольную NURBS-кривую (рис. 2). Выделите шар, а затем при нажатой клавише Shift еще и созданную кривую. Примените к ним команду Animate=> Motion Paths=> Attach to Motion Path (Анимация=>Траектории движения=>Привязать к траектории движения). В итоге шар автоматически сместится в начальную точку кривой, а на самой траектории появятся два позиционных маркера с номерами первого и последнего (в данном случае 30-го) кадров, задействованных в анимации по пути (рис. 3). Данные маркеры появятся и в окне Outliner в качестве дочерних объектов исходной кривой (рис. 4). Проиграйте анимацию, щелкнув на кнопке Play, и увидите, что шар действительно перемещается по указанной траектории.

 

Рис. 2. Исходные элементы сцены

Рис. 2. Исходные элементы сцены

 

Рис. 3. Вид привязанного к траектории шара в одном из промежуточных кадров (с отображенными на траектории позиционными маркерами)

Рис. 3. Вид привязанного к траектории шара в одном из промежуточных кадров (с отображенными на траектории позиционными маркерами)

 

Рис. 4. Окно Outliner с позиционными маркерами

Рис. 4. Окно Outliner с позиционными маркерами

 

Обратите внимание, что под последним кадром в данном случае понимается не последний кадр всей анимации в целом, а последний кадр диапазона воспроизведения анимации. Это позволяет определять кадровый интервал анимации (первый и последний кадры), в котором объект должен двигаться по траектории. Так, в нашем случае перемещение шара по пути займет первые 30 кадров анимации, в то время как общая длительность анимации составляет 48 кадров. В то же время если бы мы, например, перед привязкой шара к траектории изменили диапазон воспроизведения анимации, установив на слайдере RangeSlider другие значения в качестве начального и конечного кадров диапазона, то именно эти новые значения и стали бы начальной и конечной точками движения шара (рис. 5). Сохраните созданную анимацию — чуть позже мы к ней вернемся.

 

Рис. 5. Регулирование времени начала и окончания движения через диапазон воспроизведения кадров — исходный вариант (слева) и измененный

Рис. 5. Регулирование времени начала и окончания движения через диапазон воспроизведения кадров — исходный вариант (слева) и измененный

В начало В начало

Формирование траектории по ключевым положениям объекта

Создайте новую сцену с шаром и включите режим Animation. Активируйте первый кадр, установите шар в то положение, которое он должен занимать в начале перемещения, и воспользуйтесь командой Animate=>MotionPaths=>SetMotionPathKey (Анимация=>Траектории движения=>Создать ключ траектории движения) — будет создан первый ключ, точнее первый позиционный маркер с номером первого кадра из диапазона воспроизведения анимации (рис. 6). Переместите ползунок таймера анимации на следующий ключевой кадр и вновь примените команду Animate=>MotionPaths=>SetMotionPathKey — появится второй позиционный маркер и будет отображен соединяющий маркеры участок траектории (рис. 7). Аналогичным образом определите все остальные ключевые позиции шара при его движении — возможный вид полученной в итоге траектории представлен на рис. 8. При проигрывании анимации вы увидите, что шар перемещается по созданной траектории. Стоит заметить, что данный способ лучше употреблять не для того, чтобы построить траекторию с нуля, а лишь для расширения уже существующей траектории, поскольку привязка объекта к уже готовой траектории на порядок удобнее и быстрее.

 

Рис. 6. Появление первого позиционного маркера

Рис. 6. Появление первого позиционного маркера

 

Рис. 7. Второй позиционный маркер и начальный участок траектории

Рис. 7. Второй позиционный маркер и начальный участок траектории

 

Рис. 8. Вид траектории со всеми позиционными маркерами

Рис. 8. Вид траектории со всеми позиционными маркерами

В начало В начало

Редактирование траектории движения

Созданная траектория перемещения шара (как при первом, так и при втором методе) получилась не очень плавной — проблема в том, что на кривой-пути слишком мало вершин. Казалось бы, решить проблему несложно: достаточно увеличить количество управляющих точек на кривой, сделав ее более плавной, и включить опцию 3Cubic в ходе перестройки кривой. Посмотрим, что из этого получится в случае кривой, построенной методом указания ключевых положений объекта. Выделите кривую-путь, включите режим Modeling (клавиши F3) и откройте окно RebuildCurveOptions (команда EditCurves=>RebuildCurve — Редактировать кривые=>Перестроить кривую). Измените параметры кривой примерно так, как показано на рис. 9, — скорее всего, потребуется включить опцию 3Cubic и увеличить значение параметра NumberofSpans. В результате кривая станет плавной (рис. 10), но при проигрывании анимации шар нормально двигаться по ней уже не будет, поскольку все внутренние позиционные маркеры (необходимые в данном случае для перемещения) окажутся уничтоженными. А теперь откройте сохраненный ранее файл с анимацией шара, привязанного к готовой траектории, выделите кривую-траекторию и аналогичным образом перестройте ее. В итоге и кривая станет плавной, и шар будет по-прежнему по ней перемещаться (рис. 11). Стоит заметить, что подобное сглаживание траектории лучше проводить в самом конце подготовки ролика, когда окончательно выяснится, что редактировать ее больше не придется. Поэтому верните первоначальный вид траектории, отказавшись от последнего действия.

 

Рис. 9. Настройка параметров в окне RebuildCurveOptions

Рис. 9. Настройка параметров в окне RebuildCurveOptions

 

Рис. 10. Вид траектории, созданной по второму методу и перестроенной

Рис. 10. Вид траектории, созданной по второму методу и перестроенной

 

Рис. 11. Положение шара в одном из ключевых кадров на траектории, созданной по первому методу и перестроенной

Рис. 11. Положение шара в одном из ключевых кадров на траектории, созданной по первому методу и перестроенной

 

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

 

Рис. 12. Изменение траектории движения путем корректировки положения вершин

Рис. 12. Изменение траектории движения путем корректировки положения вершин

 

Форму траектории также можно изменить путем непосредственного указания нового положения объекта в конкретном кадре, а также ее удлинением. Вернитесь в режим работы на уровне объекта (клавиша F8) и включите режим Animation. Выделите шар, переместите ползунок таймера анимации в один из промежуточных кадров анимации, измените положение шара произвольным образом и примените команду Animate=>MotionPaths=>SetMotionPathKey (Анимация=>Траектории движения=>Создать ключ траектории движения) — траектория перемещения шара изменится (рис. 13). Точно таким же способом можно удлинить траекторию, дополнив ее в начале или в конце новыми участками (рис. 14). Если речь идет о начале пути, то перед этим следует активировать первый кадр диапазона воспроизведения или один из более ранних кадров, в диапазон не входящий, а если о конце — то любой из кадров, находящийся после диапазона воспроизведения.

 

Рис. 13. Корректировка траектории движения: исходное положение шара (слева), перемещение шара (в центре), вид изменившейся траектории

Рис. 13. Корректировка траектории движения: исходное положение шара (слева), перемещение шара (в центре), вид изменившейся траектории

 

Рис. 14. Удлинение траектории движения: исходное положение шара (слева), перемещение шара (в центре), вид изменившейся траектории

Рис. 14. Удлинение траектории движения: исходное положение шара (слева), перемещение шара (в центре), вид изменившейся траектории

 

Если возникает обратная проблема (требуется укоротить путь), то она решается обычным удалением вершин NURBS-кривой, играющей роль пути. Если путь стал не нужен, то его несложно удалить, выделив и нажав клавишу Del. Если путь нужен, но требуется разрушить его связь с объектом, следует выделить путь, создать его дубликат (команда Edit=> Duplicate — Редактирование=>Дублировать), а затем в окне Outliner выделить исходную кривую-путь и нажать клавишу Del. Аналогичного результата (кривая сохранится, а связь будет разорвана) можно добиться и проще — через редактор сцен, открываемый командой Window=>Hypergraph (Окно=>Редактор сцен). Для этого следует выделить в окне проекций объект, переключиться в окно Hypergraph, выделить связанный с ним узел Motion (рис. 15) и нажать клавишу Del.

 

Рис. 15. Окно редактора сцен Hypergraph с выделенным узлом Motion

Рис. 15. Окно редактора сцен Hypergraph с выделенным узлом Motion

В начало В начало

Определение поведения объекта при его движении по траектории

Объект при движении может перемещаться по всей траектории равномерно либо какие-то ее участки проходить в более быстром (или, наоборот, медленном) темпе. Кроме того, при движении он способен наклоняться или даже переворачиваться, что может пригодиться, например, при имитации движения по ухабистой дороге. Все эти нюансы корректируются через параметры объекта в окне каналов. Поскольку речь идет (в том числе) и о всевозможных наклонах, то для наглядности замените движущийся по траектории шар на полигональный куб, то есть шар удалите, создайте куб, а затем свяжите его с траекторией (команда Animate=> Motion Paths=> Attach to Motion Path).

Откройте окно каналов, выделите куб, удостоверьтесь, что ползунок таймера анимации стоит на первом кадре, и щелкните в окне каналов под заголовком INPUTS (Входные данные) на строке motionPath1. Откроется свиток с параметрами, управляющими особенностями перемещения объекта по траектории (рис. 16):

  • U Value — определяет положение объекта на траектории; значение данного параметра меняется в интервале от 0 до 1 (по умолчанию в первом кадре — 0, в последнем — 1);
  • Front Twist/ Up Twist/ Side Twist — задает величину поворота относительно оси X/ Y/ Z, локальной для объекта; изначально значения данных параметров во всех кадрах равны 0, это означает, что направление объекта относительно осей X/ Y/ Z совпадает с направлением, присвоенным ему при связи с траекторией, и при перемещении меняться не будет.

 

Рис. 16. Вид свитка motionPath1 в первом кадре

Рис. 16. Вид свитка motionPath1 в первом кадре

 

Выделите куб и активируйте инструмент ShowManipulator Tool (Отображение манипулятора) — рис. 17. Появится несколько манипуляторов, которыми можно редактировать входные параметры узла: положение объекта на траектории и его наклон относительно осей X/ Y/ Z. Положение регулируется посредством маркера, находящегося на пересечении осей, а наклоны — через красную, зеленую и синюю окружности соответственно. Вначале рассмотрим, как регулировать скорость перемещения объекта, которая напрямую связана с параметром U Value, определяющим положение объекта. Предположим, куб должен перемещаться по траектории с различной скоростью: первые три четверти пути он будет двигаться быстро, а оставшуюся четверть — медленно. Это означает, что к середине диапазона воспроизведения он должен пройти не половину, а три четверти пути. Чтобы добиться этого, установите ползунок таймера анимации в середине диапазона (то есть на 15-й кадр) и перетащите куб, ухватив его за маркер (он находится в центре объекта) по траектории так, чтобы куб оказался в самом начале последней четверти пути. Щелкните в окне каналов на поле UValue и закрепите новое положение куба, создав новый позиционный маркер при помощи команды Channels=>KeySelected (Каналы=>Ключ для выделенного) — рис. 18 и 19. Проиграйте анимацию и убедитесь, что скорость куба на траектории меняется: вначале он движется очень быстро, а последний отрезок пути, наоборот, очень медленно.

 

Рис. 17. Инструмент ShowManipulatorTool

Рис. 17. Инструмент ShowManipulatorTool

 

Рис. 18. Выбор команды Key Selected

Рис. 18. Выбор команды Key Selected

 

Рис. 19. Изменение положения куба: исходное положение (слева), новое положение (в центре) и результат создания позиционного маркера для нового положения

Рис. 19. Изменение положения куба: исходное положение (слева), новое положение (в центре) и результат создания позиционного маркера для нового положения

 

Наклон объекта при его движении по траектории регулируется примерно таким же образом. Предположим, что куб в процессе движения должен трижды перевернуться относительно оси Z. Выделите куб, переключитесь в последний кадр, активируйте инструмент ShowManipulator Tool (Отображение манипулятора) и поверните синюю окружность соответствующим образом. Точно такого же результата можно достичь и путем ввода в окне каналов нужного значения для параметра Side Twist — в данном случае оно будет равно –1080. Щелкните в поле Side Twist и создайте ориентационный маркер, применив команду Channels=>KeySelected (Каналы=>Ключ для выделенного). Пока никаких переворотов куба при движении не будет, поскольку начальное его положение при значении Side Twist, равном 0, в первом кадре нами зафиксировано не было. Чтобы исправить ситуацию, переключитесь в первый кадр, введите в поле Side Twist значение 0 и также создайте ориентационный маркер командой Channels=>KeySelected (рис. 20). Теперь куб при движении будет переворачиваться. Обратите внимание, что настройка параметров Front Twist/ Up Twist/ Side Twist используется не только для имитации наклона объекта при перемещении (что актуально, например, при движении по ухабистой дороге), но и для его ориентации относительно пути (это может потребоваться в случае, если ориентация, установленная программой автоматически, оказалась неправильной).

 

Рис. 20. Появление ориентационных маркеров для первого и последнего кадров

Рис. 20. Появление ориентационных маркеров для первого и последнего кадров

В начало В начало

КомпьютерПресс 6'2007