An After Effects render queue for ShotGrid Toolkit.

Overview

AEQueue

An After Effects render queue for ShotGrid Toolkit.

Features

  • Render multiple comps to locations defined by templates in your Toolkit config.
  • Compress full-res renders as MP4 and GIF using ffmpeg.
  • Copy compressed renders to a review folder.
  • Upload renders to ShotGrid for review.

Installing

To install AEQueue make the changes in the example_config directory to your own toolkit config. This includes the following:

  1. Modify env/app_locations.yml to include tk-aftereffects-queue.
  2. Add env/includes/settings/tk-aftereffects-queue.yml to configure AEQueue. (See info.yml for details on configuration values.)
  3. Modify env/includes/settings/tk-aftereffects.yml to include AEQueue in your asset_step and shot_step sections for the tk-aftereffects engine.

TODO

  • Make UI dpi-aware.
  • Add Publish step to publish the base render (and aep?)
  • Add pre and post render hooks.
Comments
  • AEQueue encoding error on Mac

    AEQueue encoding error on Mac

      anim_seqa_031_v028
      queued [  0%] Flow initialized...
       ├ waiting [  0%] rendering initialized...
       ├ waiting [  0%] encoding MP4 initialized...
       ├ waiting [  0%] encoding GIF initialized...
       ├ waiting [  0%] copying MP4 initialized...
       ├ waiting [  0%] copying GIF initialized...
       ├ waiting [  0%] uploading initialized...
      queued [  0%] Waiting for requirements...
      rendering [  0%] Upstream Dependencies satisfied...
      rendering [  0%] Status changed from WAITING to RUNNING.
      rendering [  0%] Setting context...
      rendering [  0%] Starting...
       ├ running [  0%] Status changed from WAITING to RUNNING.
       ├ running [  0%] Preparing output path...
       ├ running [ 40%] Setting Full Flat Path: /Volumes/GoogleDrive/Shared drives/22-XXX-TestA/animation/renders/ae/seqA/seqa_031/anim_seqa_031_v028.mov
       ├ running [ 40%] Rendering [BNS - ProRes 4444+]
       └ success [100%] Status changed from RUNNING to SUCCESS.
      encoding MP4 [ 16%] Setting context...
      encoding MP4 [ 16%] Starting...
       ├ running [  0%] Status changed from WAITING to RUNNING.
       └ failed [  0%] Task failed to execute...
    Traceback (most recent call last):
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/tasks/core.py", line 226, in run
        self.result = self.execute()
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/tasks/encode.py", line 73, in execute
        self.dst_file,
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/vendor/ffmpeg_lib/__init__.py", line 125, in encode
        **platform_kwargs
      File "/Applications/Shotgun.app/Contents/Resources/Python3/lib/python3.7/subprocess.py", line 800, in __init__
        restore_signals, start_new_session)
      File "/Applications/Shotgun.app/Contents/Resources/Python3/lib/python3.7/subprocess.py", line 1551, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    PermissionError: [Errno 13] Permission denied: 'ffmpeg'
       └ failed [  0%] Status changed from RUNNING to FAILED.
      encoding MP4 [ 16%] Status changed from RUNNING to FAILED.
    
    bug 
    opened by danbradham 1
  • Permissions error updating existing Version.

    Permissions error updating existing Version.

       └ failed [ 50%] Creating or updating Version in ShotGrid...
       └ failed [ 50%] Task failed to execute...
    Traceback (most recent call last):
      File "/Users/--------/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.6.2/python/aequeue/tasks/core.py", line 234, in run
        self.result = self.execute()
      File "/Users/--------/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.6.2/python/aequeue/tasks/sgupload.py", line 76, in execute
        version = self.create_version(sg, version_data)
      File "/Users/-------/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.6.2/python/aequeue/tasks/sgupload.py", line 117, in create_version
        sg.update('Version', version['id'], version_data)
      File "/Users/-------/Library/Caches/Shotgun/brandnewschool/p4348c3598.basic.adobe/cfg/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 1401, in update
        record = self._call_rpc("update", params)
      File "/Users/--------/Library/Caches/Shotgun/brandnewschool/p4348c3598.basic.adobe/cfg/install/core/python/tank/authentication/shotgun_wrapper.py", line 63, in _call_rpc
        return super(ShotgunWrapper, self)._call_rpc(*args, **kwargs)
      File "/Users/--------/Library/Caches/Shotgun/brandnewschool/p4348c3598.basic.adobe/cfg/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 3360, in _call_rpc
        self._response_errors(response)
      File "/Users/-------/Library/Caches/Shotgun/brandnewschool/p4348c3598.basic.adobe/cfg/install/core/python/tank_vendor/shotgun_api3/shotgun.py", line 3665, in _response_errors
        raise Fault(sg_response.get("message", "Unknown Error"))
    tank_vendor.shotgun_api3.shotgun.Fault: API update() CRUD ERROR #4: The field is not editable for this user: [Version.user]. Rule: Artist -- PermissionRule 4910: DENY update_field FOR entity_type => Version, field_name => user, field_value => 
    

    Looks like fields were being modified that should not have been, namely the user field. Fix by reducing the fields to update to the bare minimum.

    bug 
    opened by danbradham 0
  • Copy file before bg render.

    Copy file before bg render.

    Make a copy of the AE project and pass the copy to aerender for background rendering. Ensures that the bg render process has a static and up-to-date copy of the AE project to work with!

    Addresses a bug where starting a bg render would not get the latest changes in your scene.

    bug 
    opened by danbradham 0
  • Stability

    Stability

    • Suppress dialogs while rendering directly in AE. Users should no longer need to accept dialogs for overwriting renders or warnings about color bit depth.

    • Fix issue where a Failed task was not propagated to all depedent jobs, causing the dialog to get stuck running, when it should Fail.

    • Fix failure caused by rendering to Google Drive on some fresh installs of ShotGrid. Solved by fixing the following two related issues.

      • Fix path generation ensuring that paths point to the correct output folders.
      • Fix BNS output module templates. Please remove the existing templates
    • Improved reliability of background rendering.

    • Set default background rendering threads to 4.

    opened by danbradham 0
  • AEQueue render error on Mac OS 12 (Monterey)

    AEQueue render error on Mac OS 12 (Monterey)

    anim_ae_demo_v003_TEST
      queued [  0%] Flow initialized...
        waiting [  0%] rendering initialized...
        waiting [  0%] encoding MP4 initialized...
        waiting [  0%] encoding GIF initialized...
        waiting [  0%] copying MP4 initialized...
        waiting [  0%] copying GIF initialized...
        waiting [  0%] uploading initialized...
      rendering [  0%] Waiting for requirements...
      rendering [  0%] Upstream Dependencies satisfied...
      rendering [  0%] Status changed from WAITING to RUNNING.
      rendering [  0%] Setting context...
      rendering [  0%] Starting...
        running [  0%] Status changed from WAITING to RUNNING.
        running [  0%] Preparing output path...
        running [ 40%] Setting Full Flat Path: /Volumes/GoogleDrive/Shared drives/22-XXX-TestA/animation/renders/ae/ae/ae_demo/anim_ae_demo_v003_TEST.mov
        running [ 40%] Rendering [BNS - ProRes 422]
        failed [ 60%] Task failed to execute...
    
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/tasks/core.py", line 224, in run
        self.result = call_in_main(self.execute)
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/tasks/core.py", line 717, in call_in_main
        raise exc_value.with_traceback(exc_traceback)
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/tasks/core.py", line 692, in event
        result = event.fn(*event.args, **event.kwargs)
      File "/Users/Edit/Library/Caches/Shotgun/bundle_cache/github/nybrandnewschool/tk-aftereffects-queue/v0.3.0/python/aequeue/tasks/aerender.py", line 54, in execute
        raise AERenderFailed('Failed to render queue item: %s' % self.comp)
    
    
        failed [ 60%] Status changed from RUNNING to FAILED.
      rendering [ 10%] Status changed from RUNNING to FAILED.
    
    bug 
    opened by danbradham 0
