Recommended skills
- Very good knowledge of Adobe After Effects
- Adobe Extendscript (After Effects Scripting - Javascript )
- JSON
What's you need
To prepare an After Effects project you will need on your workstation :
- Adobe After Effects (up from CC2017)
- Microsoft Visual Studio Code
- ExtendScript Debugger Extension for Visual Studio Code
Useful links
After Effects Expression Reference
Configuration
To define a new template in Automate-IT you need to go in the Configuration menu and select Panels
Click on Register panel button
You need to edit all fields
Name : This is the name of the template in Automate-IT (this name will be displayed in all Automate-IT UI)
Type : You can create source data with Automate-IT forms or use legacy custom html form.
Form : Select the form you want to use to generate data
Render project name : The name of the After Effect template project file - you don't need enter file extension (.aep)
Render script name : The name of the Extendscript file name that will update your template project - you don't need enter file extension (.jsx)
Workflow designer : The delivery workflow that will be triggered after the After Effect render is done.
Activated : A checkbox to activate the template for users
Generation Sequence
What happens when a user click on generate button (or preview button) ?
- Automate-IT will create temp folder (with the request ID) in the rendering machine.
- Automate-IT will copy of the template After Effects project in this temp folder
- Automate-IT will open the copy of the template project with After Effects
- The data from the form are loaded in the Extendscipt engine (the After Effects Scripting engine)
- The Extendscript file is executed, the copy of the After Effects project is updated with the Extendscript file.
- The updated After Effects project is saved
- Automate-IT will send to Adobe Media Encoder all items in the After Effects render queue. Output file name will be conserved.
- Automate-It will trigger render in AME. Output files ares written in the local temp folder.
- Once the render is done, the delivery workflow is executed to copy render file to a shared storage for example
- The temps folder are deleted
Working folders and template path
The working folders are defined in the configuration file in each rendering machine.
Edit this file :
C:\Program Files\Automate-it\ait_agent-2.0\ait_agent\conf\agent.ini
The TMP_DIR section will define the local temp folders.
[paths] LOGS_DIR = C:\Automate-IT\logs TMP_DIR = T:\factoryTmp
The AE_TEMPLATE_PATH section will define where Automate-IT will find template project and Extendscript.
[ae_agent] SERVER_ADDRESS = https://xxxxxxxx SERVER_USER = xxxxx SERVER_PASSWORD = xxxxxxxxx NODE_NAME = render1 NODE_TYPE = LOCAL NODE_FILTER = ANY PYTHON_PATH = C:\Python_virtual_Env\vait\Scripts\python.exe SCRIPT_PATH = C:\Program Files\Automate-IT\ait_agent-2.0\ait_agent AE_TEMPLATE_PATH = \\\\10.0.4.242\Sources\templates
How to manipulate Automate-IT data in my Extendscript ?
Automate-it will generate a JSON object inside the After Effect scripting engine with this path :
JobToDo.response.content
Example with a form with a string field with "my_text" as key.
To access this field the your Extendscript :
JobToDo.response.content.my_text
You can visualise the data structure of your form by double clicking the the tab in the form editor in the "current tab values.
So to update a text layer in your After Effects project :
my_composition_item.layer("my_layer_name").text.sourceText.setValue(JobToDo.response.content.my_text)
Example with a form with a Media selector.
The data generated by the form is more complex :
{ "my_text": "Hello", "media_selector": { "connector": "Directory_Connector", "connector_type": "directory", "connector_data": { "connector_key": "Clean", "co_directory": "/mnt/Sources/clean/", "mode": "online" }, "id": "", "files": [ { "file_profile": "N/A", "file_format": "MXF (Material eXchange Format)", "file_duration": "0:00:46", "file_name": "BIG_BUCK_BUNNY_PROMO_CLEAN.mxf", "file_frame_rate": 25, "uri": "file:///mnt/Sources/clean/BIG_BUCK_BUNNY_PROMO_CLEAN.mxf", "file_bytes": "298931308", "is_video_file": true, "last_modification": 1459098071, "file_size": "298.9 MB", "position": 5, "file_seconds": "46.200000", "mapped_path": "\\\\10.0.4.242\\Sources\\clean\\BIG_BUCK_BUNNY_PROMO_CLEAN.mxf" } ], "tag": "ui-id-21_root_media_selector", "thumbnail": "/automateit/directory/get_file_thumb?connector_key=Clean&file_path=QklHX0JVQ0tfQlVOTllfUFJPTU9fQ0xFQU4ubXhm&co_directory=L21udC9Tb3VyY2VzL2NsZWFuLw%3D%3D&t=1606903284", "order": 3, "file_path": "/mnt/Sources/clean/BIG_BUCK_BUNNY_PROMO_CLEAN.mxf", "file_url": "/automateit/directory/get_file?connector_key=Clean&file_path=QklHX0JVQ0tfQlVOTllfUFJPTU9fQ0xFQU4ubXhm&co_directory=L21udC9Tb3VyY2VzL2NsZWFuLw%3D%3D&t=1606903284", "__media_tag__": "root_media_selector", "__version__": "" } }
Lots of informations are available for the selected media but the most useful is the source file path.
To access the file path the your Extendscript :
JobToDo.response.content.media_selector.files[0].mapped_path
So to import the selected media in your After Effects project :
var mediaFile = File(JobToDo.response.content.PATH_VIDEO); if(mediaFile.exists) { var media_clip = app.project.importFile(new ImportOptions(mediaFile)); // then do what you have to do with media_clip }
Development environment
To prepare a project it could be difficult to use a complete Automate-IT system, especially if the system is in production.
It's possible to simulate Automate-IT and manually execute Extendscript code from Visual Studio Code.
- Open your project with After Effects
- Open your Extendscript with Visual Studio Code
- Add the data generated by Automate-it at the top of your script (inside JobToDo.response.content )
var JobToDo = { response : { content : { "my_text": "Hello", "media_selector": { "files": [ { "mapped_path": "\\\\10.0.4.242\\Sources\\clean\\BIG_BUCK_BUNNY_PROMO_CLEAN.mxf" } ] } } } } // main script alert(JobToDo.response.content.my_text);
- Select After Effects as target app inside Visual Studio Code
- Go in the debug tab and click "Run ans debug"
...and your code is executed in After Effects