Нелинейная анимация в Blender

Нелинейная анимация

Редактор нелинейной анимации (Non-Linear Animation, NLA) Blender — это мощный инструмент, позволяющий строить сложные анимационные последовательности с помощью разнесения по слоям (layering), повторения и смешивания ранее созданных вами действий.

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

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

Использование редактора нелинейной анимации

На первый взгляд редактор нелинейной анимации (NLA Editor) выглядит очень похожим на редактор действий (Action Editor) как вы можете видеть на рисунке 9.1. У него есть отображение временной шкалы (Timeline) и находящаяся слева область, в которой отображаются его каналы.

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

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

Нелинейная анимация в Blender_1.jpg

Рисунок 9.1 Редактор нелинейной анимации

Связывание действий в NLA

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

Запустите новый сеанс Blender, удалите куб по умолчанию и добавьте арматурный объект, состоящий из одной кости. Убедитесь, что ваше рабочее пространство настроено таким образом, что вы можете одновременно видеть 3D-вид, редактор действий и редактор нелинейной анимации, как показано на рисунке 9.2. Возможно, вы захотите одновременно видеть ещё и шкалу времени.

Нелинейная анимация в Blender_2.jpg

Рисунок 9.2 3D-вид, редактор действий и редактор нелинейной анимации

Создайте два действия. По первому действию кость должна мягко покачиваться из стороны в сторону. Слегка поверните кость вправо и создайте ключ для вращения на кадре 1. Как вы заметите, ключ появится в редакторе действий.

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

Нелинейная анимация в Blender_3.jpg

Рисунок 9.3 Задаём ключевой кадр для первого положения кости

Нажмите клавишу «вверх» на клавиатуре, чтобы перейти на 10 кадров вперёд, к кадру номер 11. Поверните кость в крайнее левое положение и задайте ключ для этого положения, как показано на рисунке 9.4.

Скопируйте ключ из кадра 1 и переместите дубликат на кадр 21. Переименуйте действие в SideToSide, как показано на рисунке 9.5. Заметьте, что имя соответствующего канала действий в редакторе нелинейной анимации тоже изменилось.

Уcтановите конечный кадр на вашей временной шкале в 20, чтобы эта анимация повторялась более плавно.

Нелинейная анимация в Blender_4.jpg

Рисунок 9.4 Второе положение кости

Нелинейная анимация в Blender_5.jpg

Рисунок 9.5 Действие SideToSide

Теперь, когда мы закончили создавать действие SideToSide, создадим новое действие под названием FrontToBack. Чтобы это сделать, мы могли бы просто выбрать Add New из выпадающего меню Actions, что продублировало бы действие SideToSide и дало бы нам новое действие с именем SideToSide.001.

Однако сейчас мы создадим совершенно новое действие. Нажмите X справа от выпадающего меню действий. Это отсоединит действие SideToSide от арматуры. Обратите внимание, что это не удаляет действие из вашего blend-файла.

После создания действия оно по умолчанию придаётся фальшивому пользователю. По этой причине действия остаются частью вашего blend-файла даже в том случае, если они не используются ни одним объектом — вспомните обсуждение фальшивых пользователей в главе 1.

Для того чтобы полностью удалить созданное действие из blend-файла найдите действие в Data Browser и удалите фальшивого пользователя, выбрав действие и отключив фальшивого пользователя с помощью клавиши F. После этого, при условии, что ни один объект не использует это действие, оно удалится из файла при его закрытии.

Итак, вы можете не бояться случайно удалить действие. Всё, что будет сделано, это удаление связи действия с арматурой и удаление его из редактора нелинейной анимации.

Выберите кость и нажмите Alt+R, очищая любое вращение кости, чтобы начать с действительно нового действия, как показано на рисунке 9.6. Хотя вы отсоединили действие от арматуры и удалили его из редактора нелинейной анимации, обратите внимание, что кость находится в том же положении, в котором была при отсоединении действия.

Если вы хотите получить полностью чистое состояние для начала, то убедитесь, что выбрали кость и нажали Alt+G и Alt+R, чтобы очистить все перемещения и вращения.

Нелинейная анимация в Blender_6.jpg

Рисунок 9.6 Начинаем заново с пустым редактором действий