Releases(v0.6.3)
  • v0.6.3(Dec 9, 2022)

    What's Changed

    • Fix permissions error when updating existing Version. by @danbradham in https://github.com/nybrandnewschool/tk-aftereffects-queue/pull/13

    Full Changelog: https://github.com/nybrandnewschool/tk-aftereffects-queue/compare/v0.6.2...v0.6.3

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Oct 3, 2022)

    What's Changed

    • Copy project file before bg rendering. by @danbradham in https://github.com/nybrandnewschool/tk-aftereffects-queue/pull/11
    • Fix ensure_optimal_context. Ensure optimal context now correctly handles an edge case where a shot that has multiple tasks for a single pipeline step. by @danbradham https://github.com/nybrandnewschool/tk-aftereffects-queue/pull/11

    Full Changelog: https://github.com/nybrandnewschool/tk-aftereffects-queue/compare/v0.6.1...v0.6.2

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Jun 17, 2022)

    What's Changed

    • Fix AttributeError in app teardown. by @danbradham in https://github.com/nybrandnewschool/tk-aftereffects-queue/pull/9
    • Ensure flows reach 100% when status changes to Done.

    Full Changelog: https://github.com/nybrandnewschool/tk-aftereffects-queue/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Jun 17, 2022)

    What's Changed

    • Stability by @danbradham in https://github.com/nybrandnewschool/tk-aftereffects-queue/pull/7

    • Suppress dialogs while rendering directly in AE. Users should no longer need to accept dialogs for overwriting renders or warnings about color bit depth.

    • Fix issue where a Failed task was not propagated to all dependent jobs, causing the dialog to get stuck running, when it should Fail.

    • Fix failure caused by rendering to Google Drive on some fresh installs of ShotGrid. Solved by fixing the following two related issues.

      • Fix path generation ensuring that paths point to the correct output folders.
      • Fix BNS output module templates. Please remove the existing templates
    • Improved reliability of background rendering.

    • Set default background rendering threads to 4.

    Full Changelog: https://github.com/nybrandnewschool/tk-aftereffects-queue/compare/v0.5.0...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Jun 14, 2022)

  • v0.4.0(Jun 14, 2022)

  • v0.3.1(Jun 14, 2022)

