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
Discord's own Dumbass made for shits n' Gigs!

FWB3 Discord's own Dumbass made for shits n' Gigs! Please note: This bot is made to be stupid and funny, If you want to get into bot development you'r

1 Dec 06, 2021
Git Hooks Tutorial.

Git Hooks Tutorial My public talk about this project at Sberloga: Git Hooks Is All You Need 1. Git Hooks 101 Init git repo: mkdir git_repo cd git_repo

Dani El-Ayyass 17 Oct 12, 2022
Lagrange Interpolation Method-Python

Lagrange Interpolation Method-Python The Lagrange interpolation formula is a way to find a polynomial, called Lagrange polynomial, that takes on certa

Motahare Soltani 2 Jul 05, 2022
DOP-Tuning(Domain-Oriented Prefix-tuning model)

DOP-Tuning DOP-Tuning(Domain-Oriented Prefix-tuning model)代码基于Prefix-Tuning改进. Files ├── seq2seq # Code for encoder-decoder arch

Andrew Zeng 5 Nov 02, 2022
a pull switch (or BYO button) that gets you out of video calls, quick

zoomout a pull switch (or BYO button) that gets you out of video calls, quick. As seen on Twitter System compatibility Tested on macOS Catalina (10.15

Brian Moore 422 Dec 30, 2022
Explore-bikeshare-data - GitHub project as part of the Programming for Data Science with Python Nanodegree from Udacity

Date created February 10, 2022 Project Title Explore US Bikeshare Data Descripti

Thárcyla 1 Feb 14, 2022
Lightweight and Modern kernel for VK Bots

This is the kernel for creating VK Bots written in Python 3.9

Yrvijo 4 Nov 21, 2021
A shim for the typeshed changes in mypy 0.900

types-all A shim for the typeshed changes in mypy 0.900 installation pip install types-all why --install-types is annoying, this installs all the thin

Anthony Sottile 28 Oct 20, 2022
Easily map device and application controls to a midi controller

pymidicontroller Introduction Easily map device and application controls to a midi controller

Tane Barriball 24 May 16, 2022
The official Repository wherein newbies into Open Source can Contribute during the Hacktoberfest 2021

Hacktoberfest 2021 Get Started With your first Contrinution/Pull Request : Fork/Copy the repo by clicking the right most button on top of the page. Go

HacOkars 25 Aug 20, 2022
How to build an Fahrenheit to Celsius Converter in Python

Generally to measure the temperature we make use of one of these two popular units i.e. Fahrenheit & Celsius.

PyLaboratory 0 Feb 07, 2022
适用于HoshinoBot下的人生重来模拟器插件

LifeRestart for HoshinoBot 原作地址 python版原地址 本项目地址 安装方法 这是一个HoshinoBot的人生重来模拟器插件 这个项目使用的HoshinoBot的消息触发器,如果你了解其他机器人框架的api(比如nonebot)可以只修改消息触发器就将本项目移植到其他

黛笙笙 16 Sep 03, 2022
A web app for presenting my research in BEM(building energy model) simulation

BEM(building energy model)-SIM-APP The is a web app presenting my research in BEM(building energy model) calibration. You can play around with some pa

8 Sep 03, 2021
run-js Goal: The Easiest Way to Run JavaScript in Python

run-js Goal: The Easiest Way to Run JavaScript in Python features Stateless Async JS Functions No Intermediary Files Functional Programming CommonJS a

Daniel J. Dufour 9 Aug 16, 2022
A Python program for calculating the 95%CI for GNSS-derived site velocities

GNSS_Vel_95%CI A Python program for calculating the 95%CI for GNSS-derived site velocities Function_GNSS_95CI.py is a Python function for calculating

<a href=[email protected]"> 4 Dec 16, 2022
A Klipper plugin for accurate Z homing

Stable Z Homing for Klipper A Klipper plugin for accurate Z homing This plugin provides a new G-code command, STABLE_Z_HOME, which homes Z repeatedly

Matthew Lloyd 24 Dec 28, 2022
Python Programming Bootcamp

python-bootcamp Python Programming Bootcamp Begin: 27th August 2021 End: 8th September 2021 Registration deadline: 22nd August 2021 Fees: No course or

Rohitash Chandra 11 Oct 19, 2022
Scripts used in the RayStation medical radiation dosimetry treatment planning system

Med Phys Scripts These are scripts that I, the medical physics assistant at Cookeville Regional Medical Center, wrote for use in our radiation therapy

Kaley White 2 Oct 19, 2022
Stop python warnings, no matter what!

SHUTUP - Stop python warnings, no matter what! Sometimes you just can't mute python warnings. Use this library to solve this. Installation pip install

80 Jan 04, 2023
(Pre-)compromise operations for MITRE CALDERA

(Pre-)compromise operations for CALDERA Extend your CALDERA operations over the entire adversary killchain. In contrast to MITRE's access plugin, cald

Diederik Bakker 3 Aug 22, 2022