Как GPT помог мне создать плагин для After Effects: экономим часы на нейминге слоев

"Время — деньги"

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

мем
мем

Я работаю в Adobe After Effects (далее просто AE) уже несколько лет, в основном с шейповой графикой. Часто, начиная работу над проектом после того, как тебе передали файл от иллюстратора, сталкиваешься с тем, что, если иллюстратор не знает минимальных принципов, по которым далее идет работа аниматора, или его об этом не предупреждали, то проект для аниматора может оказаться в ужасном состоянии. В конечном итоге тебе отдают его с 100+ слоями, названия которых варьируются от "vector, vector, group, group" до "слой0101, слой0201, слой0202". Импорт завершен, ты мимолетно оцениваешь вьюпорт — он отличный, но на таймлайне царит хаос с признаками физического насилия синевато-серых оттенков. Конечно, я утрирую, но ощущается это именно так.

мем на основе одного из моих проектов
мем на основе одного из моих проектов

Так на этом скриншоте выглядит мой типичный таймлайн после импорта проекта из Figma. Как видите, даже те слои, которые по своей природе не являются вектором, все равно называются "Vector", и в итоге в проекте оказывается 200+ слоев с этим проклятым именем вперемешку с еще какими-то слоями с именем "group".

Проблема и варианты ее решения

мем
мем

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

Варианты решения:

1. Попросить заказчика вернуть проект иллюстратору для доработки с учетом требований аниматора. Однако этот вариант редко срабатывает и не нравится ни заказчику, ни иллюстратору. Заказчик может не желать снова связываться с иллюстратором, особенно если сотрудничество уже завершено, или исполнитель может быть недоступен.

2. Использовать плагины внутри AE. Я пробовал несколько разных плагинов для решения этой проблемы, но ни один не подошел. У одних был недостаточный функционал, у других — слишком сложный процесс использования. Последний плагин, который мне хоть как-то помогал, был "AE Global Renamer 2". Но его название говорит само за себя: он переименовывает только те слои, у которых уже есть адекватные имена или хотя бы похожие на них. А как переименовать, если у всех слоев одинаковые имена? К тому же, у этого плагина запутанный интерфейс и требуется вводить сложные выражения — это мое личное мнение.

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

Идея и ее реализация

Все вышеперечисленное стало главной причиной возникновения идеи создать собственное решение. Дополнительное вдохновение я получил от мини-скрипта "FXrenamer", созданного другим пользователем AE также с помощью GPT. Его скрипт выполнял единственную функцию — назначал в качестве имени слоя перечень наложенных на него эффектов. Закончив очередной проект с подобной проблемой, я твердо решил разобраться с ней и приступил к разработке собственного инструмента.

Я начал мозговой штурм. Ключевыми желаниями были:

мем
мем

Пересматривая проекты с хаосом из одинаковых имен, я обратил внимание на следующее: у каждого слоя в AE на таймлайне есть общие и уникальные свойства, такие как позиция, размер, вращение, непрозрачность и другие. И тут меня осенило: можно создать библиотеку "умных" переменных из этих свойств и их значений, где каждая переменная будет получать индивидуальное значение для каждого слоя. Далее из этих переменных можно составлять выражение исходя из необходимости названия для слоев или их непосредственной функции.

Реализация

С чего началась непосредственно разработка? Все началось с приобретения подписки на GPT PLUS, ведь я далеко не профессиональный программист и даже не среднего уровня, хотя и знаком с основами JavaScript и принципами работы языков программирования. Получив доступ к этой "ИИ-шной" магии, я приступил к составлению промта, с которого все и началось. Моя первоначальная цель была проста: создать элементарный графический интерфейс с одним полем ввода и кнопкой, чтобы проверить, можно ли с помощью GPT создать что-то действительно работающее. Оригинальный промт, к сожалению, не сохранился, но выглядел он примерно так:

Я: "Мне нужен скрипт для Adobe After Effects с графическим интерфейсом, содержащим поле ввода и кнопку, которая переименовывает слои на таймлайне в значение из этого поля."

GPT: "Конечно! Вот код на JavaScript. Создайте файл, поместите его в указанную директорию, откройте в AE — и все должно работать. Дайте знать, если возникнут трудности."

Я последовал инструкциям, и скрипт запустился с первого раза, выполняя именно то, что я запрашивал: простая панель с полем ввода и кнопкой для переименования слоев. Осознав потенциал этой "ИИ-шной" магии, я решил расширить функционал и логику работы скрипта.

Я: "Ок, это работает. Теперь нужно добавить возможность выбора слоев (все или только выделенные)."

GPT: "Конечно! Вот обновленный код на JavaScript. Я добавил две радиокнопки Total и Selected для выбора слоев."

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

NitroNamer - версия 1
NitroNamer - версия 1

Переход на новую среду разработки

Обнаружив критическую ошибку, из-за которой скрипт не запускался, я понял, что мне нужен более мощный инструмент для разработки и отладки. Код разрастался, и редактор Sublime Text уже не подходил, так как не позволял полноценно отлаживать код для AE. Кроме того, мне требовался контроль версий, что означало необходимость освоения Git.