Для того чтобы создать второе действие просто поверните кость немного вперёд вокруг оси X и создайте ключ для этого положения в кадре 1. И снова, это автоматически создаст действие под названием «action», которое мы переименуем в FrontToBack. Как вы можете видеть на рисунке 9.7, FrontToBack теперь является активным действием и, как таковое, отображается в редакторе нелинейной анимации под каналом Armature.

Нелинейная анимация в Blender_7.jpg

Рисунок 9.7 Создаём FrontToBack

Закончим создание движения покачивания вперёд-назад вокруг оси X, задав ключ кадра с отклонением назад и сдублировав кадр 1 на место кадра 21, как показано на рисунке 9.8.

Нелинейная анимация в Blender_8.jpg

Рисунок 9.8 Готовое действие FrontToBack

Теперь у нас есть два действия. Сейчас активным является действие FrontToBack, поскольку с ним вы работали в последний раз. Если вы выберете SideToSide из выпадающего меню Actions в редакторе действий, то оно станет активным и отобразится в редакторе нелинейной анимации. Ваше окно вернётся к предыдущему состоянию (см. рисунок 9.5).

Работа с полосами NLA

От редактора нелинейной анимации было бы мало толку, если бы он только отображал текущее активное действие. Как вы можете догадаться, он умеет значительно больше. Чтобы вставить действие в редактор NLA так, чтобы оно было внедрено в готовую анимацию, необходимо создать из действия полосу NLA (NLA strip).

Как вы уже поняли, полоса NLA для действия отделена от самого действия. Это представление действия, которое может обрабатываться редактором NLA самыми разными способами.

Чтобы создать полосу NLA для действия SideToSide, расположите курсор мыши в любом месте на канале арматуры в редакторе NLA, нажмите Shift+A и выберите из меню SideToSide.

Получившаяся в результате полоса NLA выглядит, как показано на рисунке 9.9. Заметьте, что у неё есть свой собственный канал, с чуть большим, чем у канала активного действия, отступом. Название этой полосы совпадает с названием соответствующего действия.

Нелинейная анимация в Blender_9.jpg

Рисунок 9.9 Полоса NLA для действия SideToSide

Теперь в редакторе действий выберите из выпадающего меню действие FrontToBack и сделайте его активным действием. Обратите внимание, канал активного действия в редакторе нелинейной анимации теперь содержит FrontToBack, но полоса SideToSide остаётся на своём месте (рисунок 9.10).

После того, как для действия создаётся полоса NLA, она остаётся в редакторе нелинейной анимации вне зависимости от того, что происходит в редакторе действий. Полосы NLA можно удалять, как и всё остальное в Blender — с помощью клавиши X, но сейчас этого делать не надо. Наведите мышь на любой элемент NLA или канал для арматуры, нажмите Shift+A и выберите FrontToBack для создания полосы NLA для FrontToBack, которая будет выглядеть как на рисунке 9.11.

Заметьте, что на вашем мониторе выбранные полосы выглядят жёлтыми, тогда как невыбранные — розовыми. Вы можете выбирать полосы таким же образом, как выбираете любые другие объекты в Blender, щёлкнув правой кнопкой мыши по нужной полосе или нажав клавишу A для выбора всех полос. Так же, вы можете сделать полосу активной, щёлкнув по ней. Активная полоса выделяется чёрным кружком с левой стороны.

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

Нелинейная анимация в Blender_10.jpg

Рисунок 9.10 FrontToBack как активное действие

Нелинейная анимация в Blender_11.jpg

Рисунок 9.11 Полоса NLA для FrontToBack

Вывод действий и вывод NLA

Анимация, сгенерированная редактором NLA, основывается на взаимодействии полос NLA. Анимация, сгенерированная выбором действий в редакторе действий, радикально от неё отличается. Вы можете выбрать, какой метод будет использовать Blender (NLA или редактор действий), щёлкнув по иконке слева от названия Armature в области каналов редактора нелинейной анимации.

