Code Monkey home page Code Monkey logo

tk-natron's Introduction

Shotgun toolkit engine for Natron

Contact : Diego Garcia Huerta

tk-natron_screenshot04

Overview

Implementation of a shotgun engine for Natron. It supports the classic bootstrap startup methodology and integrates with Natron adding a shotgun menu in it's menu bar.

With the engine, hooks for most of the standard tk application are provided:

(I've also included a hook that allows to take a thumbnail of the current canvas from Natron, useful for configuring tk-multi-snapshot for example.)

Note for developers: It seems that when uploading/downloading data to shotgun from Natron, the python libraries included with Natron are not aware of the SSL certificates that normally would be used within shotgun toolkit. This happens mainly when downloading thumbnails for tk-multi-breakdown tool, or uploading thumbnails when publishing with tk-multi-publish2. The engine now registers those certificates automatically so these operations do not fail.

This engine has been tested in Windows using version 2.3.14.

Engine Installation

When I started using shotgun toolkit, I found quite challenging figuring out how to install and configure a new tk application or a new engine. Shotgun Software provides extensive documentation on how to do this, but I used the get lost in details, specially with so many configuration files to modify.

If you are familiar with how to setup an engine and apps, you might want to skip the rest of this document, just make sure to check the templates and additions to the configs that might give you a good start.

If you are new to shotgun toolkit, I recommend to read at least the following shotgun articles, so you get familiar with how the configuration files are setup, and the terminology used:

Here are detailed instructions on how to make this engine work assuming you use a standard shotgun toolkit installation and have downloaded shotgun desktop. Shotgun Desktop Download Instructions

Configuring your project for Shotgun Toolkit

If you haven't done it yet, make sure you have gone through the basic steps to configure your project to use shotgun toolkit, this can be done in shotgun desktop app, by:

  • enter into the project clicking it's icon

  • click on the user icon to show more options (bottom right)

  • click on Advanced project setup

    advanced_project_setup

  • Select a configuration: "Shotgun Default" or pick an existing project that you have already setup pages and filters for. select_a_project_configuration

  • Select a Shotgun Configuration: select "default" which will download the standard templates/configuration from shotgun. (this documentation is written assuming you have this configuration) select_a_shotgun_configuration

  • Define Storages: Make sure you name your first storage "primary", and a choose a primary folder where all the 'jobs' will be stored, in this case "D:\demo\jobs" for illustrative purposes. define_storages

  • Project Folder Name: This is the name of the project in disk. You might have some sort of naming convention for project that you might follow, or leave as it is. (My advice is that you do not include spaces in the name!) project_folder_name

  • Select Deployment: Choose "Centralized Setup". This will be the location of the configuration files (that we will be modifying later). For example, you could place the specific configuration for a project (in this example called game_config) within a folder called "configs" at the same level then the jobs folder, something like:

├───jobs
└───configs
    └───game_config
        ├───cache
        ├───config
        │   ├───core
        │   │   ├───hooks
        │   │   └───schema
        │   ├───env
        │   │   └───includes
        │   │       └───settings
        │   ├───hooks
        │   │   └───tk-multi-launchapp
        │   ├───icons
        │   └───tk-metadata
        └───install
            ├───apps
            ├───core
            ├───engines
            └───frameworks

(Note that this might not be suitable for more complex setups, like distributed configurations) select_deployment

Modifying the toolkit configuration files to add this engine and related apps

Every pipeline configuration has got different environments where you can configure apps accordingly. (for example you might want different apps depending if you are at an asset context or a shot context). The configured environments really depend on your projects requirements. While project, asset, asset_step, sequence, shot, shot_step, site are the standard ones, it is not uncommon to have a sequence_step environment or use a episode based environment either.

I've included a folder called 'config' in this repository where you can find the additions to each of the environments and configuration yml files that come with the default shotgun toolkit configuration repository (as of writing)

configuration additions

These yaml files provided should be merged with the original ones as they won't work on their own.

As an example, for the location of the engine, we use a git descriptor that allows up to track the code from a git repository. This become easy to update whenever a new version is released. So in the example above, you should modify the file: .../game_config/config/env/includes/engine_locations.yml

and add the following changes from this file: engine_locations.yml

# Natron
engines.tk-natron.location:
  type: git
  branch: master
  path: https://github.com/diegogarciahuerta/tk-natron.git
  version: v1.0.0

Or in your environments you should add tk-natron yml file, for example in the asset_step yml file: /configs/game_config/env/asset_step.yml

Let's add the include at the beginning of the file, in the 'includes' section:

- ./includes/settings/tk-natron.yml

Now we add a new entry under the engines section, that will include all the information for our natron application:

  tk-natron: "@settings.tk-natron.asset_step"

And so on.

Finally, do not forget to copy the additional tk-natron.yml into your settings folder.

Modifying the Templates

The additions to config/core/templates.yml are provided also under the config directory of this repository, specifically:

templates.yml

Configuring Natron in the software launcher

In order for Natron to show up in the shotgun launcher, we need to add it to our list of softwares that are valid for this project.

  • Navigate to your shotgun url, ie. example.shotgunstudio.com, and once logged in, clink in the Shotgun Settings menu, the arrow at the top right of the webpage, close to your user picture.

  • Click in the Software menu select_a_project_configuration

  • We will create a new entry for Natron, called "Natron". The description was conveniently copied and pasted from Wikipedia. create_new_software

  • We should now specify the engine this software will use. "tk-natron" software_specify_engine

  • Note that you can restrict this application to certain projects by specifying the project under the projects column. If no projects are specified this application will show up for all the projects that have this engine in their configuration files.

If you want more information on how to configure software launches, here is the detailed documentation from shotgun. Configuring software launches

Caching and downloading the engine into disk

One last step is to cache the engine and apps from the configuration files into disk. Shotgun provides a tank command for this. Tank Advanced Commands

  • Open a console and navigate to your pipeline configuration folder, where you will find a tank or tank.bat file. (in our case we placed the pipeline configuration under D:\demo\configs\game_config)

  • type tank cache_apps , and press enter. Shotgun Toolkit will start revising the changes we have done to the configuration yml files and downloading what is required, in this case the engine and the changes for tk-multi-setframerange app listed below.

tank_cache_apps

Natron engine should be ready to use

If we now go back and forth from our project in shotgun desktop ( < arrow top left if you are already within a project ), we should be able to see Natron as an application to launch.

natron_is_configured.png

This application forms the basis for file management in the Shotgun Pipeline Toolkit. It lets you jump around quickly between your various Shotgun entities and gets you started working quickly. No path needs to be specified as the application manages that behind the scenes. The application helps you manage your working files inside a Work Area and makes it easy to share your work with others.

Basic hooks have been implemented for this tk-app to work. open, save, save_as, reset, and current_path are the scene operations implemented.

A Shotgun Snapshot is a quick incremental backup that lets you version and manage increments of your work without sharing it with anyone else. Take a Snapshot, add a description and a thumbnail, and you create a point in time to which you can always go back to at a later point and restore. This is useful if you are making big changes and want to make sure you have a backup of previous versions of your scene.

Hooks are provided to be able to use this tk-app, similar to workfiles2.

tk-natron_screenshot01

The Shotgun Loader lets you quickly overview and browse the files that you have published to Shotgun. A searchable tree view navigation system makes it easy to quickly get to the task, shot or asset that you are looking for and once there the loader shows a thumbnail based overview of all the publishes for that item. Through configurable hooks you can then easily reference or import a publish into your current scene.

The hooks provided support all the image formats, ffmpeg video formats and LUTs supported in Natron as of version 2.3.14. A " create read node" action has been implemented where internally the right natron plugin is used and configured accordingly, ie. 'fr.inria.openfx.OCIOFileTransform' used for LUTs, 'fr.inria.openfx.ReadOIIO' node is used for image extensions, 'fr.inria.openfx.ReadFFmpeg' for videos, and so on, with pdf, svg, psd, etc ... files.

tk-natron_screenshot03

The Publish app allows artists to publish their work so that it can be used by artists downstream. It supports traditional publishing workflows within the artist’s content creation software as well as stand-alone publishing of any file on disk. When working in content creation software and using the basic Shotgun integration, the app will automatically discover and display items for the artist to publish. For more sophisticated production needs, studios can write custom publish plugins to drive artist workflows.

Only the basic publishing of the current session is provided with this app. No publishing of write nodes has been implemented yet.

tk-natron_screenshot02

The Scene Breakdown App shows you a list of items you have loaded (referenced) in your scene and tells you which ones are out of date. From this overview, you can select multiple objects and click the update button which will update all your selected items to use the latest published version.

Hook provided support the updating of read and write nodes within Natron.

This is a simple yet useful app that syncs your current file with the latest frame range in Shotgun for the associated shot. If a change to the cut has come in from editorial, quickly and safely update the scene you are working on using this app. Towards the end, it will display a UI with information about what got changed.

This app has been forked so it can include it's own hooks. The original implementation from shotgun software had the engines logic hardcoded, so I went ahead and refactored it to be able to support hooks per engine. You should configure this app from the following repository and branch: tk-multi-setframerange enable_hooks_for_app

The location section for this app should look like:

      location:
        type: git_branch
        branch: enable_hooks_for_app
        path: https://github.com/diegogarciahuerta/tk-multi-setframerange
        version: b24a977

where version represents the commit id. (at the time of writting the latest commit) (note that the hook for natron is however included with the tk-natron engine)

For completion, I've kept the original README from shotgun, that include very valuable links:

Documentation

This repository is a part of the Shotgun Pipeline Toolkit.

Using this app in your Setup

All the apps that are part of our standard app suite are pushed to our App Store. This is where you typically go if you want to install an app into a project you are working on. For an overview of all the Apps and Engines in the Toolkit App Store, click here: https://support.shotgunsoftware.com/entries/95441247.

Have a Question?

Don't hesitate to contact us! You can find us on [email protected]

tk-natron's People

Contributors

diegogarciahuerta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tk-natron's Issues

Fail to launch the engine

Describe the bug
I installed the engine as you described on the doc and it seems it's mostly loading correctly but get the following and I don't see the Shotgun menu

  File engine.py, line 48
   if natron.shotgun.automatic_context_switch:
AttibuteError: 'function' object has not attribute 'automatic_context_switch'

print sorted(dir(NatronEngine))
To Reproduce
Steps to reproduce the behavior:
Launching Natron from should produce this issue

Screenshots
image

Desktop (please complete the following information):

  • OS: MacOS 10.15.5
  • Natron version 2.3.14 Release.

Additional context
I'll do some debugging but I thought you may have already encountered this issue!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.