Привязка к кадрам

При создании анимации иногда бывает необходимо выполнить какие-то действия в зависимости от времени или, что в сущности одно и то же, номера текущего кадра. Осуществить привязку анимации к кадрам в Blender возможно с использованием встроенного Python API.

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

  1. Для начала добавим в сцену текст:
    1. shift+a – Text
      1. переименовать его в “toLower”
      2. заменить базовое “Text” на что-нибудь более интересное, например “cartoon” (мультфильм).
      3. придать немного объемности
        1. в окне Properties во вкладке Object data в панели Geometry:
          1. Extrude = 5
          2. Depth = 1
          3. Resolution = 2
Создание текста

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

  • frame_change_pre – возникающего перед сменой очередного кадра
  • frame_change_post – возникающее после смены очередного кадра

Подключив для работы с API Blender внешнюю IDE PyCharm или же просто воспользовавшись встроенным текстовым редактором, определим функцию, которая будет выполнять необходимые действия при смене кадра:

В первых четырех строчках функция определяет переменные startFrame – номер первого кадра, endFrame – номер последнего кадра и currentFrame – номер текущего кадра, а так же ссылку на созданный ранее объект с текстом “toLower”.

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

Осталось главное – подключить созданную функцию в качестве обработчика события смены кадров анимации.

Для этого необходимо добавить ее в список обработчиков события frame_change_pre:

Данный код сначала проверяет, не была ли зарегистрирована данная функция как обработчик этого события ранее, и если нет – добавляет ее в список обработчиков события frame_change_pre.

Полный код скрипта выглядит следующим образом:

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

Анимация после запуска скрипта

Можно подобрать шрифт повеселее, настроить фон и материалы и отправлять анимацию на рендер.

Nikita

Автор: Nikita

Blender add-ons developer and articles writer.