F-кривые анимации в Blender. Интерполяция

Обновлено:

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

Редактор графов и F-кривые

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

Чтобы понять, почему так происходит, потребуется освоить работу в новом для нас редакторе Блендера — редакторе графов (Graph Editor | Редактор графов). Откроем его вместо временной шкалы.

F-кривая изменения координаты X в редакторе графов Блендера 3D

В рабочей области (которая масштабируется, как и в других редакторах, колесом мыши) красным цветом отображен график изменения значения координаты X объекта во времени. Подобные графики называются F-кривыми. На скриншоте кривая выделена, для сброса выделения достаточно кликнуть в не ее пределов. Для повторного выделения кликать надо либо по точкам на кривой, либо растянуть небольшую рамку выделения по самой линии.

Горизонтальная ось системы координат — это кадры, вертикальная — значения свойства. Так на скрине выше текущий кадр 100-ый, и в это время куб находится немного слева от центра сцены, и значение его координаты X примерно равно -3. В 250 кадре значение координаты больше 10-ти. До 1-го кадра и после 250-го значение X не меняется, и кривая на этих отрезках становится горизонтальной линией.

Отрезок между 1-м и 250-м кадром имеет вид кривой Безье. На графике можно заметить, что в ее начале и конце значение координаты X меняется не так значительно с течением времени, как в центральной части. Именно поэтому куб движется неравномерно.

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

Так на изображении ниже был добавлен еще один ключевой кадр путем создания дополнительного узла на F-кривой. Непосредственно в редакторе графов это можно сделать через контекстное меню, вызываемое кликом правой кнопки мыши (пункт Insert Keyframes | Вставить ключевые кадры). Кривая при этом должна быть выделена, ключ создается в текущем кадре.

Изменение анимации в редакторе графов: редактирование f-кривой

Опишем движение объекта по оси X, опираясь на график представленного скриншота. С 1-го по примерно 75-й кадр куб быстро двигается направо (исходя из установленного вида сцены) и уходит за центр координат справа. Об этом говорит то, что значение его координаты X становится больше нуля. Где-то с 75-го по 170-й кадр значение свойства X куба уменьшается. Это значит, что он движется в обратном направлении (справа налево) и уходит по левую сторону от центра координат. И только после этого опять быстро перемещается вправо.

Таким образом, волнообразное изменение F-кривой говорит нам о возвратно-поступательном, или реверсивном, движении объекта. Значение свойства меняется туда-сюда во времени.

Режимы и типы интерполяции F-кривых в Blender

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

Настройка в редакторе графов способа интерполяции между ключевыми кадрами

В Blender встроены разные типы интерполяции. Они представляют собой предопределенные (готовые) математические шаблоны, которые покрывают большинство задач аниматора. Вместо того чтобы вручную настраивать "усы" (handles) кривых на каждом ключевом кадре, вы выбираете готовый алгоритм. Программа берет фиксированную математическую формулу и накладывает её на отрезок между двумя ключами.

Пресеты интерполяции базовой группы (режимы интерполяции):

Математические кривые, или типы смягчения (easing), включают графики разной степени крутизны. Чем выше степень, например, Quintic (пятой степени) по сравнению с Quadratic (квадратичной), тем резче и "взрывнее" будет ускорение объекта в середине пути.

Пресеты динамических эффектов (dynamic effects):

Итак, интерполированная анимация — это автоматическое определение свойств объекта во всех кадрах между ключевыми в зависимости от выбранного метода интерполяции. Интерполяция контролируется кривыми анимации (F-Curves) в редакторе графов.

Каналы в редакторе графов

Учитывая, что может анимироваться сразу несколько свойств объекта, в редакторе графов мы будем видеть множество кривых.

Множество F-кривых в Graph Editor. Включение и отключение каналов анимации

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

Практическое задание: создание пульсирующей анимации в Blender

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

Для UV-сферы создайте анимацию того, как она разжимается и сжимается, задействуя при этом все три оси масштабирования (scale). Откройте редактор графов и отрегулируйте F-кривые, чтобы пульсация была плавной на увеличении меша и резкой на уменьшении.