Owner
Brand New School
Brand New School
A free and powerful system for awareness and research of the American judicial system.

CourtListener Started in 2009, CourtListener.com is the main initiative of Free Law Project. The goal of CourtListener.com is to provide high quality

Free Law Project 332 Dec 25, 2022
0CD - BinaryNinja plugin to introduce some quality of life utilities for obsessive compulsive CTF enthusiasts

0CD Author: b0bb Quality of life utilities for obsessive compulsive CTF enthusia

12 Sep 14, 2022
Python library for the analysis of dynamic measurements

Python library for the analysis of dynamic measurements The goal of this library is to provide a starting point for users in metrology and related are

Physikalisch-Technische Bundesanstalt - Department 9.4 'Metrology for the digital Transformation' 18 Dec 21, 2022
E-Paper display loop with plugins

PaperPi V3 NOTE This version of PaperPi is under heavy development and is not ready for the average user. We are working on adding more screen compati

Aaron Ciuffo 34 Dec 30, 2022
Monochrome's API, implemented with Deta Base and Deta Drive.

Monochrome Monochrome's API, implemented with Deta Base and Deta Drive. Create a free account on Deta to test this out! Most users will prefer the Mon

Monochrome 5 Sep 22, 2022
A blazing fast mass certificate generator script for the community ⚡

A simple mass certificate generator script for the community ⚡ Source Code · Docs · Raw Script Docs All you need Certificate Design a simple template

Tushar Nankani 24 Jan 03, 2023
Expression interpreter written in Python

Calc Interpreter An interpreter modeled after a calculator implemented in Python 3. The program currently only supports basic mathematical expressions

1 Oct 17, 2021
Advanced Developing of Python Apps Final Exercise

Advanced-Developing-of-Python-Apps-Final-Exercise This is an exercise that I did for a python advanced learning course. The exercise is divided into t

Alejandro Méndez Fernández 1 Dec 04, 2021
Age of Empires II recorded game parsing and summarization in Python 3.

mgz Age of Empires II recorded game parsing and summarization in Python 3. Supported Versions Age of Kings (.mgl) The Conquerors (.mgx) Userpatch 1.4

148 Dec 11, 2022
In this project, we'll be creating a virtual personal assistant for ourselves using our favorite programming language

In this project, we'll be creating a virtual personal assistant for ourselves using our favorite programming language, Python. We can perform several offline as well as online operations using the bo

Ashutosh Krishna 188 Jan 03, 2023
NeoInterface - Neo4j made easy for Python programmers!

Neointerface - Neo4j made easy for Python programmers! A Python interface to use the Neo4j graph database, and simplify its use. class NeoInterface: C

15 Dec 15, 2022
Coded in Python 3 - I make for education, easily clone simple website.

Simple Website Cloner - Single Page Coded in Python 3 - I make for education, easily clone simple website. How to use ? Install Python 3 first. Instal

Phạm Đức Thanh 2 Jan 13, 2022
The goal of this program was to find the most common color in my living room.

The goal of this program was to find the most common color in my living room. I found a dataset online with colors names and their corr

1 Nov 09, 2021
A python program to detect rickrolls with just the youtube link.

rickroll_detector A python program to detect rickrolls with just the youtube link. Usage: clone this repo or download zip run the main.py file with py

Tricky 4 Nov 06, 2022
GA SEI Unit 4 project backend for Bloom.

Grow Your OpportunitiesTM Background Watch the Bloom Intro Video At Bloom, we believe every job seeker deserves an opportunity to find meaningful work

Jonathan Herman 3 Sep 20, 2021
Schemdule is a tiny tool using script as schema to schedule one day and remind you to do something during a day.

Schemdule is a tiny tool using script as schema to schedule one day and remind you to do something during a day. Platform Python Install Use pip: pip

StardustDL 4 Sep 13, 2021
Never see escaped bytes in output.

Uniout It makes Python print the object representation in readable chars instead of the escaped string. Example from pprint import pprint lang

Mosky Liu 156 Oct 21, 2022
Sikulix with Ubuntu Calculator Automation

CalculatorAutomation Sikulix with Ubuntu Calculator Automation STEP 1: DOWNLOAD and INSTALL SIKULIX https://raiman.github.io/SikuliX1/downloads.html T

Bedirhan Sayakci 2 Oct 27, 2021
Mines all the moneys and stuff and things.

NFT Miner NFT Miner - Version 1.1.0 - Quick Fix Since the whole NFT thing started booming on Twitter it's been hard not to see one of those ugly ass m

8w8 1 Dec 13, 2021
A custom advent of code I am completing

advent-of-code-custom A custom advent of code I am doing in python. The link to the problems I am solving is here: https://github.com/seldoncode/Adven

Rocio PV 2 Dec 11, 2021