Скрипты для упрощения рабочего процесса в After Effects своими руками. Часть 1.

Всем доброго дня!

Поговорим сегодня о том, как написание скриптов может облегчить жизнь. Хотя что об этом говорить — это же очевидно! Каждый день тысячи пользователей After Effects отсылают лучи виртуальной благодарности разработчикам сотен дополнительных скриптов, облегчающих их жизнь. Но вот часто бывает такое, что есть какая-то мелкая проблема, которая волнует только тебя, мой читатель. Однако меня то это не волнует — поэтому расскажу о вещах затронувших именно меня.

Начнем.

У вас бывало такое (типичный заход стендапа), что вам приходят десятки красивых иллюстраций из Adobe Illustrator’a, вы импортируете всю эту красоту в Афтер, выбирая опцию Composition — Retain Layer Sizes. И получаете десяток композиций в котором все векторные слои по какой-то причине находятся с отжатой галкой collapse transformation/continuously rasterize. «Да что за дела, я ж специально в Люстре все делал ради векторизации!», — стиснув зубы ты тыкаешь первую композицию, Ctrl+A, клик на солнышке, тыкаешь следующую композицию, Ctrl+A, клик на солнышке… В стендапе в этом месте идёт смешной выверт с сочетанием слов «я», «тыкать» и «твоя мамка», а мы же с вами отметим, что каждый раз когда встречается какое-то повторение одних и тех же действий — это явный сигнал возможности применения скриптов.

Ну что, сформируем задачу для скрипта: выделяем несколько (1-n) композиций в окне проекта, нажимаем кнопку -> у всех слоев в них проставляется функция collapse transformation/continuously rasterize.

Задача довольно простая для любого скриптописца. Поэтом то мы и учимся на таком простом примере, ну! Вот как выглядит код:

Давайте разбираться!

Во-первых, весь код мы обрамили в конструкцию:

Это так называемые undo groups, по-русски звучит как «группа отмены действия» полагаю… Все что заключено между ними считается одним действием, так если ваш скрипт изменить 50 слоев, то все изменения можно убрать всего лишь одним Ctrl-Z. Если не воспользоваться этой конструкцией — потребуется нажать Ctrl-Z 50 раз. В кавычках указывается имя группы — оно будет отображаться в интерфейсе программы, так что отнеситесь к этому с воображением.

Дальше объявляем переменную выделенных композиций:

Немножко объяснений: app — эта переменная отвечает за доступ к приложению After Effects и его настройкам, project — отвечает за текущий проект. Наконец selection — это все элементы, выделенные в окне Project. Обо всем этом можно прочитать в Scripting Guide. Итак, в activeComps у нас теперь массив всех выделенных элементов окна проектов.

Запускаем цикл по выделенным элементам — начинается от нуля, количество выделенных элементов определяется функцией length() (есть у всех массивов).

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

Дальше мы получаем все слои в текущей композиции, пробегаем по ним с помощью цикла for, вводим переменную для текущего слоя и проверяем что это не нул и одновременно объект AVLayer (т.е. одно из следующих: composition layers, footage layers, solid layers, text layers, and sound layers).

Ну и вот то, ради чего мы тут собрались! Проверяем, что данному слою вообще можно установить флаг Collapse Transformation с помощью функции canSetCollapseTransformation, проверяем что эта галочка еще не стоит — и ставим её.

Скрипт готов, сохраняем его как файл с расширением jsx

Упакуем все в кнопку.

Мы запланировали статью, рассказывающую как сделать собственную панельку с кнопками, а пока чтобы не мучатся при вызове этого скрипта лучше повесить его на кнопку в ftToolbar. Для этого создаем новую кнопку в ftToolBar, выбираем Script Launcher, задаем путь к скрипту и даем название кнопке. Я назвал её «l.».

Вот что у нас в итоге получилось:

script for simple collapse transform