И снова на помощь пришел GPT-4. Потратив один вечер, я установил Visual Studio Code, создал аккаунт на GitHub, настроил репозиторий для плагина и установил необходимые плагины для отладки кода в AE. GPT-4 шаг за шагом объяснял мне, как это сделать, и весь процесс прошел гладко.

Вторая версия плагина

Во второй версии я исправил критическую ошибку, улучшил интерфейс и добавил новые переменные. Общение с GPT-4 в процессе разработки выглядело примерно так:

Я: "Сейчас я тебе напишу код для скрипта в Adobe After Effects, внимательно просмотри его и я скажу, что делать с ним дальше."

GPT: "Хорошо, пришлите код, я его просмотрю и мы будем его дорабатывать по вашим инструкциям"

Я: "[Код]"

GPT: "Ваш код выглядит комплексно и выполняет такие-то действия, что вы хотите с ним сделать?"

Я: "Мне нужен такой-то функционал и он должен выполнять такие-то действия при таких-то условиях, напиши часть кода которую ты изменил"

GPT: "Вот обновленные части [Кода] для вашего плагина, пожалуйста протестируйте его"

Я: "Я протестировал его, описанный функционал работает не совсем корректно, давай уточним детали работы этого функционала. (Уточняю работу функционала (более детально описываю то что необходимо)"

GPT: "Я вас понял, давайте переделаем его, что бы он более точно соответствовал вашим уточненным требованиям. Вот обновленный [Код]"

Я: "Хорошо, теперь это работает. Давай продолжим его дорабатывать"

Так проходило наше взаимодействие. Если GPT-4 начинал отклоняться от темы или опираться на устаревшую информацию, я просто начинал новый чат, чтобы сосредоточиться на текущих задачах. Кстати вот как выглядела вторая версия плагина

NitroNamer - версия 2
NitroNamer - версия 2

Восхищение от результатов

Я был чрезвычайно доволен созданным инструментом. Он полностью решал задачи, которые меня так долго бесили. Теперь мне все равно, переименовывал ли иллюстратор слои или нет — два действия в моем плагине полностью устраняют эту проблему.

мем
мем

Планирование новой версии

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

  • Система сохранения и обновления шаблонов и настроек
  • Расширенный набор переменных
  • Дополнительные режимы логики работы для некоторых переменных
  • Функция копирования имени выбранного слоя
  • Просмотр всех значений для всех переменных
  • Использование горячих клавиш для взаимодействия со скриптом
  • Настройка интерпретируемых значений в определенных случаях для некоторых переменных
  • Два режима интерфейса: минимальный и стандартный

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

К концу разработки основной код скрипта составлял более 2000 строк. GPT без проблем обрабатывал такой объем, находя нужные фрагменты по моим описаниям. Весь проект вырос до более чем 3600 строк кода. На все ушло чуть меньше месяца свободных вечеров и $40 за два месяца подписки на GPT Plus. Вот как выглядит последняя, и текущая, версия моего плагина, которой я пользуюсь уже больше месяца и очень доволен.

NitroNamer - основной UI
NitroNamer - основной UI
NitroNamer - схема элементов управления и взаимодействия
NitroNamer - схема элементов управления и взаимодействия

Итоги

Что я получил, создавая этот проект:

  • Уникальный инструмент для экономии времени и повышения удобства работы в Adobe After Effects
  • Ценный опыт разработки решения с помощью нейросети Chat GPT-4
  • Навыки работы с GitHub и тестирования через Visual Studio Code
  • Уверенность в том, что любую проблему можно решить, даже не имея глубоких навыков программирования, но обладая желанием и целью
  • Позитивные эмоции от проделанной работы и достигнутого результата

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

Где скачать и сколько это стоит?

С самого начала я решил, что мой инструмент будет абсолютно бесплатным для всех желающих. Проект имеет лицензию MIT. Исходный код скрипта полностью открыт, а релизы доступны в репозитории на GitHub и в моем Telegram-канале. Также я создал онлайн-документацию на Notion с поддержкой русского и английского языков.

мем
мем
88
11
11
4 комментария

На самом деле нет третьего варианта — слить всё лишнее, переименовать и переделать под себя в люстре самостоятельно. Я бы с ума сошёл возиться с миллионом слоёв в афтере, даже переименованных.

Да и всё равно, даже если шарит, иллюстратор не залезет тебе в голову. Что-то под себя переделать да придётся.

2
Ответить

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

Ответить

О, хорош, я себе сделал скрипт для фотошопа для ускорения локализаций, когда надо условный скрин сделать на 20 языков

1
Ответить

Открыл однажды свой проект десятилетней давности, а там все слои выглядят как говно, бардак, нейминга нет, ахаха, тоже гуглил скрипты для переименования и не нашёл подходящего, в итоге руками причесал)) Сейчас редко такое бывает надо, но за оригинальное решение всё равно спасибо, поковыряю на досуге. Интересная история с жпт, обалдеть, это надо взять на вооружение

1
Ответить