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 python script for osu!lazer rulesets auto update.

osu-lazer-rulesets-autoupdater A python script for osu!lazer rulesets auto update. How to use: 如何使用: You can refer to the python script. The begining

3 Jul 26, 2022
Tool to audit and fix Python project requirements.

Requirement Auditor Utility to revise and updated python requirement files.

Luis Carlos Berrocal 1 Nov 07, 2021
A simple service that allows you to run commands on the server using text

Server Text A simple flask service that allows you to run commands on the server/computer over sms. Think of it as a shell where you run commands over

MT Devs 49 Nov 09, 2021
Lectures for Udemy - Complete Python Bootcamp Course

Complete-Python-Bootcamp Welcome to the Repository for the Complete Python Bootcamp! This is the Repository for the Udemy course - "Complete Python Bo

Marci 2k Dec 28, 2022
A python program with an Objective-C GUI for building and booting OpenCore on both legacy and modern Macs

A python program with an Objective-C GUI for building and booting OpenCore on both legacy and modern Macs, see our in-depth Guide for more information.

dortania 4.7k Jan 02, 2023
Syntax highlighting for yarn.lock and bun.lockb files

Yarn.lock Syntax Highlighting Syntax highlighting for yarn.lock and bun.lockb files Installation Plugin is not publushed yet on Package Control, to in

Alexander Kuznetsov 4 Jul 06, 2022
Eros is an expiremental programming language built using simple Python code.

Eros is an expiremental programming language built using simple Python code. Featuring an easy syntax and unique features like type slicing, the language remains an expirement that grows in down time

zxro 2 Nov 21, 2021
This program can calculate the Aerial Distance between two cities.

Aerial_Distance_Calculator This program can calculate the Aerial Distance between two cities. This repository include both Jupyter notebook and Python

InvisiblePro 1 Apr 08, 2022
Displays Christmas-themed ASCII art

Christmas Color Scripts Displays Christmas-themed ASCII art. This was mainly inspired by DistroTube's Shell Color Scripts Screenshots ASCII Shadow Tex

1 Aug 09, 2022
The code submitted for the Analytics Vidhya Jobathon - February 2022

Introduction On February 11th, 2022, Analytics Vidhya conducted a 3-day hackathon in data science. The top candidates had the chance to be selected by

11 Nov 21, 2022
TinyBar - Tiny MacOS menu bar utility to track price dynamics for assets on TinyMan.org

📃 About A simple MacOS menu bar app to display current coins from most popular Liquidity Pools on TinyMan.org

Al 8 Dec 23, 2022
Back-end API for the reternal framework

RE:TERNAL RE:TERNAL is a centralised purple team simulation platform. Reternal uses agents installed on a simulation network to execute various known

Joey Dreijer 7 Apr 15, 2022
NFT-Image-Generator - Utility to generate a large collection of unique images

NFT-Image-Generator Utility for creating a generative art collection from suppli

Sem Moolenschot 60 Dec 15, 2022
A numbers check python package

A numbers check python package

Fayas Noushad 3 Nov 28, 2021
A python tool used for hacking WhatsApp by diverting otp

W-HACK A python tool used for hacking WhatsApp by diverting otp You can hack WhatsApp easily with this tool Note:OTP expires after 5 seconds HOW TO IN

Spider Anongreyhat 3 Oct 17, 2021
🤞 Website-Survival-Detection

- 🤞 Website-Survival-Detection It can help you to detect the survival status of the website in batches and return the status code! - 📜 Instructions

B0kd1 4 Nov 14, 2022
💉 🔍 VaxFinder - Backend The backend for the Vaccine Hunters Finder tool.

💉 🔍 VaxFinder - Backend The backend for the Vaccine Hunters Finder tool. Development Prerequisites Python 3.8 Poetry: A tool for dependency manageme

Vaccine Hunters Canada 32 Jan 19, 2022
A free and open-source chess improvement app that combines the power of Lichess and Anki.

A free and open-source chess improvement app that combines the power of Lichess and Anki. Chessli Project Activity & Issue Tracking PyPI Build & Healt

93 Nov 23, 2022
Mechanized literally means automation.

Mechanized literally means automation. And this branch which you are now observing is automated by the python script. This python project actually automates my workflow related to Git & Github.

Shreejan Dolai 4 Nov 11, 2022
Send notifications created in Frappe or ERPNext as push notication via Firebase Cloud Message(FCM)

FCM Notification for ERPNext Send notifications created in Frappe or ERPNext as push notication via Firebase Cloud Message(FCM) Steps to use the app:

Tridz 9 Nov 14, 2022