Скрипти у After Effects

Використовуємо JavaSсript для додавання EXIF ​​інформації в time-lapse.

ПредмоваВідео в попередньому пості зроблено повністю з фотографій. А тепер я додав інформацію про витримку та час зйомки для кожної фотографії. Ця інформація взята з EXIF, куди камера записує безліч різних параметрів знімка. Взято за допомогою програми ExifToTxtGUI (про програму, завантажити). Ця програма написана моїм хорошим знайомим, дайрі користувачем zzeneg, за що йому спасибі. У кратці: ExifToTxtGUI здатна з купи фотографій витягнути EXIF ​​і потім параметри вибору користувача зберегти в текстовий файл. У мене було трохи менше 5000 фотографій і насамперед я витягнув дату і час кожного знімка, отримавши текстовий файл з величезною кількістю рядків (трохи менше п'яти тисяч, ваш КО).

Вибираємо After EffectsЩоб для кожного кадру показати час зйомки, потрібно створити для кожного кадру титр тривалістю в один кадр з тим самим часом зйомки. З огляду на те, що кадрів у мене дуже багато, і що в ручну це робити дуже довго, я вирішив шукати засіб автоматизації, і природно знайшов. У програмі Adobe After Effects є чудовий засіб, що має назву - сценарії. Сценарії пишуться мовою Javasсript і дозволяють автоматизувати практично будь-які дії.ДокументаціяІ я зіткнувся з необхідністю пошуку інформації з мови JavaSсript, а точніше за командами роботи з After Effects. І така інформація знайшлася на Adobe Developer Connection, куди мене вивела, як не дивно, вбудована довідка After Effects – Help – Scripting help. Ця інформація - повний офіційний англомовний посібник із написання скриптів у After Effects: After Effects CS3 Scripting Guide.pdf На жаль англійські тексти для мене сильноуповільнюють сприйняття інформації, треба більше за практику. Натомість потім я знайшов українську статтю про скрипти в After Effects. Вона, звісно, ​​не така повна порівняно з офіційним керівництвом, зате дозволяє набагато швидше написати свій перший скрипт.

Середовище розробкиУ документації йдеться також про середовище розробки скриптів ExtendScript Toolkit. Щоб туди потрапити з After Effects, потрібно вибрати File - Scripts - Open sсript Editor. До цієї програми є вбудована англомовна довідка, де в основному розглядаються інтерфейси користувача в скриптах, міжпрограмна взаємодія та інші спільні речі. Приватні функції для After Effects описуються в After Effects CS3 Scripting Guide.pdf. Також і з After Effects і з ExtendScript Toolkit поставляються вже написані скрипти для прикладів, у мене вони розплагаються по слід. шляхів: C:\Program Files (x86)\Adobe\Adobe After Effects CS4\Support Files\Scripts C:\Program Files (x86)\Adobe\Adobe Utilities\ExtendScript Toolkit CS4\SDK\Samples\ javasсript

Код скриптаНу щож, я з'ясував де писати і як писати, тепер за справу://скрипт для додавання тривалості експозиції

//очищаємо область виведення, це After Effects -- Window -- Info clearOutput();

//задаємо параметри майбутньої композиції var copmName="myComp"; //string var w &varvar height=1080; //integer var pixelAspectRatio=1; //float var duration=120; //float var frameRate=30; //float

//створюємо саму композицію var myComp = app.project.items.addComp(copmName, width, height, pixelAspectRatio, duration, frameRate);

//вибираємо текстовий файл з необхідною нам Exif інформацією var textFile = fileGetDialog ("Please select txt file", "txt");

//відкриваємо його для читання textFile.open("r","TEXT", ". ");

//виводимо в Info обсяг файлу writeLn(textFile.length+" byte");

//вважаємо кількість рядків у файлі var i = 0; while(!textFile.eof) textFile.readln(); i = i + 1; > var numLineFile = i; //виводимо в Info кількість рядків файлу writeLn(numLineFile + "lines"); textFile. close();

//це вікно з таким текстом і кнопкою ОК, щоб ми могли розглянути alert("click OK and wait");

textFile.open("r", "TEXT", ". "); i = 0; var myTextLayer; var textLine; while(!textFile.eof) / /читаємо рядок у текстовому файлі та переводимо курсор на слід. textLine = textFile.readln(); //на вході будуть рядки з часом експозиції або у вигляді десяткового дробу "0,*" або 1 //десятковий дріб переводимо в звичайний if (textLine.substr(0,1) == ' 0') textLine = "0." + textLine.substr(2); textLine = "1/" + (1 / parseFloat(textLine)); > // до нашої композиції додамо текстовий шар з щойно прочитаним текстом myTextLayer = myComp.layers.addText(textLine); i = i + 1; //виведемо в Info який рядок зараз обробляється і скільки їх всього writeLn(i + "/" + numLineFile); //задаємо час входу та верм'я виходу текстового шару в композицію myTextLayer.inPoint = i/frameRate; myTextLayer.outPoint = (i + 1) / frameRate; > //закриваємо відкритий для читання файл textFile.close();

//все готово, насолоджуємося alert ("finish"); Зберігаємо текст скрипту в ExtendScript Toolkit і через негоже кнопкою F5 запускаємо на виконання в After Effects.

На майбутнєзалишилося величезне поле можливостей скриптів. А у своєму скрипті я хочу зробити графічний інтерфейс користувача, зробити повний цикл створення time-lapse в одному скрипті, читання та додавання різнихданих з Exif безпосередньо зі скрипта. І звичайно щодо самої фотографії: пробуватиму HDR time-lapse і нові ракурси нових місць. Все тільки починається.