Уроки по Blender: основы анимации
Разбираемся в более продвинутых понятиях и инструментах.
Иллюстрация: Busbus / Rawpixel / Image from Pngegg / Pngegg / Annie для Skillbox Media
Год назад в рамках своего YouTube-канала Андрей записал подробный курс по Blender, в котором работает более семи лет. Обучение начинается с основ, рассчитанных в первую очередь на новичков, но последующие уроки могут быть интересны и для продвинутых пользователей — в них Андрей затрагивает скрытые возможности софта. Сам материал записывался в версии программы 2.90.1, но знания актуальны как для ранних версий (от 2.80), так и для последней (3.0.0).
Делимся основными тезисами пятого видеоурока, в котором изложены основы анимации с помощью ключевых кадров, драйверов и модификаторов. С предыдущими уроками, посвящёнными структуре объектов, оптимизации и рандомизации через инструменты Blender и скрипты Python, можно ознакомиться по ссылке.
Анимация с помощью ключевых кадров
В Blender существует несколько способов анимации. Самый очевидный — анимация при помощи ключевых кадров или кейфреймов (Keyframe). В нижнем окне программы по умолчанию открыт таймлайн — временная линия, на которой можно фиксировать различные параметры объектов в виде ключевых кадров.
Попробуем зафиксировать положение куба на кадре 1. Выбираем объект, нажимаем I — горячую клавишу Меню вставки ключевых кадров (Insert Keyframe Menu) — и выбираем Положение (Location). На таймлайне добавится кейфрейм со значением «0, 0, 0».
Переходим на 50-й кадр, перемещаем куб куда-нибудь в сторону, ещё раз нажимаем I и выбираем Положение (Location), фиксируя новые координаты. Запускаем воспроизведение анимации в таймлайне (Space) и видим передвижение объекта. Программа самостоятельно высчитывает, как он двигается между двумя заданными ключевыми кадрами.
Движение производится плавно, поскольку по умолчанию при добавлении кейфреймов интерполяция между ними представлена в виде кривой Безье. Это визуально отображено в Редакторе графов (Graph Editor).
Редактор графов похож на таймлайн, но в нём отображена более детальная информация о ключевых кадрах и том, как они интерполированы — то есть как кривая отображается на графике.
Как уже упоминалось ранее, в качестве режима интерполяции по умолчанию используется кривая Безье — это означает, что объект медленно начинает движение, разгоняется и постепенно замедляется к концу анимации. Для наглядности переведём Центр трансформации (Pivot Point) в режим Индивидуальные центры (Individual Centres) и сделаем кейфреймы чуть шире при помощи клавиши S. Это отразится на графике, и распределение скорости движения объекта между кейфреймами изменится. С этими настройками также можно экспериментировать.
Рассмотрим другие режимы интерполяции. Полный список вызывается клавишей T.
Линейно (Linear) — объект движется равномерно, без замедлений и ускорений. Этот режим может оказаться удобным для таких задач, как, например, анимация вращения Земли вокруг своей оси.
Постоянно (Constant) — промежуточное значение между кадрами отсутствует. Подойдёт для стоп-моушн-анимации.
Рассмотрим режимы из списка Динамические эффекты (Dynamic Effects).
Отскоки (Bounce) — эффект затухающего подпрыгивания объекта после его падения.
Упругое (Elastic) — эффект струны, которую натянули, а затем отпустили.
Сзади (Back) — объект перелетает чуть дальше заданной точки и возвращается к ней.
Попробуем анимировать другие параметры, например вращение. Задаём для объекта исходный угол вращения, вызываем меню через горячую клавишу I, выбираем Вращение (Rotation). Затем повторяем то же самое для другого кадра.
примечание
Меню вставки ключевых кадров необязательно вызывать во вьюпорте. Можно навести курсор на нужный параметр во вкладке Трансформация (Transform), при необходимости изменить значение и нажать I. Параметр станет жёлтым, оповещая, что изменения зафиксировались в ключевом кадре.
Анимация с использованием ключевых кадров работает не только со стандартными параметрами объектов (положение, вращение, масштаб), но и с настройками материалов, модификаторов и прочих инструментов программы.
Изучаете Blender? Присмотритесь к курсу Skillbox «3D-художник». Проходя курс, вы научитесь работать с Autodesk Maya, Blender, Houdini, Substance Painter и Photoshop с нуля до профессионального уровня.
Анимация с помощью драйверов
Драйверы в Blender дают возможность задавать зависимости каких-либо параметров одного объекта от определённых параметров другого. Рассмотрим это на практике.
Удаляем прошлый объект, создаём новый куб и пустышку Оси (Plain Axes), с которой мы работали во втором уроке. Перемещаем её в сторону по оси X (G + X), выделяем куб и, кликнув правой кнопкой мыши по одному из трёх параметров Вращения (Rotation) на панели Трансформация (Transform), выбираем пункт Добавить драйвер (Add Driver).
Появится окно с настройками драйвера (всплывающее предупреждение игнорируем). Драйверы поддерживают однострочные выражения на языке Python, но по сравнению с полноценным скриптингом их функциональность сильно ограничена. В ряде случаев использование драйверов может привести к нестабильной работе — например, анимированные с их помощью объекты при рендере останутся статичными или будут двигаться не так, как при воспроизведении анимации во вьюпорте. Тем не менее драйверы удобны для совершения простых операций.
примечание
Функционал Python в драйверах ограничен встроенными методами языка Python и содержанием нескольких импортированных в пространство драйверов модулей: math, mathutils, bpy. Для тех, кто разбирается в Python, выражение, которое мы здесь пишем, — это, по сути, лямбда-функция, со всеми вытекающими последствиями. Полный список доступных классов и методов можно посмотреть в Консоли Python (Python Console) (см. третий урок) через автозаполнение в словаре bpy.app.driver_namespace. С помощью скриптов Python в этот словарь можно добавлять и другие функции.
У драйверов есть параметр Тип (Type), то есть способ, с помощью которого драйвер вычисляет итоговое значение. В этом уроке мы рассмотрим тип Скриптовое выражение (Scripted Expression).
Зададим переменную для куба. В качестве Объекта (Object) выбираем Пустышку (Empty). Напротив пункта (x) изменяем название с «переменной» (в английской версии var) на empty. В Выражении (Expression) также заменяем var на empty.
Ниже, в пункте Тип (Type), определяем, какой именно параметр пустышки мы будем применять в качестве драйвера для вращения куба. Выберем Положение X (X Location) — это означает, что для вращения куба мы используем позицию Пустышки (Empty) по оси X. Теперь, если двигать пустышку по этой оси — куб начнёт вращаться.
Для анимаций можно писать небольшие формулы. В драйверах они называются выражениями. Возвращаемся в меню, нажав на модифицированный параметр ПКМ и выбрав Редактировать драйвер (Edit Driver). В Выражении (Expression) умножаем переменную empty на 2 и нажимаем Enter.
Знак звёздочки (*) означает умножение. Нажимаем Enter. Теперь, если перемещать пустышку по оси X — куб вращается в два раза быстрее.
Продолжаем эксперимент: дублируем куб (Shift + D), выделяем его и чуть сдвигаем в сторону. Заходим в Редактировать драйвер (Edit Driver) и в строке Выражение (Expression) пишем:
Так второй куб будет вращаться уже в четыре раза быстрее, что хорошо заметно в сравнении с первым.
Этим методом удобно анимировать механизмы, шестерёнки и различные конструкции, зависимые друг от друга. Во время работы всегда проверяйте, отобразится ли итоговый результат в рендере и при экспорте. Рекомендуется воздержаться от сложных систем анимаций — использование драйверов не даёт стопроцентной гарантии корректного воспроизведения анимации даже при простых операциях.
примечание
Важно знать, что в Выражении (Expression) нельзя импортировать модули Python. Например, в теории можно было бы установить случайное число для вращения множества кубов, как в третьем уроке, написав для первого куба выражение empty *2 *random.randint (0,100). К сожалению, драйвер «не знает» ни о модуле random, ни о методе randint, поэтому случайные числа можно использовать только непосредственно в Python.
Существуют выражения, которые позволяют анимировать объекты без участия других объектов. Удалим данные из первого куба — его переменную и само выражение. Анимация — это изменение параметра во времени, и на каждом кадре у него может быть своё значение. Если написать в Выражении (Expression) слово frame — драйвер на каждом кадре будет выставлять значение параметра, равное текущему кадру. Так происходит потому, что frame в Blender — ключевое слово, обозначающее номер текущего кадра.
примечание
При подключённом драйвере необязательно переходить в меню Редактировать драйвер (Edit driver), чтобы поменять выражение. Достаточно щёлкнуть ЛКМ по параметру, который нужно изменить, прямо во вкладке Трансформация (Transform) и набрать выражение там.
Сейчас куб вращается с огромной скоростью — на кадре 9 он поворачивается на 516°. Это объясняется тем, что для параметра вращения счёт идёт в радианах, а не в градусах. Чтобы перевести значение в градусы, напишем выражение.
В данном случае pi — тоже ключевое слово, которое обозначает математическое число π (3,14159…). Нажимаем Enter и видим, что на кадре 9 куб поворачивается на 9°. Если анимацию нужно ускорить — умножаем формулу на нужное число (для наглядности возьмём первую часть выражения в скобки), например 20:
Теперь куб начнёт вращаться со скоростью 20° в кадр, и на кадре 9 он повернётся на 180°. Чтобы замедлить вращение, уменьшите число.
Ещё можно написать выражения с использованием синусов (sin), косинусов (cos), тангенсов (tan), арктангенсов (atan) и других функций. Рассмотрим следующий пример:
Если вы помните из уроков математики, на графике синус отображается в виде волны. При таком выражении куб начнёт вращаться из стороны в сторону.
Для уменьшения амплитуды можно поделить значение — например опять на 20:
В этом случае куб будет слабо покачиваться.
Такие базовые операции очень удобны для реализации каких-то фоновых событий, например полёта облаков по небу или колыхания травы, — нужно всего лишь «повесить» драйвер на объект, и тот будет двигаться сам по себе. При этом никакие ключевые кадры не нужны.
Чтобы удалить драйвер с объекта, кликните ПКМ по модифицированному параметру и нажмите Удалить драйверы (Delete Drivers).
Здесь мы напомним про курс Skillbox «3D-художник». За год обучения вы научитесь 3D‑моделированию, добавите более 20 практических работ в портфолио и освоите профессию, востребованную в кино- и игровой индустрии.
Анимация с помощью модификаторов
Ещё один инструмент для анимации — модификаторы в Редакторе графов (Graph Editor). Рассмотрим, как они работают.
Переходим в начало таймлайна, затем на панели Трансформация (Transform) кликаем правой кнопкой мыши на Положении (Location) объекта по оси X и выбираем Вставить ключевые кадры (Insert Keyframes).
Теперь переходим во вкладку Object Transforms, которая появилась в левой части Редактора графов (Graph Editor). Выбираем пункт X Положение (X Location) и нажимаем N. Справа появится панель со вкладкой Модификаторы (Modifiers).
В списке Добавить модификатор (Add Modifier) выбираем Шум (Noise). Он изменяет положение объекта по оси X независимо от ключевых кадров, хотя мы по-прежнему можем изменять это положение на графике кейфреймов. При добавлении модификатора общая траектория графика не меняется, но теперь именно он устанавливает точное положение объекта на основе заданного ключевыми кадрами.
После добавления Шума (Noise) на панели появится список параметров модификатора. Рассмотрим их.
Масштаб (Scale) — отвечает за скорость движения объекта (в данном случае по оси X, потому что выбрана ось X).
Интенсивность (Strength) — амплитуда, с которой объект передвигается по оси.
Смещение (Offset) — сдвиг огибающей шума назад или вперёд.
Фаза (Phase) — создаёт случайный исходный элемент (фазу или противофазу).
Глубина (Depth) — добавляет небольшую динамику внутри, как при потряхивании.
Попробуем применить настройки для остальных осей. Копируем модификатор вместе с заданными параметрами, нажав на значок, указанный на скриншоте ниже.
Выбираем другую вкладку, например Y Положение (Y Location), и вставляем настройки, кликнув на значок, расположенный рядом со значком копирования. Теперь куб двигается по двум осям. Для наглядности мы можем чуть изменить параметр Смещения (Offset) и увидеть, как объект хаотично передвигается по осям X и Y.
Аналогичные манипуляции можно провести и с осью Z. Если снова скопировать настройки и изменить параметр Смещения (Offset), куб начнёт беспорядочно передвигаться уже по трём осям. Модификатор очень удобен, если объектам нужно задать хаотичное движение.
Свойства модификаторов можно ограничивать. Отключим модификатор для осей Z и Y, нажав на галочку справа.
Модификатор для X Положения (X Location) оставляем включенным. В его настройках выбираем пункт Ограничить диапазон кадров (Restrict Frame Range) и задаём диапазон — с какого по какой ключевой кадр будет работать модификатор. Для примера возьмём промежуток от 50 до 150. Если нужно плавное затухание в начале и в конце анимации, помогут параметры Начало смещения (In) и Выход (Out) — аналоги fade-in/fade-out в звуковых дорожках. Настраиваем их на своё усмотрение и смотрим результат.
Если одного модификатора недостаточно, можно добавить ещё один Шум (Noise) и активировать его на другом отрезке таймлайна или наложить на первый — например, чтобы создать «фон».
Кроме Шума (Noise) есть и другие модификаторы. Напоследок рассмотрим один из них — Генератор (Generator). Добавим его для X Положения (X Location) и включим в настройках Добавление (Additive) — так его значения будут добавляться к значениям предыдущего модификатора. В противном случае он их перекроет. Для наглядности в пункте x^1 уменьшим значение до 0,1 — теперь при анимации куб медленно «поедет» по оси X. Так как у нас включён предыдущий модификатор Шум (Noise), с 50-го по 150-й кадр объект будет «потряхивать».
При этом вручную выставлять ключевые кадры не нужно, как и с драйверами, — вся анимация происходит автоматически. На практике такие колебания, тряски и другие простые движения придают объектам больше жизни и отлично подойдут для анимации в костях арматуры (объекта, схожего с человеческим скелетом), которую мы рассмотрим в следующем уроке.
примечание
Хоть анимация и происходит автоматически, для того, чтобы можно было воспользоваться модификаторами, необходимо установить хотя бы один ключевой кадр на нужном параметре.
Таким образом, мы изучили три основных способа воспроизведения анимации, которые можно использовать для решения любых задач, независимо от сложности проекта. А дальнейшие эксперименты с настройками помогут реализовать все ваши задумки.