Если отображается иконка Action (аналогичная иконке редактора действий, выглядит как бегущий человек), то нажатие кнопки воспроизведения (или Alt+A, или Shift+Alt+A, или рендеринг анимации) будет воспроизводить текущее активное действие. Это называется режимом действий (Action mode). Нажатие на эту иконку включает режим воспроизведения NLA, отображает иконку NLA (аналогична иконке редактора NLA, выглядит как стопка прямоугольников с отступами). Когда отображается эта иконка, Blender воспроизводит анимацию, основываясь на полосах в редакторе NLA. Этот режим называется режимом NLA.

Если действия в перекрывающихся полосах редактора NLA имеют дело с различными костями или различными Ipo, то в режиме NLA они будут воспроизводиться одновременно. Однако в данном случае две полосы NLA имеют одинаковую длину и работают с ключами положения и вращения одной и той же кости, так что, по умолчанию они являются взаимоисключающими (можно сделать их Ipo аддитивными, как вы скоро увидите, но по умолчанию аддитивности нет).

В таких случаях Blender воспроизводит нижнюю полосу. Вы можете переместить выбранную полосу вверх или вниз в каналах с помощью клавиш Page Up и Page Down. Заметьте, анимация, воспроизводимая в обоих случаях, одинакова. В первом случае редактор NLA находится в режиме проигрывания действий и SideToSide является активным действием. Во втором случае редактор NLA находится в режиме проигрывания NLA и полоса SideToSide находится в нижнем канале, так что она имеет преимущество перед полосой FrontToBack.

Нелинейная анимация в Blender_12.jpg

Рисунок 9.12 Два варианта проигрывания движения SideToSide

Больше удовольствия с полосами NLA

Как упоминалось ранее, полосы NLA это больше, чем просто экземпляры действий. У них также есть ряд свойств, которые определяют их поведение и то, как действия, заключённые в них, взаимодействуют с анимацией в целом. Чтобы увидеть свойства полосы NLA SideToSide, выберите полосу, щёлкнув по ней правой кнопкой мыши, после чего нажмите клавишу N, чтобы показать плавающее окно Transform Properties.

Среди всего прочего свойства трансформации полосы определяют её начальную и конечную точки и количество повторений действия, которое представляет полоса. Сразу после создания количество повторений равно 1, а длина полосы идентична длине самого действия. Чтобы увидеть, что получится при изменении этих параметров, поднимите количество повторений до 2, изменив значение поля Repeat, как показано на рисунке 9.13.

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

Нелинейная анимация в Blender_13.jpg

Рисунок 9.13 Свойства трансформации полосы NLA

Теперь вы можете очень чётко видеть разницу между режимами воспроизведения. На рисунке 9.14, в режиме проигрывания анимации NLA, кость качается вперёд и назад на удвоенной скорости за время повторения полосы.

Если вы переключитесь в режим воспроизведения действий, как показано на рисунке 9.15, то не увидите двойного повторения, но удвоенная скорость останется, как и в режиме NLA. Теперь кость быстро качается назад и вперёд за первые десять кадров анимации, а оставшиеся 10 кадров стоит неподвижно.

Вы видите действие изолированно, но так, как оно было обработано редактором NLA, поскольку полоса NLA является активным каналом редактора NLA, что заметно по чёрному кружку. Когда полоса NLA помечена чёрным кружком, то действие, как в режиме воспроизведения действий, так и в редакторе действий, соответствует версии действия, обработанной NLA.

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

Нелинейная анимация в Blender_14.jpg

Рисунок 9.14 Режим проигрывания NLA

Нелинейная анимация в Blender_15.jpg

Рисунок 9.15 Режим проигрывания действий при активной полосе NLA в редакторе NLA

Нелинейная анимация в Blender_16.jpg

Рисунок 9.16 Режим проигрывания действия при активном «сыром» действии в редакторе NLA Editor

Аддитивные полосы NLA

Как я упоминал ранее, можно сделать эффект полос NLA аддитивным, а не приоритетным (precedence-based). В этом случае значения кривых Ipo полосы не будут перекрывать полосы с более низким приоритетом, а будут складываться с ними. Чтобы сделать SideToSide аддитивной просто выберите кнопку Add в окне Transform Properties. Разумеется, это окажет эффект в режиме проигрывания анимации NLA. В нашем случае при выбранном Add движение полосы FrontToBack тоже будет видимым в анимации.

Страница: 1 2
Поделиться в: Опубликовать в twitter Опубликовать в своем блоге livejournal.com