Shotgun Integration

Ideas for Deadline/Shotgun Integration

The most obvious applications of an integration between Shotgun and Deadline would be in status and file path updates. As shots, elements (straightface’s term for passes) or sequences render out of deadline it would be useful to know their current status. “Queued, Rendering or Rendered.”

Shotgun also utilizes the principle of a “version” for any Shotgun entity. As a job completes it would create a new “Version” for the render task’s linked entity and set the path_to_frames to the rendered output.

On the user side of things there are a couple things that would need to be configured:
The deadline job would need to specify the entity type of the task presently rendering as well as the entity Global Unique ID so that it would know which entity to modify.

Not all studios configure their versions the same and few to none have a Field for render status so studios would need to modify a configuration file which specifies the Field Names they want modified. For example when creating a new version to link to the entity being rendered some studios might use a field called path_to_frames and another might use file_path etc.

Example Use Scenario:

An artist named “Bob” is working in 3ds Max. He has a scene which is “Shot 010” in “Sequence 150”. This scene is a “Beauty” pass (I will assume for a second that RPManager handles changing the Deadline settings for each pass so to Deadline there is only one pass per scene as far as deadline is concerned).

(The following assumes my feature request to Shotgun is fulfilled for a web based navigator for third parties)
support.shotgunsoftware.com/ent … ty-browser

Bob opens up the SMTD and now has a “Shotgun” tab. All of the settings for this tab would be in the repository settings (Shotgun server address, Username and password for shotgun etc etc.) Also in the respository settings would be a cfg file which defines to Deadline what field names it should update for each entity type. Something like:

[code]
<ShotgunAPI_Server>http://studioname.shotgunstudio.com</ShotgunAPI_Server>
<ShotgunAPI_Username>API_User</ShotgunAPI_Username>
<ShotgunAPI_Pwd>30e482a8ab57cfc19075dece53b0a56b</ShotgunAPI_Pwd>
<Shotgun_Pipeline_Step>
Dline_rend
Dline_rend
rend
rend
</Shotgun_Pipeline_Step>

<! – shared with job name vars – !>
<Version_Name>$FileName - $Date</Version_Name>

<RenderTask_Status>sg_status_list</RenderTask_Status>
<RenderTask_Progress>dline_rend_prog</RenderTask_Progress>

<Version_Path>path_to_frames</Version_Path>
<Version_Qt_Path>sg_qt</Version_Qt_Path>[/code]

Assuming you have a really wonky Shotgun setup with crazy inconsistent field names for each entity type. (Just thinking worst case scenario here. :wink:)

Now deadline needs an action on the part of Bob. Deadline needs to know what entity is about to render. Is it a shot, sequence, element? So Bob presses the “Link to Shotgun” button and up pops this little modal dialog or something like it to choose what project this belongs in, just to narrow down the next step.

Bob chooses “SF911 VFD PSA” and it moves onto the next screen.

(not shown) Bob navigates through the project and chooses /Seq_010/Shot_030/Beauty.

Bob Presses “ok” and the .net WebBrowser UI returns the entity_type: element and the Entity_ID: “3819”.

Bob sends his render off to the farm. Deadline creates a Shotgun Task {Task, ID:83957} of the Pipeline Step “rend” linked to {Element, id:3819}. Deadline sets the task status to “Rendering”.

A few hours later the farm completes the job. Pulse sets the task {Task, ID:83957} status for the task linked to “fin”. It also creates a new Version {Version, ID:53924} linked to {Element, ID:3819} . The deadline job was set to render to ‘\server\path\to\frames-0000.exr’ and deadline sets that to the version name. It also sets the new shotgun version name to either be the job name or some other variable. In this case Bob called the job “SuperJob_Sequence-150_Shot-010_Beauty_r00_v01”.

Now when Bob opens shotgun he can right click on the Beauty pass {ELEMENT ID:3819} and hit “play in RV”. It pops up and starts playing back. He sets the version status to “reviewed” in RV seeing as it has no errors and continues on.


Future opportunities for deeper integration:

One idea is to have Deadline priority be determined by Shotgun information. For instance if you have a shot or project due that day, a project with a deadline in 5 weeks would get automatically reduced in priority.

Similarly Deadline could update render tasks with the “estimated time remaining” for the Render Task. If Deadline determines that the render tasks for a Project would take 3 days of full time rendering but the deadline is in 2 days then Shotgun could create an alert to the producer alerting them that they need to either rent more render capacity or to discuss adjusting the schedule with the client.

And in reverse Jobs could be scheduled through Shotgun allowing you to use the Shotgun Gantt charts to visualize your needed render times and adjust priority/start times for render jobs.

Hey Gavin,

We appreciate you taking the time to provide us with this information. General pipeline/workflow integration (including Shotgun) is something we’re probably going to investigate in the near future. We will definitely let you know when we have something available for testing.

Cheers,

  • Ryan