Deadline User Manual Release 5.2.49424

Thinkbox Software

November 25, 2014

CONTENTS

1 Setup and Installation 3 1.1 Supported Software...... 3 1.2 System Requirements...... 13 1.3 Render Farm Considerations...... 16 1.4 Installation Guide...... 18 1.5 Licensing Guide...... 30 1.6 Upgrading or Downgrading...... 30 1.7 Sharing The Repository...... 31 1.8 Migrating The Repository...... 39

2 Getting Started 41 2.1 How Deadline Works...... 41 2.2 Job Submission...... 46 2.3 Job Monitoring...... 57 2.4 Modifying Job Properties...... 60 2.5 Monitor Customization...... 66 2.6 Deadline FAQ...... 72

3 Client Applications 79 3.1 Deadline Launcher...... 79 3.2 Deadline Monitor...... 83 3.3 Deadline Job Monitor...... 98 3.4 Deadline Slave...... 100 3.5 Deadline Pulse...... 103 3.6 Deadline Command...... 109 3.7 Deadline Screen Saver...... 112 3.8 Deadline Mobile...... 113

4 Repository Configuration 119 4.1 Repository Options...... 119 4.2 Network Performance Guide...... 145 4.3 Job Scheduling...... 149 4.4 Failure Detection...... 151 4.5 Slave Settings...... 153 4.6 Pools and Groups...... 154 4.7 Limits and Job Machine Limits...... 159 4.8 User Management...... 163 4.9 Notifications...... 165 4.10 Remote Control and Access...... 167 4.11 Cross Platform Rendering...... 169

i 5 Advanced Features 173 5.1 Auto Configuration...... 173 5.2 Multiple Slaves On One Machine...... 175 5.3 Render Jobs As Job’s User ( and Mac OSX)...... 177 5.4 Power Management...... 178 5.5 Repository Statistics...... 186 5.6 Pulse Web Service...... 190 5.7 Satellite Mode...... 193 5.8 Job Transferring...... 195

6 Scripting 197 6.1 Scripting Overview...... 197 6.2 Plug-in Scripting...... 238 6.3 Event Plug-in Scripting...... 256 6.4 Monitor Scripting...... 267 6.5 Job Scripting...... 274 6.6 Web Service Scripting...... 276

7 Event Plug-ins 283 7.1 Draft Event Plug-in Guide...... 283 7.2 Shotgun Event Plug-in Guide...... 284

8 Application Plug-ins 297 8.1 3ds Command Plug-in Guide...... 297 8.2 3ds Max Plug-in Guide...... 304 8.3 After Effects Plug-in Guide...... 333 8.4 Anime Studio Plug-in Guide...... 341 8.5 Arnold Standalone Plug-in Guide...... 343 8.6 Plug-in Guide...... 345 8.7 Cinema 4D Plug-in Guide...... 350 8.8 Cleaner XL Plug-in Guide...... 353 8.9 Combustion Plug-in Guide...... 355 8.10 Command Script Plug-in Guide...... 358 8.11 Composite/Toxik Plug-in Guide...... 360 8.12 DJV Plug-in Guide...... 365 8.13 Draft Plug-in Guide...... 367 8.14 FFmpeg Plug-in Guide...... 368 8.15 Frame Fixer Plug-in Guide...... 370 8.16 fryrender Plug-in Guide...... 373 8.17 Fusion Plug-in Guide...... 375 8.18 Gelato Plug-in Guide...... 380 8.19 Generation Plug-in Guide...... 382 8.20 Houdini Plug-in Guide...... 384 8.21 Indigo Plug-in Guide...... 387 8.22 Lightwave Plug-in Guide...... 389 8.23 LuxRender Plug-in Guide...... 397 8.24 Mantra Standalone Plug-in Guide...... 399 8.25 Maxwell Plug-in Guide...... 401 8.26 Maya Plug-in Guide...... 404 8.27 Mental Ray Standalone Plug-in Guide...... 414 8.28 Messiah Plug-in Guide...... 416 8.29 MetaFuze Plug-in Guide...... 419 8.30 MetaRender Plug-in Guide...... 421 8.31 modo Plug-in Guide...... 424

ii 8.32 Naiad Plug-in Guide...... 427 8.33 Nuke Plug-in Guide...... 429 8.34 Particle Illusion Plug-in Guide...... 432 8.35 POV-Ray Plug-in Guide...... 434 8.36 PRMan (Renderman Pro Server) Plug-in Guide...... 436 8.37 Python/IronPython Plug-in Guide...... 438 8.38 Quicktime Generation Plug-in Guide...... 440 8.39 RealFlow Plug-in Guide...... 445 8.40 REDLine Plug-in Guide...... 450 8.41 Renderman (RIB) Plug-in Guide...... 452 8.42 Rendition Plug-in Guide...... 454 8.43 Rhino Plug-in Guide...... 456 8.44 RVIO Plug-in Guide...... 459 8.45 Sequence Publisher Plug-in Guide...... 461 8.46 Shake Plug-in Guide...... 463 8.47 Softimage/XSI Plug-in Guide...... 465 8.48 Terragen Plug-in Guide...... 472 8.49 Tile Assembler Plug-in Guide...... 474 8.50 VNS and WCS Plug-in Guide...... 475 8.51 VRay Standalone Plug-in Guide...... 480 8.52 Vrimg2Exr Plug-in Guide...... 482 8.53 Vue Plug-in Guide...... 484 8.54 xNormal Plug-in Guide...... 488

iii iv Deadline User Manual, Release 5.2.49424

• search

CONTENTS 1 Deadline User Manual, Release 5.2.49424

2 CONTENTS CHAPTER ONE

SETUP AND INSTALLATION

1.1 Supported Software

Deadline offers extensive out of the box third party rendering package support as well as a Scripting SDK for custom plug-in development. The following chart details which 2D and 3D rendering packages (and associated renderers) are supported by Deadline and to what degree (out of 5 stars):

3ds Max and 3ds Max Design Brazil r/s finalRender / finalToon Krakatoa Maxwell Mental Ray RenderPipe VRay

Autodesk Splutterfish Cebas Thinkbox Next Limit Mental Images ARTVPS Chaos Group

3ds Max Plug-in Guide 3ds Command Plug-in Guide

3 Deadline User Manual, Release 5.2.49424

3ds VIZ

Autodesk

3ds Command Plug-in Guide

After Effects Adobe

After Effects Plug-in Guide

Anime Studio Smith Micro Software

Anime Studio Plug-in Guide

Arnold Standalone Solid Angle

Arnold Standalone Plug-in Guide

Blender

Blender Foundation

Blender Plug-in Guide

Cinema 4D Maxon

4 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

Cinema 4D Plug-in Guide

Cleaner XL Autodesk

Cleaner XL Plug-in Guide

Combustion Autodesk

Combustion Plug-in Guide

Command Script Command Script Plug-in Guide

Composite/Toxik Autodesk

Composite/Toxik Plug-in Guide

DJV Darby Johnston

DJV Plug-in Guide

Draft Thinkbox

Draft Plug-in Guide

FFmpeg FFmpeg

1.1. Supported Software 5 Deadline User Manual, Release 5.2.49424

FFmpeg Plug-in Guide

Frame Fixer Technolumiere Ltd

Frame Fixer Plug-in Guide fryrender RandomControl

fryrender Plug-in Guide

Fusion Eyeon

Fusion Plug-in Guide

Gelato NVIDIA

Gelato Plug-in Guide

Generation Eyeon

Generation Plug-in Guide

Houdini Side Effects

Houdini Plug-in Guide

Indigo

6 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

Nicholas Chapman

Indigo Plug-in Guide

Lightwave FPrime

Newtek Worley Labs

Lightwave Plug-in Guide

LuxRender LuxRender

LuxRender Plug-in Guide

Mantra Standalone Side Effects

Mantra Plug-in Guide

Maxwell Next Limit

Maxwell Plug-in Guide

Maya 3Delight Arnold finalRender Gelato

1.1. Supported Software 7 Deadline User Manual, Release 5.2.49424

Maxwell mayaSoftware mayaHardware mayaVector Mental Ray Renderman Turtle VRay

Autodesk dna research Solid Angle Cebas NVIDIA Next Limit Autodesk Autodesk Autodesk Mental Images Pixar Illuminate Labs Chaos Group

Maya Plug-in Guide

Mental Ray Standalone Mental Images

Mental Ray Plug-in Guide

Messiah pmG Worldwide

Messiah Plug-in Guide

MetaFuze Avid

8 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

MetaFuze Plug-in Guide

MetaRender IRIDAS

MetaRender Plug-in Guide modo Luxology

modo Plug-in Guide

Naiad Exotic Matter

Naiad Plug-in Guide

Nuke The Foundry

Nuke Plug-in Guide

Particle Illusion Wondertouch

Particle Illusion Plug-in Guide

POV-Ray POV-Ray

POV-Ray Plug-in Guide

1.1. Supported Software 9 Deadline User Manual, Release 5.2.49424

PRMan (Renderman Pro Server)

Pixar

PRMan Plug-in Guide

Python IronPython

Python Foundation IronPython.net

Python/IronPython Plug-in Guide

Quicktime Apple

Quicktime Plug-in Guide

RealFlow Next Limit

RealFlow Plug-in Guide

REDLine RED

REDLine Plug-in Guide

Renderman (RIB) 3Delight

10 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

AIR BMRT Entropy Photorealistic RenderMan Renderer RenderDotC RenderPipe

Pixar dna research Sitex Graphics Paul Gregory Larry Gritz NVIDIA Pixar Okan Arikan Dot C Software ARTVPS

Renderman (RIB) Plug-in Guide

Rendition Holomatix

Rendition Plug-in Guide

Rhino McNeel

Rhino Plug-in Guide

RVIO Tweak Software

RVIO Plug-in Guide

1.1. Supported Software 11 Deadline User Manual, Release 5.2.49424

Sequence Publisher IRIDAS

Sequence Publisher Plug-in Guide

Shake Apple

Shake Plug-in Guide

Softimage/XSI Arnold

Autodesk Solid Angle

Softimage/XSI Plug-in Guide

Terragen Planetside

Terragen Plug-in Guide

VNS and WCS 3D Nature

VNS and WCS Plug-in Guide

VRay Standalone Vrimg2Exr

Chaos Group

12 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

VRay Plug-in Guide Vrimg2Exr Plug-in Guide

Vue e-on software

Vue Plug-in Guide xNormal Santiago Orgaz & co

xNormal Plug-in Guide

1.2 System Requirements

1.2.1 Deadline Client

The requirements for today’s 2D/3D applications go far beyond the requirements of the Deadline Client software, so if a machine is powerful enough to be used for rendering, it is more than capable of running Deadline.

Windows

Before installing the Deadline Client on Windows, the Microsoft .NET Framework needs to be installed first. The Deadline Client applications run on 32 and 64 bit Windows, and the following operating systems are supported: • Windows XP • Windows Vista • Windows 7 • Windows 8 • Windows Server 2003 • Windows Server 2008

1.2. System Requirements 13 Deadline User Manual, Release 5.2.49424

Note: If you are choosing a machine to run Deadline Pulse on, you should be aware that non-Server editions of Windows have a TCP/IP connection limitation of 10 new connections per second. If your render farm consists of more than 10 machines, it is very likely that you’ll hit this limitation every now and then (and the odds continue to increase as the number of machines increase). Therefore, if you are running Pulse on a farm with 10 machines or more, we recommend using a Server edition of Windows, or a different like Linux.

Linux

Before installing the Deadline Client on Linux, Mono needs to be installed first. The Deadline Client applications run on 32 and 64 bit Linux, and the following operating systems are supported: • Red Hat • Fedora • CentOS • SuSE • OpenSuSE • Debian • Ubuntu

Mac OS X

Before installing the Deadline Client on Max OS X, Mono needs to be installed first. The Deadline Client applications run on Intel Mac OS X only. The following operating systems are supported: • Leopard (10.5) • Snow Leopard (10.6) • Lion (10.7) • Mountain Lion (10.8) Note: For Mountain Lion, XQuartz must be installed because X11 is no longer included. See the Additional Software Requirements below for more information.

1.2.2 Deadline Repository

Deadline coordinates network rendering via reading and writing files to a shared directory on the network. Because of this, the Repository can basically be installed to any type of share on any type of operating system. Note that it is not necessary to have the Deadline Client installed on the machine which hosts the Repository, unless you plan on running the Slave or Pulse on this machine. Common Repository choices include: • Windows Server editions (2000 and later) • Any -based *nix OS with Samba (we recommend FreeBSD if one has a choice) Note: If installing the Repository on a non-Server Windows Operating System (XP, Vista, Windows 7), note that in standard configuration these operating systems will not allow more than 10 incoming connections without purchasing additional user access licenses from Microsoft. This means that if more than 10 machines (render nodes or work- stations) connect to the Repository, connections will be dropped, which could result in corrupt render jobs and other problems. This is a limitation of the operating systems, and isn’t something that Deadline can workaround, so we recommend using a Server edition of Windows, or a different operating system like Linux or FreeBSD.

14 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

Installer

While the Deadline Repository can be installed on any operating system, the Repository installer is only available for Windows, Linux, and Mac OS X. Note though that machine that you run the Repository installer on doesn’t have to be the same machine you’re installing the Repository to. For example, if you have an existing share called \\my_server\Repository on a server running FreeBSD, you can run the Repository installer on another machine and choose \\my_server\Repository as the install location. On Windows, the Repository installer requires that the Microsoft .NET Framework be installed. On Linux and Mac OS X, the Repository installer requires that Mono be installed.

Hardware

Please download the Scaling Whitepaper from the Miscellaneous Deadline Downloads Page. This is a guide for setting up and configuring your network to get the best performance out of your render farm. It contains a section on hardware considerations to help ensure your Repository machine meets the current and future demands of your render farm.

1.2.3 License Server

Deadline ships with Windows, Linux, and Mac OS X versions of the FLEXnet license manager, which are included as part of the Repository installation. The license server applications are extremely lightweight, so you just need to choose a machine that is reliable and is rarely taken offline. • Windows (only the 32 bit binaries are shipped, but these work fine on 32 and 64 bit) – Windows 2000, XP, Vista, 7, 8 – Windows Server 2000, 2003, 2008 • Linux (32 and 64 bit) – Red Hat, Fedora, CentOS – Suse, openSuse – Ubuntu, Debian • Mac OS X (Intel and PPC) – Tiger, Leopard, Snow Leopard, Lion, Mountain Lion

1.2.4 Additional Software Requirements

Microsoft .NET Framework (Windows)

On Windows, Deadline requires that the Microsoft .NET Framework Run-Time v2.0 SP2 be installed, which can be downloaded from the Microsoft Download Center.

Mono (Linux and Mac OS X)

On Linux and Mac OS X, Deadline requires that Mono be installed, which can be downloaded from the Mono Down- loads Page (you can find the download link by clicking on the version numbers in the table below). Note that if Mono isn’t available for your distribution of Linux, you may have to Compile and Install Mono From Source. Deadline Version Mono Version

1.2. System Requirements 15 Deadline User Manual, Release 5.2.49424

Deadline 5.2 Mono 2.6.7 Deadline 5.1 Mono 2.6.7 Deadline 5.0 Mono 2.6.7 Deadline 4.1 SP1 Mono 2.6.7 Deadline 4.1 Mono 2.6.7 Deadline 4.0 SP1 Mono 2.6.3 Deadline 4.0 Mono 2.4.3 If you’re installing Mono on Linux using a package manager, make sure to install the following packages: • libgdiplus • mono-core • mono-winforms If you are compiling from source, you need to build the following packages: • libgdiplus • mono Note: Mono 2.6.7 is the current Long Term Supported (LTS) version of Mono, and is the version we recommend for Deadline 4.1 and later. Newer versions of Mono are available, but they are not considered LTS, and therefore have not received as much testing as they should. Users seeking absolute stability should stay on Mono 2.6.7. Users switching to newer Mono versions should expect a faster bug turn around time, but they should also plan on upgrading to new releases of Mono as they fix bugs in their stack.

XQuartz (Mac OS X Mountain Lion and later)

X11 is no longer shipped with Mountain Lion, but XQuartz can be installed instead.

1.3 Render Farm Considerations

1.3.1 Overview

This is a list of things that should be taken into consideration before installing Deadline.

16 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

1.3.2 Network and Hardware

Please download the Scaling Whitepaper from the Miscellaneous Deadline Downloads Page. This is a guide for setting up and configuring your network to get the best performance out of your render farm. It contains a section on hardware considerations to help ensure your Repository machine meets the current and future demands of your render farm.

1.3.3 Rendering Software and Licensing

It is recommended that the rendering software (3ds Max, Maya, etc) be installed on all of your slave machines (prefer- ably to the same location on each machine) before attempting to network render through Deadline. This makes configuring the Deadline plugins easier. In addition, it is recommended that all licensing your rendering software requires be setup before attempting to network render through Deadline. Deadline doesn’t handle the licensing of 3rd party rendering software, so you should refer to your rendering software’s documentation or contact its support team if you run into issues with licensing.

1.3.4 Store Assets On The Network

It is recommended that all assets (ie: scenes, footage, textures, etc) used by your render jobs be placed on a network share (preferably a server), which can be accessed via a shared path or a mapped network drive. This is important for two reasons: • It ensures that all the slaves in your render farm have access to your asset files. • It ensures that the slaves use the same version of the asset files that are used by your job. Note that Deadline can optionally submit the scene file with the job. This results in the scene file being sent to the Repository or an alternate location, and then copied locally to the Slave that renders it. If the scene file contains relative asset paths, it is recommended to not submit the scene file with the job, as these relative paths will likely be broken when the Slave renders the scene from its local location. When rendering in a mixed OS environment, you can configure Deadline to swap paths based on the OS it is running on. The way this works is often specific to the rendering software that you are using, so please refer to Cross-Platform Rendering Considerations section for the plug-in that you are using for more information. You can access plug-in specific documentation in the Deadline Plug-ins documentation.

1.3.5 Save Output Files To The Network

All output should be saved to a network share as well (preferably a server). This is important because it ensures that all the slaves in your render farm have access to the output path.

1.3.6 Remote Administration

During the Deadline Repository installation, you can enable Remote Administration under the Client Setup settings in the Repository Options. This feature allows you to control all the slave machines remotely from a single machine, including starting and stopping the Slave application, and running arbitrary command line applications on each ma- chine. However, this feature can be a potential security risk if you are not behind a firewall. If this is the case, we recommend that you keep this feature disabled. After installing Deadline, you can enable or disable Remote Administration in the Client Setup section of the Reposi- tory Options, which can be accessed from the Deadline Monitor by selecting Tools -> Configure Repository Options while in Super User Mode.

1.3. Render Farm Considerations 17 Deadline User Manual, Release 5.2.49424

1.3.7 Automatic Updates

During the Deadline Repository installation, you can enable Automatic Updates under the Client Setup settings in the Repository Options. Enabling this feature makes minor upgrades easy, with little to no downtime. Refer to the Upgrading Documentation for more information. After installing Deadline, you can enable or disable Automatic Updates in the Client Setup section of the Repository Options, which can be accessed from the Deadline Monitor by selecting Tools -> Configure Repository Options while in Super User Mode.

1.3.8 Setup An SMTP Server for Deadline Emails

Deadline can use email to notify users when their jobs have succeeded or failed. Email can also be used to notify system administrators of all sorts of events, like when slaves stall or when jobs become corrupt. It is recommended that an SMTP server be setup so that you can make use of these features. After installing Deadline, you can configure the email notification settings in the Repository Options, which can be accessed from the Deadline Monitor by selecting Tools -> Configure Repository Options while in Super User Mode.

1.3.9 Auto Login on Windows Slave Machines

If you’re not running the Slave as a service, it can be set to start automatically when the machine it is on starts up, but this requires that the slave machine login automatically. On Windows, this can be done by modifying the registry on each slave. These are the steps to setup your slave machine registry to login: 1. Download the Registry Entry File For Auto Login from the Miscellaneous Deadline Downloads Page. 2. Edit the file to use the username and password you wish to. 3. Login to the slave as the specified user, then double-click on this file to run. 4. The next time you restart the machine, it should login automatically as the specified user. By default, the slaves are set to start automatically when the machine logs in. This setting, as well as others, can be modified from the Deadline Launcher on each slave.

1.4 Installation Guide

1.4.1 Overview

This guide will walk you through the Deadline installation process. Please do not hesitate to contact Deadline Support if you run into any problems along the way. Before installing the Deadline software, you should check the Deadline System Requirements. Next, you should take a look at the Render Farm Considerations, which covers some things that should be taken into consideration before proceeding with the installation.

1.4.2 Deadline Repository Installation

The Deadline Repository stores all the information that is used by Deadline, such as render jobs, slave settings, and software plug-ins. It only needs to be installed to a single location on your network, and must be installed with Administrator privileges. The root installation location needs to be accessible to all workstations and render nodes at

18 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424 all times, so it is recommended that the server that is hosting the Repository is stable and rarely goes offline. More information on sharing the Repository root is included later on in this document. Deadline’s unique architecture allows it to run without the need for a server application, as the Deadline applications can scan the Repository for render jobs themselves. The absence of a server application improves Deadline’s robust- ness because it removes a single point of failure. As long as your Repository share is available, Deadline will be fully functional. However, if you have more than 50 render nodes in your farm, or are experiencing performance issues, we recommend that you run the Deadline Pulse application on one of your machines in your network. Pulse is included in the Client Installation, which is explained later on. Pulse acts as a proxy between the Deadline applications and the Repository, which helps to reduce the load on your network and improve Deadline’s overall performance. Note that if the Pulse application goes down for any reason, the Deadline applications will revert back to scanning the Repository themselves. Whether you decide to run Pulse or not, you will still benefit from Deadline’s robustness.

Deadline includes Repository installers for Windows, Linux, and Mac OSX, and the installation procedure for all three is identical. To install the Deadline Repository, simply run the appropriate installer and follow the steps. If you’re installing over an existing Repository installation, all previous binaries, plug-ins, and scripts will be backed up prior to being overwritten. After the installation is complete, you can find these backed up files in the Backup folder in the Repository installation root. Note that installing over an existing repository is only supported for repairing a damaged repository, or for performing a minor upgrade. Major upgrades require a fresh repository installation. See the Upgrading Documentation for more information. On Windows and Linux, the Repository Setup Wizard will be displayed at the end of the installation to allow you to configure the Repository Options. On Mac OSX (as well as Windows and Linux), you can configure the Repository Options after you install the Deadline Client software. Just run the Deadline Monitor and enter Super User Mode, then select Tools -> Configure Repository Options.

1.4. Installation Guide 19 Deadline User Manual, Release 5.2.49424

You can choose either Basic or Advanced mode for the Repository Setup Wizard. In Basic mode, you just need to configure the Client Settings, which are covered in the Client Setup section of the Repository Options. If you choose the Advanced mode, some key settings to consider are as follows: • Use Security: Define a Super User Password to protect normal users from accessing administration options in the Deadline Monitor application. For added security, enable the Use System User For Deadline User option to prevent users from impersonating someone else in Deadline. • Email Notification: These settings are used to send emails to job users when their jobs complete, as well as send emails to accounts specified in the Notification Accounts section. They are also used to send error reports to the Deadline developers, which helps us identify and fix problems faster. • Application Logging: Enabling Slave and Pulse verbose logging helps when trying to debug issues if they arise. • Pulse Settings: If you plan to run the Pulse application, you can configure the settings here. The host name or IP address must be specified so that the Deadline applications know how to contact Pulse. The other settings can be used to tweak performance, and are discussed in more detail in the Network Performance Guide. If you’re installing to a local path on Windows, the Repository Setup Wizard will also try to create the Repository share automatically. If this fails, or if you are installing on a Linux or Mac machine, see the documentation on Sharing Your Repository Folder.

Installing the Deadline Repository on any type of existing share (like a NAS drive)

Because the Deadline Repository is just a collection of files and folders, it is possible to host the repository on any type of share. There are two common ways to do this: • Create a share on the machine you wish to host the repository. Then run the installer from another machine, but choose the share as the installation directory. • Install the repository on a Windows, Linux, or Mac OSX machine. Then create a share on the ma- chine you wish to host the repository and move the contents of the local installation folder to the share. For example, if you install the Repository to “C:\Program Files\Thinkbox\DeadlineRepository”, and your share is “\\server\DeadlineRepository”, you would move the contents of “C:\Program Files\Thinkbox\DeadlineRepository” to “\\server\DeadlineRepository”. When you go to configure your slaves, point them to the share.

20 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

Setting Permissions for the Deadline Repository Folder

The Deadline applications need to be able to read and write to the Repository root, so you will need to enable full read/write permissions. See the documentation on Sharing Your Repository Folder for more information.

1.4.3 License Server Installation

The Deadline Slave application requires a valid license, so it is recommended that you setup your license server prior to installing the Client software. Before you can setup the license server, you must receive a license file from the Deadline Sales team. Usually within one business day of sending in your request, someone will contact you regarding your license. Once you have your license, see the Licensing Section of the manual for instructions on how to setup and install your license server. • To request a 30 day trial license or purchase a permanent license, please contact Deadline Sales. If you wish to run Deadline in Free Mode, you can skip this step. The only limitation to running Deadline in Free Mode is that you can only have two slaves in your repository. This mode is great if you want to do some initial testing with Deadline before requesting a trial license for your entire farm, or if you simply have a couple extra machines sitting around that you want to use for rendering. If Deadline is running in Free Mode, you will see the following message when the Slave starts up.

Once there are three or more slaves in your Repository, the Slave applications will not start up without a valid license. To return to using Free Mode, you need to delete the extra slaves from your Repository. You can do this from the Monitor while in Super User Mode by right-clicking on the slave(s) in the Slave List and selecting Delete Slave. You can also manually remove the individual slave folder(s) from the slaves folder in your Repository installation.

1.4.4 Deadline Client Installation

The Deadline Client contains several key applications, which include: • Deadline Launcher: This application is the heart of the Deadline Client software. It can automatically update your client machine after the Repository is upgraded, and it can allow the Slave and Pulse applications to be controlled remotely from the Monitor application. • Deadline Monitor: This application can be used to submit and monitor Deadline jobs, and can also be used to perform administrative tasks and control the farm. • Deadline Job Monitor: This application can be used to monitor specific jobs without having the full Monitor application running. • Deadline Slave: This application is responsible for rendering the Deadline jobs.

1.4. Installation Guide 21 Deadline User Manual, Release 5.2.49424

• Deadline Pulse: This application acts as a proxy between the other Deadline applications and the Repository. While optional, it can help reduce network load and improve overall performance. It also enables some Deadline features, like Auto Configuration, Power Management, and Statistics Gathering. • Deadline Command: This command line application is used to perform job submissions, and can also be used to query the Repository for specific data. The installer must be run with Administrator privileges. The Deadline Client software must be installed on all machines that will be used for rendering, as well as the machines that you will be submitting and monitoring render jobs from. If you wish to run Pulse, you should also install the Client software on the appropriate machine. Note that if you wish to include the Repository machine in the rendering process, you need to install the Client software on it as well (this is not recommended for larger render farms). There are Client installers for Windows, Linux, and Mac OSX. To install the Deadline Client, simply run the appro- priate installer and follow the steps.

Windows Client Installation

After opening the installer, agree to the Licensing Agreement, and press Yes to continue. After setting the installation location, review the components that will be installed, and press Next to continue.

22 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

The next couple of panels allow you to configure the Launcher and Client settings. The Launcher settings are as follows: • Launcher Listening Port: Specify the listening port. This should be the same across all of your client machines. • Auto Configuration Port: Specify the port used for Auto Configuration broadcasts. This should be the same across all of your client machines. • Start Launcher On Startup: Enable this option to have the Launcher start up automatically when the machine is logged in (recommended). • Start Slave When Launcher Starts: Enable this option to have the Launcher launch the Slave when it starts up. Common practice is to leave this option enabled for render nodes, and disabled for artist workstations. • Install Launcher As Service: Enable this option to install the Launcher as a service. Note that when the Launcher runs as a service, the Slave and Pulse applications will run in the background. This may be useful for render nodes so that you don’t have to be logged into the machine to render. However, for initial testing, or when installing on workstations, it is recommended to not install the service. • Service Requires Log On: If you want to run the Launcher service under a non-SYSTEM account (recom- mended), you can set the password and account here. The Client settings are as follows: • Deadline Repository Path: The Repository root share that the Deadline applications will connect to. Leave blank if you want to set this later from the Launcher application. • License Server: Specify the license server that the Slave application should connect to. The format for this is usually @SERVER, where SERVER is the host name or IP address of your license server machine. If you have configured your license server to use a specific port (ie: 12345), you would use the format 12345@SERVER. Leave this blank if you want to set this later from the Launcher application.

1.4. Installation Guide 23 Deadline User Manual, Release 5.2.49424

After reviewing your installation settings, press Next to proceed with the installation. The Windows Client installer also supports silent installations. To view the available options, run the Client installer from a DOS Prompt with the /help flag. For example, to specify the Repository root and license server during instal- lation, you could do the following: DeadlineClient.exe /mode silent /repository \\your\repository /licenseserver 12345@myserver

Linux Client Installation

After opening the installer, agree to the Licensing Agreement, and press Yes to continue. Then set the installation location.

24 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

The next couple of panels allow you to configure the Launcher and Client settings. The Launcher settings are as follows: • Launcher Listening Port: Specify the listening port. This should be the same across all of your client machines. • Auto Configuration Port: Specify the port used for Auto Configuration broadcasts. This should be the same across all of your client machines. • Start Launcher On Startup: Enable this option to have the Launcher start up automatically when the machine is logged in (recommended). • Start Slave When Launcher Starts: Enable this option to have the Launcher launch the Slave when it starts up. Common practice is to leave this option enabled for render nodes, and disabled for artist workstations. The Client settings are as follows: • Deadline Repository Path: The Repository root share that the Deadline applications will connect to. Leave blank if you want to set this later from the Launcher application. • License Server: Specify the license server that the Slave application should connect to. The format for this is usually @SERVER, where SERVER is the host name or IP address of your license server machine. If you have configured your license server to use a specific port (ie: 12345), you would use the format 12345@SERVER. Leave this blank if you want to set this later from the Launcher application.

1.4. Installation Guide 25 Deadline User Manual, Release 5.2.49424

After reviewing your installation settings, press Next to proceed with the installation. The Linux Client installer also supports silent installations. To view the available options, run the Client installer from a terminal with the –help flag. For example, to specify the Repository root and license server during installation, you could do the following: ./DeadlineClient --mode silent --repository /mnt/repository --licenseserver 12345@myserver

Mac OSX Client Installation

After opening the installer, agree to the Licensing Agreement, and press Continue. Then select a destination, and press Install to install the software. After the files have been installed, a Deadline Client configuration window will be displayed.

26 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

The Client settings are as follows: • License Server: Specify the license server that the Slave application should connect to. The format for this is usually @SERVER, where SERVER is the host name or IP address of your license server machine. If you have configured your license server to use a specific port (ie: 12345), you would use the format 12345@SERVER. Leave this blank if you want to set this later from the Launcher application. • Repository Root: The Repository root share that the Deadline applications will connect to. Leave this blank if you want to set this later from the Launcher application. • Auto Configuration Port: Specify the port used for Auto Configuration broadcasts. This should be the same across all of your client machines. The Launcher settings are as follows: • Listening Port: Specify the listening port. This should be the same across all of your client machines. • Start Launcher At Login: Enable this option to have the Launcher start up automatically when the machine is logged in (recommended). • Start Slave When Launcher Starts: Enable this option to have the Launcher launch the Slave when it starts up. Common practice is to leave this option enabled for render nodes, and disabled for artist workstations. The Mono settings are as follows: • Use X11 Multi-Display Workaround With Mono’s X11 Driver: If you have a multiple-monitor display, you might want to consider enabling the X11 Multi-Display Workaround. While this sometimes results in a white “flash” when displaying some windows, it ensures windows (like splash-screens) appear in the middle of a single monitor, and not “between” monitors. Press OK to finish the installation. Note that after you’ve installed the Deadline client, you can modify these options by running the ClientSetupWizard application in the Deadline install folder. If you get the following error before the Deadline Client configuration is displayed, it could be due to a Mono config- uration issue: Install Failed The following install step failed: run postflight script for Deadline. Contact the software manufacturer for assistance.

This error usually occurs because Mono is unable to find or load the libgdiplus library (a DllNotFoundException is actually occurring behind the scenes). There are two common reasons for this:

1.4. Installation Guide 27 Deadline User Manual, Release 5.2.49424

1. The necessary X11 libraries that libgdiplus depends on are missing or are too old. Try installing or upgrading X11 to see if it helps. 2. Mono can’t load libgdiplus because the system’s dynamic loader isn’t configured to find the shared libraries. For more information, including steps to resolve the problem, see Mono’s DllNotFoundException Documentation.

1.4.5 Slave Auto Configuration

This allows you to set certain settings in a single location, like the repository path, or license server. When a Slave starts up, it will automatically pull this configuration and apply it before fully initializing. Now if the repository path or license server changes, you no longer have to apply the change to all your machines. In addition, you no longer have to configure new clients manually after they are installed. See the Auto Configuration documentation for more information.

1.4.6 Additional Reading and Configurations

Now that the Repository and Client software have been installed, there are some other things you may want to look at to get the full benefit out of your render farm.

Getting Started

Refer to the Getting Started with Deadline section of the manual. It contains useful information to help get you familiar with using Deadline.

Deadline Applications

Refer to the Deadline Applications section of the manual. It contains useful information on all the Deadline applica- tions included with the Client installation.

Advanced Features

Refer to the Advanced Features section of the manual. It contains useful information to help you customize your render farm to suit your needs.

Plug-in and Submission Script Configuration

Deadline has a plug-in for each application it supports (3ds Max, Maya, etc), and they should be configured before doing any rendering. Specifically, you should make sure the plug-ins are configured to point to the correct rendering executables. They can be configured from the Deadline Monitor while in Super User Mode by selecting Tools -> Configure Plugins. Deadline also includes integrated submission scripts for many applications, which allow you to submit your job from within the application itself. Most of these scripts can be installed using the Install Integrated Submission Scripts option from the Scripts menu in the Deadline Monitor. Note that in order for Deadline to install these scripts to their required destination, you will likely need to run the Monitor as an Administrator.

28 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

Just click on the Install button for the appropriate application to install the script. Note that some scripts require manual steps and will link to the appropriate documentation. Also, if you run into permission issues when using the script installer, you will have to install these scripts manually. You can also view the manual instructions for installing these scripts by clicking on the appropriate link below. • 3ds Command Integrated Submission Script Setup • 3ds Max Integrated Submission Script Setup • After Effects Integrated Submission Script Setup • Blender Integrated Submission Script Setup • Cinema 4D Integrated Submission Script Setup • Composite/Toxik Integrated Submission Script Setup • Fusion Integrated Submission Script Setup • Generation Integrated Submission Script Setup • Houdini Integrated Submission Script Setup • Lightwave Integrated Submission Script Setup • Maya Integrated Submission Script Setup • Messiah Integrated Submission Script Setup • modo Integrated Submission Script Setup

1.4. Installation Guide 29 Deadline User Manual, Release 5.2.49424

• Nuke Integrated Submission Script Setup • RealFlow Integrated Submission Script Setup • Rhino Integrated Submission Script Setup • Softimage/XSI Integrated Submission Script Setup • Vue Integrated Submission Script Setup For applications that do not have integrated submission scripts, you can submit jobs for them from the Submit menu in the Deadline Monitor. See the Deadline Plug-ins documentation for information on configuring plug-ins and setting up submission scripts (where applicable) for each application that Deadline supports.

1.5 Licensing Guide

See the License Server Documentation for more information on installing and configuring the License Server.

1.6 Upgrading or Downgrading

1.6.1 Overview

This will guide you through the process of upgrading or downgrading an existing Deadline installation.

1.6.2 Major Upgrades or Downgrades

Due to the large amount of internal changes to the client and repository structure between major releases, it is necessary to reinstall the Deadline Client on all of your machines, and install a new repository as opposed to installing over your existing repository. For example, if you’re upgrading from Deadline 4.x to 5.x, or you are downgrading from Deadline 4.x to 3.x, you will need to reinstall everything and you should refer to the Installation Documentation.

1.6.3 Minor Upgrades or Downgrades

If you performing a minor upgrade or downgrade, you only need to update the existing Deadline Repository. For example, if you’re upgrading from Deadline 4.0 to 4.1, or downgrading from 3.1 to 3.0, you can follow this guide.

Important Note When Upgrading From 5.0 to 5.1

When upgrading from 5.0 to 5.1, the procedure is a bit different than a typical minor upgrade. The Repository can still be upgraded as normal by installing over the existing 5.0 repository (see Updating the Repository below). However, the 5.1 Client software needs to be reinstalled on each machine. This is because the 5.1 Client installer ships with the Python bundle that Deadline uses. Note that you don’t have to uninstall the 5.0 Client first, you can just install the 5.1 Client over the existing 5.0 installation.

Updating the Repository

Download the installation package for the version you want to switch to from the Deadline Download Page, then run the Repository installer on any machine, providing that it has access to the shared Deadline Repository root. Select the directory where the Repository has been previously installed as the Destination Folder. This can be the network path to the Repository if you’re running the installer from another machine.

30 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

Before performing the update, the Repository installer will automatically back up any files that it overwrites and store them in the Backup folder in the Repository root. The following Repository folders are backed up: • Bin: the Deadline Client binaries • Events: the event plug-ins • Plugins: the software plug-ins • Scripts: the Monitor scripts • Submission: the submission scripts At the end of the Repository update, the Repository Setup Wizard will run if you’re on Windows or Linux. If you have run the Repository Setup Wizard previously, you can just press Cancel when the wizard starts up. You can modify the Repository Options later from inside the Deadline Monitor while in Super User Mode by selecting Tools -> Configure Repository Options.

Updating the Clients

Note that if you don’t have Automatic Updates enabled, then you will have to update the clients manually, which involves running the Client Installers on the machines. See the Client Setup section of the Repository Options docu- mentation for more details on enabling Automatic Updates. After the Repository has been updated, the Deadline Client should updated on all the machines on the network. If you have Automatic Updates enabled in the Repository Options, all you have to do is restart the Slave application on each slave, and Deadline will notice that the Repository has been updated and will automatically update Deadline Client. In addition, the next time artists launch the Monitor on their workstations, their installation will also be updated. To restart the Slaves remotely, first make sure Remote Administration is enabled. See the Client Setup section of the Repository Options documentation for more details on enabling Remote Administation. Select the Slaves you want to update in the Deadline Monitor while in Super User mode, then right click and select Remote Control -> Restart Slaves. If the slaves are currently rendering and you don’t want to disrupt them, you can choose the Restart Slaves After Current Task option instead. This option will allow the Slaves to update after they finishes rendering their current task to prevent the loss of any render time. After restarting the Slaves, several Slaves may appear offline or a message may pop up saying the certain Slaves did not respond. This may occur because all the Slaves are trying to update at once. Wait a little bit and click on the Refresh button to make sure that all the Slaves have restarted properly.

1.7 Sharing The Repository

1.7.1 Overview

This guide explains how to share your your Repository folder and configure its permissions to ensure the Deadline Client has full access. Without full read/write access, the Deadline Client applications will not be able to function properly.

1.7.2 Windows

Permissions

Now that the Repository folder is being shared, you need to configure the security settings. Note that the images shown here are from Windows XP, but the procedure is basically the same for any version of Windows.

1.7. Sharing The Repository 31 Deadline User Manual, Release 5.2.49424

• On the machine where the Deadline Repository is installed, navigate to the folder where it is installed using Windows Explorer. • Right-click on the Deadline Repository folder and select Properties from the menu. • Select the Security tab.

• If there is already an Everyone item under Group or user names, you can skip the next two steps. • Click on the Add button. • In the resulting dialog, type Everyone and click OK.

• Select Everyone under Group or user names. • Ensure that Modify, Read & Execute, List Folder Contents, Read, and Write are all checked under the Allow column.

32 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

• Click on the OK button to save the settings.

Sharing

First, you need to share the Repository folder. Note that the images shown here are from Windows XP, but the procedure is basically the same for any version of Windows. • On the machine where the Deadline Repository is installed, navigate to the folder where it is installed using Windows Explorer. • Right-click on the Deadline Repository folder and select Properties from the menu. If you’re unable to see the Sharing tab, you may need to disable Simple File Sharing in the Explorer Folder Options. • Select the Sharing tab.

1.7. Sharing The Repository 33 Deadline User Manual, Release 5.2.49424

• Select the option to Share This Folder, then specify the share name. • Click the Permissions button. • Give Full Control to the Everyone user. • Press OK on the Permissions dialog and then the Properties dialog.

34 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

1.7.3 Linux

Permissions

Since Deadline expects full read and write access to the repository, it’s recommended to use a single user account to mount shares across all machines. It is possible to add particular users to a ‘deadline’ group, but you will need to experiment with that on your own. So for both of the sharing mechanisms we explain below, you’ll need to create a user and a group named ‘deadline’. They don’t need a login or credentials, we just need to be able to set files to be owned by them and for their account to show up in /etc/passwd. So, to do this use the useradd command. sudo useradd -d /dev/null -c "Deadline Repositry User" -M deadline

This should create a user named “deadlin” with no home folder, and a fancy comment. The account login should also be disabled, meaning your standard users can’t ssh or ftp into your file server using this account. Set a password using ‘sudo passwd deadline‘ if you need your users to login as deadline using ftp or ssh. Now add a group using sudo groupadd deadline

And finally, have the Deadline Repository owned by this new user and group sudo chown -R deadline:deadline /path/to/repository sudo chmod -R 777 /path/to/repository

Now you’re ready to set up your network sharing protocol.

1.7. Sharing The Repository 35 Deadline User Manual, Release 5.2.49424

Sharing

There are a many ways this can be done, and this just covers a few of them. Samba Share This is an example entry in the /etc/samba/smb.conf file: [DeadlineRepository] path = /path/to/repository writeable = Yes guest ok = Yes create mask = 0777 force create mode = 0777 force directory mode = 0777 unix extensions = No

NFS Share The simplest thing that could possibly work. Note that this is not the most secure thing that could possibly work: For Linux and BSD, open up /etc/exports as an administrator, and make one new export: /usr/local/DeadlineRepository 192.168.2.0/24(rw,all_squash,insecure)

Breakdown of this command is as follows: /usr/... Folder to share. Deadline Repository installs into /usr/local/DeadlineRepository by default on Linux 192.168.2.0/24 The IP range to allow. The zero is important for these ranges. You can also go by hostname if you have reverse DNS, or * to allow from anyone’s computer rw Allow read/write for the repository. Required for Deadline. all_squash Make every single person who connects to the Deadline share map to the nobody:nogroup user and group. This relieves a lot of permissions pain for new Deadliners at the cost of zero security. Files and folders within your repository will be fully readable and writeable by whomever is able to connect to your NFS server. Deadline requires this, but it can also be achieved by creating a group and adding individual users into that group. Many studios will only need all_squash as Deadline will keep track of who submits what jobs. insecure Required for OSX to mount nfs shares. It simply means that NFS doesn’t need to receive requests on a port in the secure port range (a port number less than 1024) Once that’s done, you may need to install an NFS server. To do so, open a terminal or your favourite package manager to install one. For Ubuntu Server, type the following: sudo apt-get install nfs-kernel-server

Then start up the server (for those living in an init.d world): sudo /etc/init.d/nfs-kernel-server start

Any time you change the exports file, you’ll need to issue the same command, but replace ‘start’ with ‘reload’. There is an excellent tutorial here as well: https://help.ubuntu.com/community/SettingUpNFSHowTo

36 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

1.7.4 Mac OSX

Permissions

Note that the images shown here are from Leopard (10.5), but the procedure is basically the same for any version of Mac OSX. • On the machine where the Deadline Repository is installed, navigate to the folder where it is installed using Finder. • Right-click on the Deadline Repository folder and select Get Info from the menu. • Expand the Sharing & Permissions section, and unlock the settings if necessary. • Give everyone Read & Write privileges. • While probably not necessary, also give admin Read & Write privileges.

If you prefer to set the permissions from the Terminal, run the following commands: $ chown -R nobody:nogroup /path/to/repository $ chmod -R 777 /path/to/repository

1.7. Sharing The Repository 37 Deadline User Manual, Release 5.2.49424

Sharing

There are a many ways this can be done, and this just covers a few of them. Using System Preferences Note that the images shown here are from Leopard (10.5), but the procedure is basically the same for any version of Mac OSX. • Open System Preferences, and select the Sharing option. • Make sure File Sharing is enabled, and then add the Repository folder to the list of shared folders. • Under Users, give everyone Read & Write privileges. • If sharing with Windows machines, press the Options button and make sure the “Share files and folders using SMB (Windows)” is enabled.

Samba Share Interestingly, OSX uses samba as well. Apple just does a good job of hiding it. To create a samba share in OSX, past this at the bottom of /etc/smb.conf: [DeadlineRepository] path = /path/to/repository writeable = Yes guest ok = Yes create mask = 0777 force create mode = 0777

38 Chapter 1. Setup and Installation Deadline User Manual, Release 5.2.49424

force directory mode = 0777 unix extensions = No

1.8 Migrating The Repository

Moving your Repository to a new location or machine is relatively straight forward. Just follow these steps: 1. Ensure that the share for the new location already exists. Also ensure that the proper permissions have been set. 2. Shut down all the Slave applications running on your render nodes. 3. Copy the Repository folder from the original location to the new location. 4. Redirect all your client machines to point to the new Repository location. 5. Start up the Slaves and ensure that they can connect to the new Repository location. 6. Delete the original Repository (optional). As an alternative to step (4), you can configure your share name (if new Repository is on the same machine) or your DNS settings (if new Repository is on a different machine) so that the new Repository location has the same path as the original. This saves you the hassle of having to reconfigure all of your slaves.

1.8. Migrating The Repository 39 Deadline User Manual, Release 5.2.49424

40 Chapter 1. Setup and Installation CHAPTER TWO

GETTING STARTED

2.1 How Deadline Works

2.1.1 The Deadline Repository

The Deadline Repository is the heart of Deadline. It stores all the information that is used by Deadline, such as render jobs, slave settings, and software plug-ins. All job scheduling and management is done by reading and writing files to Repository. Deadline’s unique architecture allows it to run without the need for a server application, as the Deadline applications can scan the Repository for render jobs themselves. The absence of a server application improves Dead- line’s robustness because it removes a single point of failure. As long as your Repository share is available, Deadline will be fully functional. However, if you have more than 50 render nodes in your farm, or are experiencing performance issues, we recommend that you run the Deadline Pulse application on one of your machines in your network. Pulse is included in the Client Installation. Pulse acts as a proxy between the Deadline applications and the Repository, which helps to reduce the load on your network and improve Deadline’s overall performance. Note that if the Pulse application goes down for any reason, the Deadline applications will revert back to scanning the Repository themselves. Whether you decide to run Pulse or not, you will still benefit from Deadline’s robustness. When a user submits a rendering job to Deadline, a new job folder is created in the Repository along with the necessary files to store the job’s settings. When a Slave picks up the job for rendering, it copies the job folder locally before proceeding. When rendering is complete, the local folder is deleted and the Slave moves on to find another job. Note that all external references the job relies on, such as textures or other scene data, should be network accessible because these files are not copied to the Repository. In addition, rendering output is not saved to the Repository, so the Slaves need to be able to access the job’s output path(s) so that the images can be saved. This is explained further in the Render Farm Considerations documentation.

2.1.2 The Deadline Job

As explained above, when a job is submitted to Deadline, it is placed in the Repository where it becomes visible to Deadline Monitor and accessible to the computers running the Deadline Slave application. Most jobs can be broken down into several tasks that make up that job. For example, when rendering an animation with 3ds Max, each frame can be rendered as a separate task. This allows multiple Slaves to be able to work on the same job at the same time. Some other jobs cannot be divided into tasks this way, such as creating a Quicktime movie from the individual frames of an animation. There are several states that a job can be in during its lifetime in the Repository. The possible job states are: • Queued: Job is waiting to be rendered. • Active: One or more of the job’s tasks are currently being rendered. • Suspended: The job is paused, and will not be rendered until it is resumed.

41 Deadline User Manual, Release 5.2.49424

• Pending: The job is either scheduled, or is dependent on another job. • Completed: All of the job’s tasks have finished rendering. • Failed: The job has reported the maximum number of errors allowed. • Archived: The job can no longer be modified. • Deleted: The job no longer exists in the Repository. Below are some examples of the possible paths a job can follow. For information on how a slave actually selects a job, see the Job Scheduling section of the manual.

Normal Job Flow

1. The job is submitted to Deadline and placed in the Repository. It will have the status of Queued when viewed from the Monitor. 2. The job is picked up by one or more Slaves. It will have the status of Active in the Monitor. The number in brackets beside the Active status indicates the number of slaves currently rendering the active job. 3. All of the job’s tasks have finished rendering. It will have the status of Completed in the Monitor.

Pending Job Flow

1. The job is submitted to Deadline that is dependent on another job. It will have the status of Pending when viewed from the Monitor. 2. The other job that this job is dependent on finishes. It will have the status of Queued when viewed from the Monitor. 3. The job is picked up by one or more Slaves. It will have the status of Active in the Monitor. The number in brackets beside the Active status indicates the number of slaves currently rendering the active job. 4. All of the job’s tasks have finished rendering. It will have the status of Completed in the Monitor.

42 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

Suspended Job Flow

1. The job is submitted to Deadline and placed in the Repository. It will have the status of Queued when viewed from the Monitor. 2. The job is picked up by one or more Slaves. It will have the status of Active in the Monitor. The number in brackets beside the Active status indicates the number of slaves currently rendering the active job. 3. The job is suspended by right-clicking on the job in Monitor and selecting Suspend Job. It will have the status of Suspended when viewed from the Monitor. While a job is suspended, the Slaves will effectively ignore it and not choose any tasks associated with that job. 4. The job is resumed by right-clicking on the job in the Monitor and selecting Resume Job. It will have the status of Queued when viewed from the Monitor. It will eventually enter the Active state when Slaves begin rendering the job again. 5. All of the job’s tasks have finished rendering. It will have the status of Completed in the Monitor.

2.1. How Deadline Works 43 Deadline User Manual, Release 5.2.49424

Failed Job Flow

1. The job is submitted to Deadline and placed in the Repository. It will have the status of Queued when viewed from the Monitor. 2. The job is picked up by one or more Slaves. It will have the status of Active in the Monitor. The number in brackets beside the Active status indicates the number of slaves currently rendering the active job. 3. The job reports the maximum number of errors allowed. It will have the status of Failed when viewed from the Monitor. While a job is in the Failed state, the Slaves will effectively ignore it and not choose any tasks associated with that job. 4. The job is resumed by right-clicking on the job in the Monitor and selecting Resume Failed Job. It will have the status of Queued when viewed from the Monitor. It will eventually enter the Active state when Slaves beging rendering the job again. 5. All of the job’s tasks have finished rendering. It will have the status of Completed in the Monitor.

Requeued Job Flow

1. The job is submitted to Deadline and placed in the Repository. It will have the status of Queued when viewed from the Monitor. 2. The job is picked up by one or more Slaves. It will have the status of Active in the Monitor. The number in brackets beside the Active status indicates the number of slaves currently rendering the active job. 3. All of the job’s tasks have finished rendering. It will have the status of Completed in the Monitor. 4. One or more of the job’s tasks are requeued by right-clicking the tasks in the Monitor and selecting Requeue Tasks. One reason to requeue a task is that its rendered output may not be satisfactory (the software on a Slave may be misconfigured, for instance). It will have the status of Queued when viewed from the Monitor. It will eventually enter the Active state when Slaves beging rendering the job again.

44 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

Archived Job Flow

1. The job is submitted to Deadline and placed in the Repository. It will have the status of Queued when viewed from the Monitor. 2. The job is picked up by one or more Slaves. It will have the status of Active in the Monitor. The number in brackets beside the Active status indicates the number of slaves currently rendering the active job. 3. All of the job’s tasks have finished rendering. It will have the status of Completed in the Monitor. 4. The job is archived by right-clicking on the job in the Monitor and selecting Archive Job. It will have the status of Archived when viewed from the Monitor. Archived jobs cannot have their status or properties changed, but you can still explore their output or retrieve the data file submitted with the job.

2.1. How Deadline Works 45 Deadline User Manual, Release 5.2.49424

2.2 Job Submission

2.2.1 Standard Job Submission

The easiest and most common way to submit render jobs to Deadline is via our many submission scripts which are written for each rendering application that Deadline supports. After you have submitted your job to Deadline, you can Monitor Its Progress using the Deadline Monitor. Integrated Submission Scripts Where possible, we have created integrated submission scripts that allow you to submit jobs directly from the ap- plication you’re working with. See the Deadline Plug-ins documentation for more information on how to set up the integrated submission scripts (where applicable) and submit jobs for specific applications.

Monitor Submission Scripts In cases where an application doesn’t have an integrated submission script, you can submit the jobs from the Submit menu in the Deadline Monitor. Note that applications that have integrated submission scripts also have Monitor scripts here, but in most cases there are less options to choose from. This is because the integrated submission scripts use the application’s native scripting language to pull additional information from the file being submitted. See the Deadline Plug-ins documentation for more information on how submit jobs for specific applications.

46 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

You can also create your own submission scripts for the Deadline Monitor. Check out the Monitor Scripting documen- tation for more details.

2.2.2 Common Job Submission Options

There are many job options that can be specified on submission. A lot of these options are general job properties that aren’t specific to the application you’re rendering with. Some of these options are described below. There are also many other options that are specific to the application that you’re rendering with. These are covered in each application’s plug-in guide, which can be found in the Deadline Plug-ins documentation. Job Name The name of your job. This is optional, and if left blank, it will default to “Untitled”. Comment A simple description of your job. This is optional and can be left blank. Department The department you belong to. This is optional and can be left blank. Pool and Group The pool and group that the job belongs to. See the Job Scheduling documentation for more information on how these options affect job scheduling.

2.2. Job Submission 47 Deadline User Manual, Release 5.2.49424

Priority A job can have a numeric priority ranging from 0 to 100, where 0 is the lowest priority and 100 is the highest priority. See the Job Scheduling documentation for more information on how this option affects job scheduling. Task Timeout and Auto Task Timeout The number of minutes a slave has to render a task for this job before it requeues it. Specify 0 for no limit. If the Auto Task Timeout is properly configured in the Repository Options, then enabling the Auto Task Timeout option will allow a task timeout to be automatically calculated based on the render times of previous frames for the job. Concurrent Tasks and Limiting Tasks To A Slave’s Task Limit The number of tasks that can render concurrently on a single slave. This is useful if the rendering application only uses one to render and your slaves have multiple CPUs. Caution should be used when using this feature though if your renders require a large amount of RAM. If you limit the tasks to a slave’s task limit, then by default, the slave won’t dequeue more tasks then it has CPUs. This task limit can be overridden for individual slaves by an administrator. See the Slave Settings documentation for more information. Machine Limit and Machine Whitelists/Blacklists Use the Machine Limit to specify the maximum number of machines that can render your job at one time. Specify 0 for no limit. You can also force the job to render on specific machines by using a whitelist, or you can avoid specific machines by using a blacklist. See the Limit Documentation for more information. Limits The limits that your job must adhere to. See the Limit Documentation for more information. Dependencies Specify existing jobs that this job will be dependent on. This job will not start until the specified dependencies finish rendering. On Job Complete; If desired, you can automatically archive or delete the job when it completes. Submit Job As Suspended If enabled, the job will submit in the suspended state. This is useful if you don’t want the job to start rendering right away. Just resume it from the Monitor when you want it to render. Frame List The list of frames to render. See the Frame List Formatting Options below for valid frame lists. Frames Per Task; Also known as Chunk Size. This is the number of frames that will be rendered at a time for each job task. Increasing the Frames Per Task can help alleviate some of the inherited overhead that comes with network rendering, but if your frames take longer than a couple of minutes to render, it is recommended that you leave the Frames Per Task at 1. Submit Project/Scene File With Job If this option is enabled, the scene/project file you want to render will be submitted with the job, and then copied locally to the slave machine during rendering. The benefit to this is that you have a copy of the file in the state that it was in when it was submitted. However, if your scene/project file uses relative asset paths, enabling this option can cause the render to fail when the asset paths can’t be resolved. If this option is disabled, the file needs to be in a shared location so that the slave machines can find it when they go to render it directly. Leaving this option disabled is required if the file has references (footage, textures, caches, etc) that exist in a relative location. Note though that if you modify the original file, it will affect the render job.

48 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

2.2.3 Draft and Shotgun Submission Options

The majority of the submission scripts that ship with Deadline have options to connect to Shotgun, and/or use Draft to perform post-rendering compositing operations. Setting the Shotgun and Draft job options is essentially the same in every submission script, and more information can be found in their respective documentation: • Draft Documentation • Shotgun Documentation

2.2.4 Frame List Formatting Options

During job submission, you usually have the option to specify the frame list you want to render, which often involves manually typing the frame list into a text box. In this case, you can make use of Deadline’s frame list formatting options. Specifying Individual Frames or a Sequence You can specify a single frame just by typing in the frame number: 5

You can specify individual frames be separating each frame with a comma or a space: 5,10,15,20 5 10 15 20

You can specify a frame range by separating the start and end frame with a dash: 1-100

Specifying a Sequence with a Step Frame You can specify a step frame for a sequence using x, step, by, or every: 1-100x5 1-100step5 1-100by5 1-100every5

Each of these examples will render every 5th frame between 1 and 100 (1, 6, 11, 16, etc). Advanced Frame Lists Deadline never repeats individual frames when creating tasks for a job, which allows you to get creative with your frame lists without worrying if you’re specifying a frame more than once. To render frames 5, 18, and then from 28 to 100, you can specify one of the following: 5,18,28-100 5 18 28-100

To render every 5th frame between 1 to 100, then fill in the rest, you can specify one of the following: 1-100x5,1-100 1-100x5 1-100

To render every 10th frame between 1 to 100, then every 5th frame, then every 2nd frame, then fill in the rest, you can specify one of the following: 1-100x10,1-100x5,1-100x2,1-100 1-100x10 1-100x5 1-100x2 1-100

2.2. Job Submission 49 Deadline User Manual, Release 5.2.49424

2.2.5 Submitting Arbitrary Command Line Jobs To Deadline

To manually submit arbitrary command line jobs to Deadline, you can use the -SubmitCommandLineJob option with the Deadline Command application. The key parameters that you need to specify are: • -executable: The executable we wish to use. • -arguments: The arguments we wish to pass to the exectutable. In the arguments string, there are a few key words that will be replaced with the appropriate text when rendering the job: – will be replaced with the current start frame for each task. – will be replaced by the current end frame for each task. – will be replaced with the current start frame for each task, and will be padded with 0’s to match the length specified for #. For example, will ensure a start frame padding of 4. – will be replaced by the current end frame for each task, and will be padded with 0’s to match the length specified for #. For example, will ensure an end frame padding of 6. – will be replaced with an actual quote character (”). • -frames: The frames we wish to render. The following parameters can also be included, but are optional: • -startupdirectory: The directory that the command line will start up in. • -chunksize: The number of frames per task (defaults to 1). • -pool: The pool we wish to submit to (defaults to none). • -group: The group we wish to submit to (defaults to none). • -priority: The job’s priority (defaults to 50). • -name: The job’s name (defaults to “Untitled”). • -department: The job’s department (defaults to “”). • -initialstatus: Specify “Active” or “Suspended” (defaults to “Active”). • -prop: Specify additional job properties in the form KEY=VALUE, where KEY is any of the property names that can be specified in the Job Info File. For example, say we want to submit a job that uses 3dsmaxcmd.exe to render frames in the scene file “\\shared\path\scene.max”. We want to render frames 1 to 10, and we want an image resolution of 480x320. The command line to do this without using Deadline would look like: 3dsmaxcmd.exe -start:1 -end:10 -width:480 -height:320 "\\shared\path\scene.max"

For the Deadline job, we want a task chunk size of 2, we want to submit to the 3dsmax group, we want a priority of 50, and we want a machine limit of 5. Finally, we want to call the job “3dsmax command line job”. The command line to submit this job to Deadline would look like (note that we’ve split the -arguments line across two lines): DeadlineCommand.exe -SubmitCommandLineJob -executable "c:\Program Files\Autodesk\3dsmax8\3dsmaxcmd.exe" -arguments "-start: -end: -width:480 -height:320

50 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

\\shared\path\scene.max" -frames 1-10 -chunksize 2 -group 3dsmax -priority 50 -name "3dsmax command line job" -prop MachineLimit=5

2.2.6 Creating Submission Files And Submitting Them To Deadline

This is the method that our submission scripts use to submit jobs to Deadline. This method is far more flexible, but requires more work to setup the job. It also uses Deadline Command to submit the job. Before the job can be submitted though, a Job Info File must be created. Depending on the plug-in you are submitting the job to, a Plug-in Info File may also be required. Once these files are created, you can submit the job using the command line: DeadlineCommand.exe [Job Info File] [Plug-in Info File] [Scene File] ...

For all files being passed to the Deadline Command application, you should specify their complete path. If you have other files that you wish to include with the submission other than the scene file, you can specify them after the [Scene File] parameter. If a Plug-in Info File is not required by the plug-in you are submitting the job to, you can omit the [Plug-in Info File] parameter.

The Job Info File

The Job Info File is a plain text file that uses Key/Value pairs (key=value) to define all the generic job options that Deadline uses to render the job. A couple options are required, but most are optional. All jobs can use these options, regardless of the plug-in that they use. Some examples have been provided below. Required Options • Plugin= : Specifies the plugin to use. Must match an existing plugin in the repository. • Frames=<1,2,3-10,20> : Specifies the frame range of the render job. General Options (Optional) • Name= : Specifies the name of the job (default = Untitled). • UserName= : Specifies the job’s user (default = current user). • MachineName= : Specifies the machine the job was submitted from (default = current ma- chine). • Department= : Specifies the department that the job belongs to. This is simply a way to group jobs together, and does not affect rendering in any way (default = blank). • Comment= : Specifies a comment for the job (default = blank). • Group= : Specifies the group that job is being submitted to (default = none). • Pool= : Specifies the pool that job is being submitted to (default = none). • Priority=<0-100> : Specifies the priority of a job with 0 being the lowest and 100 being the highest (default = 50). • ChunkSize=<1 or greater> : Specifies how many frames to render per task (default = 1).

2.2. Job Submission 51 Deadline User Manual, Release 5.2.49424

• ForceReloadPlugin= : Specifies whether or not to reload the plugin between subsequent frames of a job (default = false). This deals with memory leaks or applications that do not unload all job aspects properly. • SynchronizeAllAuxiliaryFiles= : If enabled, all job files (as opposed to just the job info and plugin info files) will be synchronized by the Slave between tasks for this job (default = false). Note that this can add significant network overhead, and should only be used if you plan on manually editing any of the files that are being submitted with the job. • InitialStatus= : Specifies what status the job should be in immediately after submission (default = Active). • LimitGroups= : Specifies the limit groups that this job is a member of (default = blank). • MachineLimit=<0 or greater> : Specifies the maximum number of machines this job can be rendered on at the same time (default = 0, which means unlimited). • MachineLimitProgress=<0.1 or greater> : If set, the slave rendering the job will give up its current machine limit lock when the current task reaches the specified progress. If negative, this feature is disabled (default = -1.0). The usefulness of this feature is directly related to the progress reporting capabilities of the individual plugins. • Whitelist= : Specifies which slaves are on the job’s whitelist (default = blank). If both a whitelist and a blacklist are specified, only the whitelist is used. • Blacklist= : Specifies which slaves are on the job’s blacklist (default = blank). If both a whitelist and a blacklist are specified, only the whitelist is used. • DeleteOnComplete= : Specifies whether or not the job should be automatically deleted after it completes (default = false). • ArchiveOnComplete= : Specifies whether or not the job should be automatically archived after it completes (default = false). • OnJobComplete= : Specifies what should happen to a job after it completes (default = Nothing). • ConcurrentTasks=<1-16> : Specifies the maximum number of tasks that a slave can render at a time (default = 1). This is useful for script plugins that support multithreading. • LimitTasksToNumberOfCpus= : If ConcurrentTasks is greater than 1, setting this to true will ensure that a slave will not dequeue more tasks than it has processors (default = true). • Sequential= : Sequental rendering forces a slave to render the tasks of a job in order. If an earlier task is ever requeued, the slave won’t go back to that task until it has finished the remaining tasks in order (default = false). • Interruptible= : Specifies if tasks for a job can be interrupted by a higher priority job during rendering (default = false). • SuppressEvents= : If true, the job will not trigger any event plugins while in the queue (default = false). • NetworkRoot= : Specifies the repository that the job will be submitted to. This is re- quired if you are using more than one repository (default = current default repository for the machine from which submission is occurring). Failure Detection Options (Optional) • OverrideJobFailureDetection= : If true, the job will ignore the global Job Failure Detection settings and instead use its own (default = false).

52 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

• FailureDetectionJobErrors=<0 or greater> : If OverrideJobFailureDetection is true, this sets the number of errors before the job fails. If set to 0, job failure detection will be disabled. • OverrideTaskFailureDetection= : If true, the job will ignore the global Task Failure Detection settings and instead use its own (default = false). • FailureDetectionTaskErrors=<0 or greater> : If OverrideTaskFailureDetection is true, this sets the number of errors before a task for the job fails. If set to 0, task failure detection will be disabled. • IgnoreBadJobDetection : If true, slaves will never mark the job as bad for themselves. This means that they will continue to make attempts at jobs that often report errors until the job is complete, or until it fails (default = false). • SendJobErrorWarning= : If the job should send warning notifications when it reaches a certain number of errors (default = false). Timeout Options (Optional) • MinRenderTimeSeconds=<0 or greater> : Specifies the minimum time, in seconds, a slave should render a task for, otherwise an error will be reported (default = 0, which means no minimum). • MinRenderTimeMinutes=<0 or greater> : Specifies the minimum time, in minutes, a slave should render a task for, otherwise an error will be reported (default = 0, which means no minimum). • TaskTimeoutSeconds=<0 or greater> : Specifies the time, in seconds, a slave has to render a task before it times out (default = 0, which means unlimited). • TaskTimeoutMinutes=<0 or greater> : Specifies the time, in minutes, a slave has to render a task before it times out (default = 0, which means unlimited). • OnTaskTimeout= : Specifies what should occur if a task times out (default = Error). • EnableAutoTimeout= : If true, a slave will automatically figure out if it has been rendering too long based on some Repository Configuration settings and the render times of previously completed tasks (default = false). • EnableTimeoutsForScriptTasks= : If true, then the timeouts for this job will also affect its pre/post job scripts, if any are defined (default = false). Dependency Options (Optional) • JobDependencies= : Specifies what jobs must finish before this job will resume (default = blank). These dependency jobs must be identified using their unique job ID, which is outputted after the job is submitted, and can be found in the Monitor in the “Job ID” column. • JobDependencyPercentage=<-1, or 0 to 100> : If between 0 and 100, this job will resume when all of its job dependencies have completed the specified percentage number of tasks. If -1, this feature will be disabled (default = -1). • IsFrameDependent= : Specifies whether or not the job is frame dependent (default = false). • ResumeOnCompleteDependencies= : Specifies whether or not the dependent job should resume when its dependencies are complete (default = true). • ResumeOnDeletedDependencies= : Specifies whether or not the dependent job should resume when its dependencies have been deleted (default = false). • ResumeOnFailedDependencies= : Specifies whether or not the dependent job should resume when its dependencies have failed (default = false). Scheduling Options (Optional) • ScheduledType= : Specifies whether or not you want to schedule the job (default = None).

2.2. Job Submission 53 Deadline User Manual, Release 5.2.49424

• ScheduledStartDateTime=

: The date/time at which the job will run. The start date/time must match the specified format. Here’s an explanation: – dd: The day of the month. Single-digit days must have a leading zero. – MM: The numeric month. Single-digit months must have a leading zero. – yyyy: The year in four digits, including the century. – HH: The hour in a 24-hour clock. Single-digit hours must have a leading zero. – mm: The minute. Single-digit minutes must have a leading zero. • ScheduledDays= : If scheduling a Daily job, this is the day interval for when the job runs (default = 1). Output Options (Optional) • OutputFilename#=<fileName> : Specifies the output image filenames for each frame (default = blank). This allows for Deadline to display the “View Output Image” context menu option in the task list. The filename should have ‘#’ or ‘?’ in the location where the frame numbers should be. If the filename is a full path, then the OutputDirectory# option is not needed. This option is numbered, starting with 0, to handle multiple output file names per frame (as is the case with Digital Fusion flows). The maximum allowed in six. • OutputDirectory#= : Specifies the output image directory for the job (default = blank). This allows for Deadline to display the “Explore Output” context menu option in the job list. This option is numbered, starting with 0, to handle multiple output directories per frame. The maximum allowed in six. Notification Options (Optional) • NotificationTargets= : A list of users, separated by commas, who should be notified when the job is completed (default = blank). • ClearNotificationTargets= : If enabled, all of the job’s notification targets will be removed (default = false). • NotificationEmails= : A list of additional email addresses, separated by commas, to send job notifications to (default = blank). • OverrideNotificationMethod= : If the job user’s notification method should be ignored (default = false). • EmailNotification= : If overriding the job user’s notification method, whether to use email notifi- cation (default = false). • GrowlNotification= : If overriding the job user’s notification method, whether to use Growl notifi- cation (default = false). • NetsendNotification= : If overriding the job user’s notification method, whether to use netsend notification (default = false). • NotificationNote= : A note to append to the notification email sent out when the job is complete (default = blank). Separate multiple lines with [EOL], for example: This is a line[EOL]This is another line[EOL]This is the last line

Script Options (Optional) • PreJobScript= : Specifies a full path to a python script to execute when the job initially starts rendering (default = blank). • PostJobScript= : Specifies a full path to a python script to execute when the job completes (default = blank).

54 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

• PreTaskScript= : Specifies a full path to a python script to execute before each task starts rendering (default = blank). • PostTaskScript= : Specifies a full path to a python script to execute after each task completes (default = blank). Tile Job Options (Optional) • TileJob= : If this job is a tile job (default = false). • TileJobFrame= : The frame that the tile job is rendering (default = 0). • TileJobTilesInX= : The number of tiles in X for a tile job (default = 0). • TileJobTilesInY= : The number of tiles in Y for a tile job (default = 0). Extra Info Options (Optional) These are extra arbitrary properties that have corresponding columns in the Deadline Monitor that can be sorted on. There are a total of 10 Extra Info properties that can be specified. • ExtraInfo0= • ExtraInfo1= • ExtraInfo2= • ExtraInfo3= • ExtraInfo4= • ExtraInfo5= • ExtraInfo6= • ExtraInfo7= • ExtraInfo8= • ExtraInfo9= These are additional arbitrary properties. There is no limit on the number that are specified, but they do not have corresponding columns in the Deadline Monitor. • ExtraInfoKeyValue0= • ExtraInfoKeyValue1= • ExtraInfoKeyValue2= • ExtraInfoKeyValue3= • ... Job Info File Examples Plugin=3dsmax ForceReloadPlugin=false Frames=0-400 Priority=50 Pool=3dsmax Name=IslandWaveScene_lighted01 Comment=Testing OutputDirectory0=\\fileserver\Renders\OutputFolder\ OutputFilename0=islandWaveBreak_Std####.png

2.2. Job Submission 55 Deadline User Manual, Release 5.2.49424

Plugin=Lightwave Frames=1-10,21-30 ChunkSize=10 Priority=99 Pool=LightwavePool Group=NiceShot Name=Lightwave Test OutputFilename0=\\fileserver\Renders\OutputFolder\test####.tif DeleteOnComplete=true MachineLimit=5 SlaveTimeout=3600

Plugin=DFusion Frames=1-100 Priority=50 Group=DFusion Name=DFusion Dependency Test OutputFilename0=\\fileserver\Renders\OutputFolder\dfusion_test####.tif JobDependencies=t_050_o_2D2E1BF9,m_099_o_2BA5022A InitialStatus=Suspended LimitGroups=DFRNode ExtraInfo0=Regression Testing ExtraInfoKeyValue0=TestID=344 ExtraInfoKeyValue1=DeveloperID=12

The Plug-in Info File

The Plug-in Info File is a plain text file that uses Key/Value pairs (key=value) to define the plug-in specific options that are used by the individual plug-ins to render the job. Often, these options are used to build up the command line arguments that are to be passed on to the rendering application. The plug-ins read in the settings from the Plug-in Info File using the script functions GetPluginInfoEntry(...) and GetPluginInfoEntryWithDefault(...), which are discussed in more detail in the Plug-in Scripting documentation.

56 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

2.3 Job Monitoring

2.3.1 The Deadline Monitor

Once you have submitted your job to Deadline, you can use the Deadline Monitor to monitor and control your job. If you’re launching the Monitor for the first time on your machine, you will be prompted with a Login dialog. Simply choose your user name or create a new one before continuing.

2.3.2 Finding And Monitoring Your Jobs

The easiest way to find your most recent jobs is to enable Ego-Centric Sorting from the View menu. This keeps all of your jobs at the top of the job list, regardless of which column the job list is sorted on. Then sort on the Submit Date/Time column to show your jobs in the order they were submitted. If the current user isn’t you, you can log in as

2.3. Job Monitoring 57 Deadline User Manual, Release 5.2.49424 another user by selecting File -> Change User. Note that if your Administrator set up Deadline to lock the user to the system’s login account, you will have to logout of your system and log back in as the correct user. To update the progress of your job, simply click on it in the job list. If you want to update everything in the Monitor, simply click the Refresh button in the main toolbar. You can see the state that each of the job’s tasks are in by looking in the task list.

2.3.3 Filtering The Job List

Another useful way to find the jobs you are interested is to use the many filters in the job list toolbar. If this toolbar isn’t visible, you can show it by selecting View -> Toolbars -> Job Filter Toolbar. You can filter the list to only show the jobs that will notify you of their completion. You can also filter out jobs based on the job’s status, user, pool, group, or plug-in. Finally, you can use the search box above the job list to filter your results even further.

2.3.4 Controlling Your Jobs

If at some point you need to pause the job for whatever reason (perhaps to change some job properties), you can do so by right-clicking on the job and selecting Suspend Job. When you are ready to let the job continue, simply right-click on the job again and select Resume Job. If you would like to modify the properties of your job, you can do so by right-clicking on the job and selecting Modify Properties. Here you can change scheduling options such as priority and pool, as well as other general properties like the job name. If you wish to limit which render nodes your job runs on, as well as the number of nodes that can render it concurrently, you can do so under the Machine Limit tab. Depending on the application you’re rendering with, you may see an extra tab (with the name of the plug-in) that allows you to modify properties which are specific to that application. More information on job properties can be found in the Modifying Job Properties documentation.

58 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

2.3.5 Handling Job Errors

If your job starts producing errors, you’ll notice that your job will change from green to brown, then eventually to red (depending on the number of errors). To view the errors for the job, you can right-click on the job and select Job Reports -> View Error Reports. Often, the error reports will clearly show what the cause of the error is, allowing you can take the appropriate steps to resolve the problem. If you’re ever unsure of what an error means, feel free to email the error report to Deadline Support and we’ll try to help.

The rendering time wasted due to errors is shown in the top-right corner. You can also right-click on one or more errors to bring up a list of options: • Connect by VNC: VNC into the machine that reported the error. • Connect by Remote Desktop: remote desktop into the machine that reported the error. • Connect by Remote Administrator: use Radmin to remote into the machine that reported the error. • Send Net Message: Send a net message to the machine that reported the error. • Send Growl Notification: Send a Growl notification message to the machine that reported the error. • Blacklist/Un-Whitelist Slave: If the job has a blacklist, add the slave that reported the error to it. If the job has a whitelist, remove the slave from it. • Remote Control: Remotely control the slave/machine that reported the error. • Save Report: Save the selected error report. • Delete Report: Delete the selected error report (note that this option is only available if you are the job’s user, or if you are in super user mode). • Report To Sys Admin: Allows you to report the selected error reports to the System Administration email account that was specified in the Deadline Repository Options. • Report To Deadline Support: Allows you to report the selected error reports to the Deadline support team so we can look at it (you can provide additional comments that might help us diagnose the problem).

2.3. Job Monitoring 59 Deadline User Manual, Release 5.2.49424

2.3.6 Completed Jobs

When your job is complete, you can view the output images by right-clicking on the individual tasks in the task list and selecting the output filename. This will open the image in the application that is set to open that type of file by default. Note that this option isn’t always available for some applications. In most cases though, you can view the output image folder by right-clicking on the job and selecting Explore Output. You can also view the logs for the job by right-clicking on it and selecting Job Reports -> View Log Reports.

Finally, once you are happy with the results and no longer need the job, you can delete it by right-clicking on the job and selecting Delete Job.

2.3.7 Re-rendering Jobs

If you have a completed job that you need to re-render, you can do so by right-clicking on the job and selecting Requeue Job. If you only need to re-render a few bad frames, you can just requeue their corresponding tasks by right-clicking on one or more tasks in the task list selecting Requeue Tasks. In some cases, Deadline can try to detect bad frames for you. You can use this feature by right-clicking on the job and selecting Scan For Missing Output. The scan will check for missing frames or frames that don’t meet a size threshold. You will then have the option to requeue all the corresponding tasks automatically. Note that the Scan For Missing Output option isn’t available for all jobs.

2.4 Modifying Job Properties

2.4.1 Overview

Job properties can be modified from the Deadline Monitor after the job has been submitted. This guide covers the various properties that are available, which can be accessed from a job’s right-click menu.

60 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

2.4.2 Modify Properties and Machine Limit

Modify the standard properties of a job. The properties are split up into separate tabs: General, Advanced, Extra Info, Plug-in specific (if applicable), and Machine Limit.

General Properties

These are the most common job properties, and most of these were specified when the job was originally submitted.

The properties are as follows: • Job Name: The name of the job. • Comment: The comment for the job. • Department: The department the job was submitted from. • Pool: The pool that the job belongs to. • Group: The group that the job belongs to. • Priority: The priority of the job (0 = lowest, 100 = highest). • Job User: The user of the job. • Limit Groups: The limit groups that the job requires. • Min Render Time: If a task renders faster than this amount of time, it is requeued. • Max Render Time: The amount of time a slave has to render a single task before it timeouts and requeues the task. • On Task Timeout: You have the option to have the job report an error or notify you when a timeout is reached. • Enable Auto Task Timeout: If the job should automatically timeout based on parameters specified in the Repos- itory Options. • Enable Timeouts For Pre/Post Job Scripts: If checked, then the timeouts for this job will also affect its pre/post job scripts, if any are defined.

2.4. Modifying Job Properties 61 Deadline User Manual, Release 5.2.49424

Advanced Properties

These are the more advanced job properties, and in most cases, these settings can be left alone.

The properties are as follows: • Concurrent Tasks: The number of tasks a slave can dequeue at a time (1-16). Note that not all plug-ins support this feature, such as Digital Fusion. • Limit Tasks To Slave’s Task Limit: If checked, a slave will not dequeue more tasks than it is allowed to based on its settings. • On Job Complete: When a job completes, you can auto-archive or auto-delete it. You can also choose to do nothing when the job completes. • Job Is Interruptible: If enabled, tasks for this job can be interrupted during rendering by a job with a higher priority. • Reload Plugin Between Frames: If checked, the slave reloads all the plug-in files between tasks for the same job. • Enforce Sequential Rendering: Sequential rendering forces a slave to render the tasks of a job in order. If an earlier task is ever requeued, the slave won’t go back to that task until it has finished the remaining tasks in order. • Synchronize All Auxiliary Files: If checked, all job files (as opposed to just the job info and plugin info files) will be synchronized by the Slave between tasks for this job. This can add significant network overhead, and should only be used if you are manually editing any of the files that were submitted with the job. • Override Notification Method: If the job’s notification method should be overridden. If overriding the notifica- tion method, be sure to check off which method(s) to use. • Ignore Failed Job Detection: If checked, jobs that report more errors than what is allowed in the Failed Job Detection settings will continue to render without ever failing. • Ignore Failed Task Detection: If checked, tasks that report more errors than what is allowed in the Failed Task Detection settings will continue to render without ever failing.

62 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

• Send Warning For Job Errors: If checked, the job’s user will receive a warning email if the job has reported more errors than that specified in the Repository Options. • Pre Job Script: Specify the path to a python script to execute when the job initially starts rendering. • Post Job Script: Specify the path to a python script to execute when the job finishes rendering. • Pre Task Script: Specify the path to a python script to execute before each task starts rendering. • Post Task Script: Specify the path to a python script to execute after each task finishes rendering.

Extra Info Properties

When a job is submitted, it can have extra information embedded in it. For example, if a studio has an in-house pipeline tool, they may want to embed information in the job that will be used to update the pipeline tool when the job finishes rendering.

The Extra Info 0-9 properties can be renamed from the Jobs section of the Repository Options, and have corresponding columns in the Job list that can be sorted on. The additional key/value pairs in the list at the bottom do not have corresponding columns, and can be used to contain internal data that doesn’t need to be displayed in the job list.

Plugin Specific Properties

The Plug-in specific properties vary between the different plug-ins, and some plug-ins may not have a Plug-in specific properties tab at all. Note that when modifying properties for multiple jobs at the same time, the Plug-in specific tab will only be available if all selected jobs use the same plug-in.

2.4. Modifying Job Properties 63 Deadline User Manual, Release 5.2.49424

To get a description of specific plug-in properties, just hover your mouse cursor over them in the properties dialog and a tooltip will pop up with a description.

Machine Limit Options

A Machine Limit can be used to limit the number of slaves that can render one particular job. This is useful if you want to render a bunch of jobs simultaneously.

You can modify the following options for the machine limit: • Number Of Machines That Can Render This Job Concurrently: The number of slaves that can render this job at one time.

64 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

• Release Machine Limit Stub When Task Progress Reaches: If enabled, you can have a slave release the machine limit stub when the current task it’s rendering reaches the specified progress. Note that not all plug-ins report task progress, in which case the machine limit stub will not be released until the task finishes rendering. • Whitelisted/Blacklisted Slaves: If slaves are on a blacklist, they will never try to render this job. If slaves are on a whitelist, only those slaves will try to render this job.

2.4.3 Modify Dependencies

You can set which jobs that this job is dependent on. By default, the job will only resume when each of its dependencies have completed, but you can also have your job resume when the dependencies have failed, or have been deleted from the queue. Note that you can only set which jobs this job is dependent on, not which jobs are dependent on this job. You can also make the job frame dependent, which means that a frame from the job won’t begin rendering until the same frame from the other job(s) is complete. This is useful if you have a job that is dependent on the frames of another job, and you want the two jobs to render concurrently.

On Windows, as an alternative, you can drag & drop jobs onto other jobs to set dependencies, providing you have enabled the feature in your Monitor User Options. If you check the Overwrite check box in the confirmation dialog, the selected job(s) current dependency list will be cleared before adding the highlighted job to it.

2.4.4 Modify Frame Range

Modify the frame range and group size of a job. Note that modifying these settings will stop and requeue all tasks that are currently rendering.

2.4. Modifying Job Properties 65 Deadline User Manual, Release 5.2.49424

2.4.5 Modify Scheduling

This option allows you to schedule a job to run at a specific time once, or on daily intervals. This option is available if you are the job’s user, or if you are in super user mode.

2.4.6 View Bad Slaves List

View the slaves that have been marked bad for this job. You can remove slaves from the list or make the job ignore bad slave detection entirely. You can also automatically add these bad slaves to the job’s blacklist, or remove them from its whitelist. See the Bad Slave Detection section of the Failure Detection documentation for more information.

2.5 Monitor Customization

2.5.1 Overview

There are a few ways you can customize the look and feel of the Monitor on your machine. All panels within the Monitor can be resized, toolbars and columns can be toggled from the View menu, and even the Monitor colors can be customized. This guide covers the different ways you can customize your Monitor to suit your needs.

2.5.2 Monitor Layout Presets

You can use the Layout option in the Main toolbar to save the current Monitor layout or switch to existing ones. You can toggle the visibility of the Main toolbar from the View menu.

66 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

Settings that are saved with the layout include: • The size, location, and visibility of all panels. The visibility of the panels can be toggled from the View menu. • The width and visibility of all column headers. The column headers can be configured from the View menu. On Windows, they can also be customized by right-clicking on the column headers in each list. • The Job and Slave list filters. You can toggle the visibility of these toolbars from the View menu. • The Monitor options that are documented below.

2.5.3 Monitor Options

The Monitor options can be accessed from the Monitor by selecting Tools -> Options.

The Monitor options are as follows: • Image Viewer (for viewing images from the tasks list): – Custom Image Viewer Executables: You can enter up to three viewers to use to view output images from the tasks list. – Preferred Image Viewer: The viewer that will be used by default. This can either be the output image’s default viewer, or one of the custom viewers. • Remote Monitoring:

2.5. Monitor Customization 67 Deadline User Manual, Release 5.2.49424

– Custom Radmin Viewer Executable: The path to the Radmin viewer executable you want to use. If left blank, the executable specified in the repository options will be used. – Custom VNC Viewer Arguments: Arguments to be used when running the custom VNC viewer. See the Remoting section of the Repository Options documentation for more information. – Custom VNC Viewer Executable: The path to the VNC viewer executable you want to use. If left blank, the executable specified in the repository options will be used. – Default Remote Connection App: The default remote connection application to use when double-clicking in the slave list, task list, etc, providing that it is enabled in the Repository Options. • Start Up: – Completed Job Warning Days: A warning will be shown at startup when you have completed jobs older than this many days. Specify 0 to disable this feature. – Start In Super User Mode: If true, the Monitor will start-up in Super User mode. If a password is required, you will be prompted for the password. • User Interface: – Allow Drag & Drop Job Dependencies: If set to True, you can set job dependencies by using drag & drop in the job list. – Auto Refresh Period: The amount of time that will elapse between automatic Monitor refreshes. – Histogram Type: The type of histogram to show for the Task render time, CPU usage, and memory usage statistics. – Line Numbers In Report Viewers: If enabled, line numbers will be shown in the error, log, and requeue report viewers. Note though that large reports can impact the scrolling of the report viewers. – Maintain List Selection After Refresh: If True, the current selection in the lists in the Monitor (Jobs, Slaves, etc) will be maintained after refreshes. – Slave Ping Timeout: Set the timeout (in milliseconds) when pinging slave machines during a refresh. – Task Double-Click Action:

* Automatic: Double clicking a task will VNC into the slave if the task is rendering. If the task is complete, the image for that task will be displayed if it exists.

* RemoteConnectSlave: Double clicking a task will remote into the slave that is rendering or has ren- dered the task.

* ViewImage: Double clicking a task will display the image for that task if it exists. – Transparent Filter Windows: If enabled, the filter window in the Monitor will be transparent. There are known issues with using the feature over a VNC connection. – Use 24 Hour Clock: Whether or not the times in the jobs list will be displayed using a 24 hour clock. – Use Time Format 00h00m00s: If true, times will be displayed in the Monitor as “00h 00m 00s”, otherwise they will be displayed as “00:00:00”.

2.5.4 Themes

Deadline allows you to customize the color scheme of the Monitor and the other Deadline applications running on your machine. So if you don’t like the default color scheme, you can switch to one of the existing themes, or you can create your own! The theme editing window can be opened from the Monitor by selecting Tools -> Edit Themes.

68 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

Changing Themes

In addition to the DEFAULT theme, Deadline ships with other themes, which can be selected in the Current Theme drop down. An example of what the selected theme will look like is shown in the panel on the right. Once you are satisfied with the selected them, click OK.

After clicking OK, you will probably notice that only some areas of the Monitor have refreshed properly. To quickly refresh everything, simply minimize and maximize the Monitor. You may also notice that the text in the lists haven’t refreshed either. To refresh the text, select File -> Change Repository, and then simply press OK on the window that pops up. This will reconnect you to your current repository, and refresh everything correctly.

2.5. Monitor Customization 69 Deadline User Manual, Release 5.2.49424

In order to refresh the other Deadline applications, they will need to be restarted.

Editing Themes

If none of the included themes work for you, you can tweak them or create your own. To start, you should probably create an entry for your new theme. To do this, click the Save As button and save your theme to a new file. For this example, we’ll use the name MyTheme.

Now that we’ve saved MyTheme, we can select it in the Current Theme drop down.

70 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

Now in the properties box, you can start editing your theme. To see a description of each property, just hover the mouse cursor of the property name. As you edit your theme, you can look at the panel on the right to see an example of how your theme will look.

Once you are satisfied with your theme, click the Save button to save it. If you don’t save your theme, your theme settings will only persist for this session. After saving your theme, click OK.

2.5. Monitor Customization 71 Deadline User Manual, Release 5.2.49424

After clicking OK, you will probably notice that only some areas of the Monitor have refreshed properly. To quickly refresh everything, simply minimize and maximize the Monitor. You may also notice that the text in the lists haven’t refreshed either. To refresh the text, select File -> Change Repository, and then simply press OK on the window that pops up. This will reconnect you to your current repository, and refresh everything correctly. In order to refresh the other Deadline applications, they will need to be restarted.

2.6 Deadline FAQ

2.6.1 General

Which operating systems does Deadline support? The Deadline Client software (which includes the tools for submitting, monitoring, and rendering jobs) is supported on Windows, Linux, and Max OSX. The Deadline Repository can be installed on any type of network share, regardless of the operating system. See the System Requirements for more information. Does Deadline require any additional software to be installed on my machines? This depends on the operating system. • On Windows, Deadline requires the .NET Framework to be installed. • On Linux, Deadline requires the Mono Framework to be installed. • On Mac OSX, Deadline requires X11 and the Mono Framework to be installed. See the System Requirements for more information, including versions of .NET and Mono that Deadline requires. What software does Deadline support? Deadline supports a wide range of 2D and 3D rendering applications. See the complete listing of Sup- ported Software for more information.

72 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

Can we create our own plug-ins for Deadline? Yes, and the Deadline team encourages you to do so. You can create your own plug-ins using the Plug-in Scripting Guide. All the plug-ins that are shipped with Deadline use the same plug-in API, so feel free to modify them to suit your needs. What is the Deadline Repository? The Deadline Repository is a collection of files and folders that stores all the Deadline information, including jobs and slave settings. It is NOT a program. See the How It Works documentation for more information. Which Remoting Software is Supported By Deadline? Deadline integrates with many remoting applications, such as ARD, RDC, Radmin, and VNC. This allows you to connect to remote machines easily through the Monitor application. See the Remote Access documentation for more information.

2.6.2 Pricing

How much does Deadline cost? If you are running two slaves or less, Deadline will run in LICENSE-FREE mode. If you need to run more than two slaves, pricing information can be found in the Sales section of the website. Note that 1 year of maintenance is included in the cost. Note that if you’re using LICENSE-FREE mode, and you decide to purchase licenses for more machines, you must purchase a license for all the machines, including the machines you were originally using in LICENSE-FREE mode. Is annual renewal of the Maintenance Subscription required? While not mandatory, the Deadline Sales team encourages you to keep your maintenance subscription up to date. While on maintenance, you are entitled to all Deadline upgrades at no additional cost. If you no longer have an active maintenance subscription and you would like to upgrade to a new version of Deadline, there is an Upgrade option you can take advantage of. See the Sales section of the website for more information.

2.6.3 Licensing

How is Deadline licensed? Deadline uses the FLEXnet license server system to distribute floating licenses for the Deadline Slave applications. Only the Deadline Slave applications require a license, so you can submit from and monitor jobs on as many machines as you like. How does licensing work if I’m running multiple slaves on the same machine? Each slave instance requires a license. So if you are running 2 slaves on the same machine, you will be using 2 licenses. What is LICENSE-FREE mode? LICENSE-FREE mode allows you to run up to two Deadline Slaves without requiring a license, and is intended for anyone that has one or two extra machines that they would like to utilize for rendering. The only limitation in LICENSE-FREE mode is the limit on the number of slaves in your repository. Other than that, Deadline is fully functional. Does the FLEXlm license server need to run on the same machine that the Deadline Repository is installed on? No. While the FLEXnet license server application is installed with the Repository, you can copy it to any machine on your network and run it from there.

2.6. Deadline FAQ 73 Deadline User Manual, Release 5.2.49424

What is the format I should use to specify my license server when configuring the slaves? Whenever you are prompted to specify your license server, you should use the format @SERVER, where SERVER is the host name or IP address of your license server machine. If you have configured your license server to use a specific port, you need to include the port as well using the format PORT@SERVER. For example: 27009@MyServer Don’t forget the ‘@’ symbol! How do I get my host name, IP address, and MAC address for the license file? See the Licensing documentation for steps to retrieve this information for all three operating systems. What if the host name or IP address of my license server machine changes? The license file’s encrypted key is only based on the MAC address, so if your host name or IP address changes, you can modify your license file to make the change. The process to do this is explained in the Licensing documentation. What if the MAC address of my license server changes? If the MAC address changes because you swapped Ethernet cards or you are moving the license server to a different machine, you will need to send your new license server details to Deadline Sales so that a new license file can be generated (there may be a cost associated with this).

2.6.4 Installation and Updating

How many machines do I install the Deadline Repository on? Just one, preferably a server. Is it possible to install the repository share on a NAS drive? Yes. See the Deadline Repository Installation section of the manual for more details on how to do this. Do I have to install the Deadline Client on the Repository machine? This is only necessary if you plan to run Pulse on the Repository machine, or if you wish for the Repository machine to participate in rendering or job submission. Are there any known issues with running the Deadline Client applications on the Repository machine? Permission problems can occur on Linux and Mac OSX if the Client applications are connecting to the repository via a local path. To avoid these problems, you should mount the network path on the Repository machine and have the Client applications use that instead. Do I have to uninstall the Deadline Client or Repository to upgrade the software? This depends on if you’re doing a major or minor upgrade. See the Upgrading documentation for more information. When installing or upgrading the Deadline Repository, do I have to run the installer on the Repository machine itself? While it’s recommended that you run the installer from the Repository machine, it is possible to run the installer from a remote machine providing that the destination path is network accessible. In the case of installing to a NAS drive, the latter is your only option.

2.6.5 Submission

In previous version of Deadline, the scene file would get submitted with the job, but in Deadline 5, this is no longer the case. How do I revert back to the old behavior?

74 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

In Deadline 5, we decided to change the default behavior for all of our submitters to not submit the scene file with the job. The only exception was the 3dsmax submitter, since we wanted Deadline to behave like backburner out of the box. However, there has always been an option in each submitter to submit the scene file with the job. So to revert back to the old behavior, just enable this option before submitting the job.

2.6.6 Rendering

Can Deadline split up a sequence of frames across multiple machines? Yes. In most cases, individual frames are independent of each other. So multiple machines can render frames concur- rently, which reduces the overall render time of the sequence. Can Deadline split up a single frame across multiple machines? In other words, can Deadline do distributed rendering? While Deadline doesn’t directly support distributed rendering of a single frame, it supports a feature called Tile Ren- dering, which splits up the frame into regions and sends them off to multiple machines. Tile Rendering is currently supported by the 3ds Max, Maya, Modo, Rendition, and Softimage plug-ins, and automated image re-assembly is only supported for certain formats. Other formats will have to be re-assembled manually using an application like Photoshop. Deadline keeps rendering the same tasks over and over and never moves on. What’s wrong? When Deadline repeats a task, it means that the task reported an error. When an error is reported, the task is requeued so that it can be attempted again. You can view the errors for a job from the Deadline Monitor by right-clicking on the job in the job list and selecting Job Reports -> View Error Reports. You can configure Deadline to limit the number of attempts it makes on a task before moving on. This is helpful because it prevents a bad job from affecting the rest of the queue. See the Jobs: Failure Detection section of the Repository Options documentation for more information.

2.6.7 Troubleshooting

On Mac OSX, I have Mono installed, but the Deadline applications don’t run. Check if you have X11 installed. If you don’t have X11 installed, you should be able to grab it from your Mac install CD. On Mac OSX, the Deadline applications are no longer connecting to the Repository, and are instead complaining that the ‘bin’ folder cannot be found. In versions of Deadline prior to 5.0, a ghost repository folder is created in the Volumes folder when it becomes disconnected. This would result in an a ‘-1’ being appended to the actual repository folder the next time you connect to it. For example, instead of being mounted to /Volumes/DeadlineRepository, it will be mounted to /Volumes/DeadlineRepository-1. This bug was fixed in Deadline 5.0. When this problem occurs, you need to unmount the repository, get rid of the ghost folder that was created in /Volumes and then remount it. Volumes can be found in Finder by selecting Go -> Go To Folder (shift, apple, g) and typing in /Volumes. You can do this in terminal as well. On Windows, all of the Deadline applications crash, giving me a generic error message and the option to debug. What can I do to fix this? This problem is often caused by a corrupt .NET Framework Run-Time installation. Reinstalling .NET will fix the problem in most cases. In versions of Deadline prior to 3.0, this problem could be due to a missing Tahoma font (regular, not bold). Simply installing this font should fix the problem. Note that this problem doesn’t seem to occur if both Tahoma regular and bold are missing, just when Tahoma regular is missing.

2.6. Deadline FAQ 75 Deadline User Manual, Release 5.2.49424

After changing screen resolution, or moving from a dual monitor to single monitor display, the Deadline appli- cations appear offscreen. In the local Deadline settings folder, open up the corresponding options xml file (monitorOptions.xml, slaveOp- tions.xml, etc) in a text editor and change the MainWindowLocation setting to (0,0), like so: 0 0 The Deadline seettings folder can be found in the following locations: • Windows: In the local user profile folder (ie: C:\Documents and Settings\[user]\Local Settings\Application Data\Thinkbox\Deadline\settings). • Linux: In the local user home folder (ie: ~/Deadline/settings). • Mac OSX: In the local user home folder (ie: /Users/[user]/Deadline/settings)

2.6.8 Deadline Application FAQs

• Launcher • Monitor • Job Monitor • Slave • Pulse • Command • Mobile

2.6.9 Deadline Plug-in FAQs

• 3ds Command (for 3ds VIZ and 3ds Max) • 3ds Max • After Effects • Anime Studio • Arnold Standalone • Blender • Cinema 4D • Cleaner XL • Combustion • Command Script • Composite/Toxik • DJV • Draft

76 Chapter 2. Getting Started Deadline User Manual, Release 5.2.49424

• FFmpeg • Frame Fixer • fryrender • Fusion • Gelato • Generation • Houdini • Indigo • Lightwave • LuxRender • Mantra Standalone • Maxwell • Maya • Mental Ray Standalone • Messiah • MetaFuze • MetaRender • modo • Naiad • Nuke • Particle Illusion • POV-Ray • PRMan (Renderman Pro Server) • Python/IronPython • Quicktime Generation • RealFlow • REDLine • Renderman (RIB) • Rendition • Rhino • RVIO • Sequence Publisher • Shake • Softimage/XSI • Terragen • Tile Assembler

2.6. Deadline FAQ 77 Deadline User Manual, Release 5.2.49424

• VNS and WCS • VRay Standalone • Vrimg2Exr • Vue • xNormal

78 Chapter 2. Getting Started CHAPTER THREE

CLIENT APPLICATIONS

3.1 Deadline Launcher

3.1.1 Overview

The Deadline Launcher’s main use is to provide a means of remote communication between the Slave/Pulse and the Monitor/Configuration applications, and therefore should always be left running on your Deadline Client machines. On Windows, the icon will be displayed in your system tray, unless you are running the Launcher as a service. You can right-click on the icon to access the Launcher menu, or double-click it to launch the Deadline Monitor. On Linux and Mac OSX, the Launcher runs as a normal application.

On Linux, the icon may be visible depending on which distribution of Linux you are running, so if you want to hide the Launcher application in the future, just select Options and disable the Launch Launcher GUI At Startup option. If you want to re-enable this option, open your deadline.ini file and specify this: LaunchLauncherGuiOnStartup=True

The deadline.ini file can be found in the following locations: • Windows: In the local user profile folder (ie: C:\Documents and Settings\[user]\Local Settings\Application Data\Thinkbox\Deadline). • Linux: In the local user home folder (ie: ~/Deadline). • Mac OSX: In the local user home folder (ie: /Users/[user]/Deadline)

3.1.2 Running The Launcher

To start the Launcher: • On Windows, you can start the Launcher from the Start Menu, or from a command prompt. • On Linux, you can start the Launcher from a terminal window.

79 Deadline User Manual, Release 5.2.49424

• On Mac OSX, you can start the Launcher by double-clicking the Launcher application in Finder, orfrom a terminal window. Command line info: • When running the Launcher from a command prompt or terminal window, this is the command to use: deadlinelauncher

• To run the Launcher without a system tray icon or user interface, you can specify the -nogui command line option. If the Slave or Pulse is started through the Launcher while it is in this mode, they will also run with- out a user interface. This is useful when running Deadline on a Linux machine that doesn’t have a Desktop environment. deadlinelauncher-nogui

• To shutdown the Launcher if it’s already running, you can run the following: deadlinelauncher-shutdown

3.1.3 Running The Launcher As A Service

On Windows, you can choose to install the Launcher as a service during installation. If you are doing a silent installa- tion, you can run the following to install the service: DeadlineClient.exe /installservice Yes /serviceaccount "USER" /servicepassword "PASSWORD" /autostartslave Yes

You can also manually install/uninstall the launcher service using Deadline Command with these options: InstallLauncherService Installs the Deadline Launcher Service, and optionally starts it. [true/false] Whether or not to start the Launcher Service after it has been installed (optional)

InstallLauncherServiceLogOn Installs the Deadline Launcher Service with the given account, and optionally starts it. [User Name] The account user name [Password] The account password [true/false] Whether or not to start the Launcher Service after it has been installed (optional)

UninstallLauncherService Stops and uninstalls the Deadline Launcher Service.

StartLauncherService Starts the Deadline Launcher Service if it is running.

StopLauncherService Stops the Deadline Launcher Service if it is running.

Here is an example command line to install the service: deadlinecommand.exe -InstallLauncherServiceLogOn "USER" "PASSWORD"

Note that using the installer or the command line to install the service requires administrative privileges.

80 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

When running as a service on Windows, the system tray icon will not be displayed. In addition, the Slave and Pulse applications will run in the background when launched through the Launcher. Finally, the Launcher can still update itself, but only when launching the Slave and Pulse applications (launching the Monitor, for example, will not invoke an upgrade). On Linux or Mac OSX, you can configure your machine to start the Launcher on startup. In will run in the background, but will function as if you started the Launcher from a terminal. To run the Launcher without a user interface, simply pass the -nogui command line option to it: deadlinelauncher-nogui

Permissions and Drive Mapping Considerations on Windows

Running the Launcher as a service will cause all applications started by the Launcher to also run in a service context. Since services run in a different space and user profile than the one currently logged in, certain considerations need to be made. First, the default user for a service has no access to network resources, so while Launcher will start easily, neither Slave nor Pulse will be able to access the Repository. The Slave in particular will close itself when it discovers it has no access to critical files. To use Slave or Pulse, you must configure the service to run as a user with network privileges. Typical desktop users have this permission, but check with your system administrator to find which account is best for this application. Another issue presented by the service context is that there is no access to the default set of mapped drives. Appli- cations will either need to either map drives for themselves, or make use of UNC paths. While Deadline supports mapped drives, the SMB protocol does not allow sharing a resource between two users on the same machine. This means that mapping of drives or accessing a resource with different credentials may fail when running as a service on a machine which already requires access to the Repository.

3.1.4 Automatic Updates

If you have enabled Automatic Updates under the Client Setup section of the Repository Options, whenever you launch a Deadline application (Monitor, Slave, etc) using the Deadline Launcher, it will check the Deadline Repository for updates and upgrade itself automatically if necessary before starting the selected application. Note that the update will only trigger when launching applications through the Launcher.

3.1.5 Remote Administration

If you have enabled Remote Administration under the Client Setup section of the Repository Options, you will be able to control the Deadline applications remotely, and remotely execute arbitrary commands. Note that it may be a potential security risk to leave it running if you are connected to the internet and are not behind a firewall. In this case, you should leave Remote Administration disabled.

3.1.6 Launcher Menu Options

File Menu

Change Repository Change the repository that the client connects to. Change User

3.1. Deadline Launcher 81 Deadline User Manual, Release 5.2.49424

Change the current Deadline user on the client. Change License Server Change the license server that the Slave connects to. Exit Closes the Deadline Launcher task bar icon. This will not close either the Deadline Slave or Deadline Monitor. For ease of remote administration, it is recommended that Deadline Launcher be left running.

Launch Menu

Launch Monitor Launches the Deadline Monitor application. If the Repository has been upgraded recently, and Automatic Updates is enabled, this will automatically upgrade the client machine. Launch Job Monitor Launches the Deadline Job Monitor application. If the Repository has been upgraded recently, and Automatic Updates is enabled, this will automatically upgrade the client machine. Launch Slave(s) Launches the Deadline Slave application. If this machine has been configured to run more than one Slave instance, this will launch all of them. If the Repository has been upgraded recently, and Automatic Updates is enabled, this will automatically upgrade the client machine. Launch Slave By Name Launch a specific Slave instance, or add/remove Slave instances from this machine. Note that new Slave instances must have names that only contain alphanumeric characters, underscores, or hyphens. See the documentation for Multiple Slaves On One Machine for more information. Scripts Allows you to run general scripts that you can create. Note that these are the same scripts that you can access from the Scripts menu in the Monitor. Check out the Monitor Scripting documentation for more information. Submit Allows you to submit jobs to Deadline for different rendering plug-ins. Note that these are the same submission scripts that you can access from the Submit menu in the Monitor. More information regarding the Monitor submission scripts for each plug-in can be found in the Deadline Plug-Ins section of the documentation. You can also add your own submission dialogs to the submission menu. Check out the Monitor Scripting documentation for more information.

Options Menu

Launch Slave at Startup If enabled, the Slave will launch when the Launcher starts up. Launch Launcher at Startup (Windows Only) If enabled, the Launcher will launch when Windows starts up. Toggling this option modifies the necessary registry entry for Windows startup applications. Launch Launcher GUI At Startup (Linux and Mac OSX Only) If disabled, the Launcher user interface will be hidden. If you want to re-enable this option, open your deadline.ini file and specify this:

82 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

LaunchLauncherGuiOnStartup=True

The deadline.ini file can be found in the following locations: • Windows: In the local user profile folder (ie: C:\Documents and Settings\[user]\Local Settings\Application Data\Thinkbox\Deadline). • Linux: In the local user home folder (ie: ~/Deadline). • Mac OSX: In the local user home folder (ie: /Users/[user]/Deadline)

3.1.7 FAQ

Why should the Launcher application be left running on the client machines? Its main purpose is to provide a means of remote communication between the Slave and the Monitor / Configuration applications. If it’s not running, the Slave will have to be stopped and started manually. In addition, whenever you launch the Monitor or Slave using the Deadline Launcher, it will check the Deadline Repository for updates and upgrade itself automatically if necessary before starting the selected application. If the Launcher is not running, updates will not be detected. Can I run the Launcher without a user interface? Yes, you can do this by passing the -nogui command line argument to the Launcher application: deadlinelauncher-nogui

3.2 Deadline Monitor

3.2.1 Overview

The Deadline Monitor application offers detailed information and control options for each job and slave in your Dead- line Repository. It provides normal users a means of monitoring and controlling their jobs, and it gives administrators options for configuring and controlling the entire render farm

3.2. Deadline Monitor 83 Deadline User Manual, Release 5.2.49424

The Monitor contains four main panels. The Job Panel shows all the jobs that are currently in the queue and the Task Panel shows all tasks and additional information for the selected job. The Slave/Pulse panel provides information about all the machines in the render farm, and the Limit Panel shows the available Limits and their usage. You can customize the look and feel of the Monitor by referring to the Monitor Customization documentation. The Monitor allows you to access several options, which are split into general and administrative options. Administra- tive options require the user to be in Super User mode, which is done by selecting Tools -> Super User Mode. Super User mode can be password protected simply by specifying a password in the User Security section of the Reposi- tory Options. It is also possible to remote into slave machines directly from the Monitor using VNC, RDC, ARd, or Radmin. More details can be found in the Remote Access documentation.

3.2.2 Running The Monitor

To start the Monitor: • On Windows, you can start the Monitor from the Start Menu, from the Deadline Launcher, or from a command prompt. • On Linux, you can start the Monitor from the Deadline Launcher or from a terminal window. • On Mac OSX, you can start the Monitor by double-clicking the Monitor application in Finder, from the Deadline Launcher, or from a terminal window. Command line info: • When running the Monitor from a command prompt or terminal window, this is the command to use:

84 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

deadlinelauncher-monitor

• To start the Monitor without a splash screen, you can run the following: deadlinemonitor-nosplash

• To allow for more than one Monitor to run at a time, you can run the following: deadlinemonitor-multi

• To shutdown the Monitor if it’s already running, you can run the following: deadlinemonitor-shutdown

If you’re launching the Monitor for the first time on your machine, you will be prompted with a Login dialog. Simply choose your user name or create a new one before continuing.

3.2.3 Job Panel

The job panel contains a list that shows all the jobs that have been submitted to the Deadline Repository. It also displays useful information about each job such as it’s name, user, status, error count, plug-in, etc. You can customize the columns in the job list from the View menu, and you can use the Job Filter toolbar to filter out jobs based on certain properties. Finally, you can use the search box to find specific jobs in the remaining jobs that are listed.

Jobs can be in one of many states, which are explained in detail in the How Deadline Works documentation. As the jobs enter different states, their color changes. When jobs are active, they first appear as green in the list. A job will

3.2. Deadline Monitor 85 Deadline User Manual, Release 5.2.49424 remain green as it continues to render, but if it starts to accumulate errors, it will start to turn brown and eventually red. This allows you to see at a glance which jobs are having problems. For more information on job monitoring, see the Job Monitoring documentation. You can refresh a job in the list by clicking or double-clicking on it. You can also access many options for a job, which are listed below, by right-clicking on it. Note that the availability of these options can vary depending on the context in which they are used.

Job Right-Click Options

Refresh Job Refreshes the selected job. Refresh All Jobs Refreshes all the jobs in the Monitor, and loads any new jobs that have been submitted since the last Monitor refresh. Load New Jobs Loads new jobs that have been submitted since the last Monitor refresh, without refreshing the jobs that are already displayed. Resume Failed Job Resumes a job that is in the failed state. When you resume the job, you have the option to ignore Failed Job Detection or Failed Task Detection in the future. Note that this option is only visible when the jobs selected are in the failed state. Release Pending Job Releases a pending job, and removes all dependency and scheduling settings. Make All Tasks Pending For frame dependent jobs, moves all non-pending tasks to the pending state. Resume Job Resumes a job that is in the suspended state. Suspend Job Suspends a job that is in the queued or active state. If you suspend a job that is in the active state, any tasks that are currently rendering will be requeued. Requeue Job Requeues all the tasks for a job that is in the queued, active, suspended, or completed state. Delete Job Deletes a job. The job can be in any state. Archive Job Archives a job that is suspended, completed, or failed. Un-Archive Job Un-archives an archived job. Resubmit Job Allows you to resubmit an existing job with a new frame range and group size. If you want to tweak some settings before the job renders, you can enable the option to suspend the job on submission.

86 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

Explore Output View the directory where a job’s output is sent. If a job has multiple output directories, they will be listed in a separate submenu. This option to view the output directory is available if the job’s output directory was specified by the script that submitted the job. Copy Output Path Copies a job’s output directory to the clipboard. If a job has multiple output directories, they will be listed in a separate sub-menu. This option to view the output directory is available if the job’s output directory was specified by the script that submitted the job. Scan For Missing Output Scans a job’s output directory for any tasks that have missing output, or output with a size less than or equal to the size specified. If any are found, you are given the option to requeue those tasks (simply place a check mark beside the tasks to requeue). This option is available if Deadline is aware of a job’s output filename, which is specified by the script that submitted the job.

Add To Job Monitor Adds the selected job to the Job Monitor application. If the Job Monitor isn’t already running, it will be launched with the selected job already added. Retrieve Data File Save the scene file that was submitted with a job to another location. This option is available if a scene file was submitted with a job as an auxiliary file. Explore Repository Directory Browse a job’s directory in the Repository. Notify Me When Complete If you select this option, you will be notified when the selected job completes. Modify Notification Users Modify which users will receive a notification when this job completes. Modify Notification Note Add a note which is appended to the notification that is sent to the user(s) when this job finishes. Email User Send a direct email to a job’s user using your default mail application.

3.2. Deadline Monitor 87 Deadline User Manual, Release 5.2.49424

Net Send User Send a message to a job’s user. The user must have the Deadline Launcher running on their machine. Growl Notify User Send a Growl notification to a job’s user. The user must have Growl installed on their machine. Modify Properties / Machine Limit Modify the properties or the machine limit of a job. See the Modifying Job Properties documentation for more information. Modify Dependencies You can set which jobs that this job is dependent on. See the Modifying Job Properties documentation for more information. Modify Frame Range Allows you to modify the frame range and group size of a job. See the Modifying Job Properties documentation for more information. Modify Scheduling This option allows you to schedule a job to run at a specific time once, or on daily intervals. See the Modifying Job Properties documentation for more information. View Dependencies Allows you to view the dependencies of a job. This option is available if the job is dependent on one or more jobs. View Bad Slaves List Allows you to view the slaves that have been marked bad for this job. See the Modifying Job Properties documentation for more information. Scripts Launch job scripts from here. You can add your own custom python job scripts to the Scripts menu. See the Monitor Scripting documentation for more details. View History View the entire history of a job. This includes any modifications to the job’s properties, if and when it was ever suspended, etc. View Errors View the errors for a job. See the Handling Job Errors section of the Job Monitoring documentation for more infor- mation. View Logs View the task logs for a job. All logs for successful, failed, and requeued tasks can be viewed here. View Requeues View the task requeues for a job. Selecting a requeue report will show why the task was requeued. The rendering time wasted due to requeue is shown in the top-right corner.

3.2.4 Task Panel

The task panel shows all the tasks for the job that is currently selected. It displays useful information about each task such as its frame list, status, and error count, and you can customize the columns in the task list from the View menu.

88 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

You can also see additional information for the selected job, as well as a graph of the task render times, by clicking on the appropriate tabs.

There is also a Task Statistics panel that you can toggle on and off from the View -> Layout menu. This panel will display histograms showing how the CPU and memory usage of the selected task changed during the course of the render.

You can remote into the machine that is currently rendering a task by double-clicking on it. If the task has finished, you can open its output by also double-clicking on it. Finally, you can access many options for a task, which are listed below, by right-clicking on it. Note that the availability of these options can vary depending on the context in which they are used.

3.2. Deadline Monitor 89 Deadline User Manual, Release 5.2.49424

Task Right-Click Options

Refresh Job Refresh the job that is currently selected in the job list. Connect by VNC/ARD/Remote Desktop/Radmin Connect to the machine that rendered or is rendering the task. These options are only available if their corresponding settings in the Repository Options allow for remote connections. Send Net Message/Growl Notification Send a net message or Growl notification to the machine that rendered or is rendering the task. [output file name] - Default Viewer View the output for this task. If the task contains multiple frames, an image viewer dialog will appear, allowing you to choose which output to view. This option is available if Deadline is aware of a job’s output filename, which is specified by the script that submitted the job. Copy Render Path - [output file path] Copy the output file path for this task to the clipboard. This option is available if Deadline is aware of a job’s output filename, which is specified by the script that submitted the job. Requeue Task Requeues a completed task. This option is available if the task is in the completed state only. Mark Task As Complete Sets the task to the completed state. This option is available if the task is in the queued, rendering, suspended, or failed state. Release Pending Task If the job is frame dependent, releases a pending task. This option is available if the task is in the pending state only. Mark Task As Pending If the job is frame dependent, sets the task to the pending state. This option is available if the task is in the queued, rendering, suspended, or failed, or completed state. Mark Task As Failed Sets the task to the failed state. This option is available if the task is in the queued, rendering, suspended, or completed state. Resume Failed Task Resumes a failed task. If the entire job is failed, it will re-enter the queued state. This option is available if the task is in the failed state only. Requeue Tasks by Slave Requeues all the completed tasks rendered by this particular slave. This can be useful if a particular slave is constantly rendering bad frames. This option is available if there is at least one task in the completed state for that particular slave. Blacklist/Un-Whitelist Slave If the job has a blacklist, add the slave that rendered or is rendering the task to it. If the job has a whitelist, remove the slave from it. This option is available if the task is rendering or completed. Find Slave In Slave List

90 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

Selects the slave in the slave list that has rendered or is currently rendering the selected task. This option is only available if the Slave List is visible, which can be toggled from the View menu. Submit Tasks As New Job Submits the selected tasks as a new job. The new job will have the exact same properties as the original job. Note that the output produced by these tasks for the new job will overwrite output from the existing job, since the same output settings will be used. You can choose to submit the job in the suspended state so that you can tweak its properties before resuming it. Task Reports View the errors, logs, and requeue reports for a specific task.

3.2.5 Slave/Pulse Panel

This panel contains separate tabs for the slave and pulse lists.

Slave List

This slave list shows all the slaves that are in your Deadline render farm. It shows system information about each slave, as well as information about the job the slave is currently rendering. You can customize the columns in the slave list from the View menu (while the slave list is visible), and you can use the Slave Filter toolbar to filter out slaves based on certain properties. Finally, you can use the search box to find specific slaves in the remaining slaves that are listed. There is also a Slave Availability filter in the Slave Filter toolbar. If you click on a job with this filter enabled, the Slave list will be filtered to only show the slaves that can render the selected job. This takes into account the Pool, Group, White/Blacklisted slaves, and any Limits the job uses. This makes it easy to figure out why a job might not be rendering when you think it should be.

If you want the slave list to show which machines are online, you can select View -> Ping Slave. This will show if the machine can be pinged under the Ping column. Note that when this is enabled, the speed at which the slave list refreshes will likely be affected. If you see a slave that is colored orange in the list, this means that the slave is using up 95% or more of its available RAM. This is normally not a problem, and is just a means of showing which machines are approaching their memory limit. If you see a slave that is colored cyan in the list, this means that the slave is using a license file that will expire shortly, or already has expired. You can remote into a slave by double-clicking on it. You can also access many options for a slave, which are listed below, by right-clicking on it. Note that the availability of these options can vary depending on the context in which they are used (for example, you may need to be in Super User Mode).

3.2. Deadline Monitor 91 Deadline User Manual, Release 5.2.49424

Slave Right-Click Options

Refresh Slave Refreshes the selected slave. Refresh All Slaves Refreshes the slave list. Connect by VNC/ARD/Radmin/Remote Desktop Remote into the selected slave(s) via the selected method. These options are only available if their corresponding settings in the Repository Options allow for remote connections. Ping Slave Pings the machine to see if it is online. The results will show up in the Ping column in the Slave list. Send Net Message/Growl Notification Send a net message or Growl notification to the selected slave(s). Modify Slave Settings Change the settings for the slave. See the Slave Settings documentation for more information. Modify Pools/Groups Assign slaves to pools and groups. See the Pools and Groups documentation for more information. Find Task In Task List Selects the task in the task list that this slave is currently rendering. This option is only available if the slave is currently rendering a task. Enabled/Disabled Enable or disable a slave. The Slave application will not start up on slaves that are disabled. Mark Slave As Offline Mark a stalled slave as being offline. This is useful if a slave didn’t close cleanly when it was last shutdown, and you don’t plan on restarting it for a while. This option is available if the slave is stalled. Delete Slave Delete a slave from your Deadline render farm. Deleting a slave from the Monitor does not uninstall the Deadline Client applications on the slave, it simply removes Deadline’s knowledge of that slave’s existence. To add the slave back again, simply start the Slave application on that machine. Remote Control Allows you to control the Slave application or the machine that it is running on remotely. See the Remote Control and Access documentation for more information. Scripts Launch slave scripts from here. You can add your own custom python slave scripts to the Scripts menu. See the Monitor Scripting documentation for more information. View History View the entire history of a slave. This includes when the slave was launched, when the slave was VNC’ed into, etc. View Errors View the errors for a slave.

92 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

Clear Errors Remove all the errors for a slave. This option is available if the slave has reported any errors.

Pulse List

The pulse list shows which machine Pulse is running on. It also displays useful information about the machine such as its name, listening port, status, etc, as well as some useful memory and CPU information. You can customize the columns in the pulse list from View menu (while the pulse list is visible).

If you have temperature sensors configured in Power Management, and you want to see their current temperatures, you can hover the mouse over the Zone Temperatures label in the upper right-hand corner of the panel. You can remote into a machine by double-clicking on it. You can also access many options, which are listed below, by right-clicking on it. Note that the availability of these options can vary depending on the context in which they are used (for example, you may need to be in Super User Mode).

Pulse Right-Click Options

Refresh List Refreshes the Pulse list. Connect by VNC/ARD/Radmin/Remote Desktop Remote into the selected machine(s) via the selected method. These options are only available if their corresponding settings in the Repository Options allow for remote connections. Send Net Message/Growl Notification Send a net message or Growl notification to the selected machine(s). Remote Control Allows you to control the Pulse application or the machine that it is running on remotely. When executing an arbitrary command, if you want to execute a DOS command on a Windows machine, the command must be preceded with “cmd /C”. This opens the DOS prompt, executes the command, and closes the prompt. For example: cmd /C echo "foo" > c:\test.txt

View History Allows you to view the entire history of Pulse. This includes when the Pulse was launched, when Pulse was VNC’ed into, etc. This option is available if you are in super user mode. Auto Configure Pulse

3.2. Deadline Monitor 93 Deadline User Manual, Release 5.2.49424

Use this to automatically set the selected machine as the Pulse server for your repository. You can choose to use the machine’s host name or IP address in the configuration. To set the Pulse server settings manually, refer to the Pulse Settings section of the Repository Options. Mark Pulse As Offline Allows you to mark a stalled pulse as being offline. This is useful if pulse didn’t close cleanly when it was last shutdown, and you don’t plan on restarting it for a while. This option is available if the pulse is stalled. Delete Pulse Allows you to delete Pulse from your Deadline render farm. Deleting Pulse from the Monitor does not uninstall the Deadline Client applications on the machine, it simply removes Deadline’s knowledge of Pulse’s existence. To add Pulse back again, simply start the Pulse application on that machine.

3.2.6 Limit Panel

The limit group panel contains a list that shows all the Limits that are in your Deadline repository. It also displays useful information about each Limit such as its name, limit, in use count, and blacklisted slaves. You can customize the columns in the job list from the View menu. You can access many options for the Limits by right-clicking on them. See the Limits documentation for more information.

3.2.7 Monitor Menus

File Menu

Change Repository Connect to a different repository, or reconnect to the current repository if the Monitor becomes disconnected. Change User Change the current Deadline user. You have the choice to select a different user or create a new one. Satellite Mode Enables Satellite Mode. See the Satellite Mode documentation for more information.

94 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

View Menu

Refresh Refresh the entire Monitor, or individual lists. Select a refresh option from the drop down in the Main Toolbar to choose which option is performed when you use the Refresh shortcut. Toolbars Toggle the visibility of the Main, Job, and Slave toolbars. Layout Change the horizontal layout of the Job and Task panels to a vertical one, and vice versa. You can also toggle the visibility of the Slave/Pulse and Limit panels. Columns Configure the order and visibility of the columns for each list. Ego Centric Sort If enabled, the current user’s jobs will always be displayed at the top of the jobs list. This makes it easy for a user to find their jobs quickly. Ping Slave Machines If enabled, the slave machines will be pinged during a refresh to check if they are online. This affects the speed at which the slave list is refreshed, which is why we’ve included the option to enable or disable it. If disabled, you will see Disabled displayed under the Ping column in the slave list. Keyboard Shortcuts Enable or disable the use of keyboard shortcuts. When disabled, the shortcuts will not appear in the menus. Grid Lines Display or hide the grid lines in the lists.

Submit Menu

Submit jobs to Deadline for different rendering plug-ins. More information regarding the Monitor submission scripts for each plug-in can be found in the Deadline Plug-ins documentation. You can also add your own submission dialogs to the submission menu. Check out the Monitor Scripting documentation for more information.

Scripts Menu

Run custom scripts that you can create. Check out the Monitor Scripting documentation for more information.

Tools Menu

Super User Enter Super User Mode, which allows you to access the administrative Monitor options. Super User mode can be password protected simply by specifying a password in the Access Control section of the Repository Options. Launch Job Monitor Launches the Job Monitor application, which allows you to monitor the progress of specific jobs without having to refresh the Monitor.

3.2. Deadline Monitor 95 Deadline User Manual, Release 5.2.49424

Options Modify the Monitor options and user settings. The Monitor options are described in the Monitor Customization documentation, and the user settings are described in the User Management documentation. Edit Themes Create new and edit existing themes for the Monitor and other Deadline applications. More information can be found in the Monitor Customization documentation.

Help Menu

Online Manual Opens the online manual for Deadline in your default browser. Technical Support Opens the online technical support page in your default browser.

3.2.8 Administrative Options

Administrative options can be accessed from the Tools menu, and require the Monitor to be in Super User mode, which is done by selecting Tools -> Super User Mode. Super User mode can be password protected simply by specifying a password in the Access Control section of the Repository Options. View History View the repository’s history. This includes when jobs were submitted, when settings were modified, etc. View Power Management History View the Power Management history. This includes when and why slaves were started up and shutdown. View Repository Statistics View the statistics that have been collected. See the Repository Statistics documentation for more information. Manage Users Add and remove users from the repository and change their user settings. See the User Management documentation for more information. Manage Pools Add and remove pools from the repository, and assign them to slaves. See the Pools and Groups documentation for more information on pools and how they affect job scheduling. Manage Groups Add and remove groups from the repository, and assign them to slaves. See the Pools and Groups documentation for more information on groups and how they affect job scheduling. Explore Repository Root Explore the Deadline Repository directory. Cleanup Completed Jobs Automatically delete or archive jobs that completed prior to a specified date. Cleanup Archived Completed Jobs Automatically delete archived jobs that completed prior to a specified date.

96 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

Undelete Jobs Use this as a last ditch attempt to restore jobs that have been deleted (there is a one hour grace period before the job is removed permanently). Note that once a job is deleted, its error and log reports cannot be recovered with this tool. Check For Orphaned Limit Stubs When a Slave requires a Limit for a job, it obtains a Limit Stub which adds to the Limit’s usage count. If the Slave exits uncleanly, it’s possible that the Stub can become orphaned and continue to count against the Limit’s total usage. Deadline will eventually clean this up on its own, but this option can be used to clean things up immediately if you suspect there is a problem. Check For Stalled Slaves When a Slave hasn’t updated its state for a long time, Deadline will eventually detect this and mark the Slave as stalled (stalled Slaves appear red in the Slave list). This option can be used to check for stalled Slaves immediately if you suspect there is a problem. Empty Trash Bin Empties the trash folder in the repository. Deadline will eventually clean this up on its own, but this option can be used to clean things up immediately if you wish. Suspend All Active Jobs This acts like a big Pause button that suspends all queued, active, and pending jobs in the queue. The list of the jobs that are suspended using this command are stored so that they can later be resumed by using the Resume Previously Suspended Jobs option. Resume Previously Suspended Jobs Resumes all the jobs that were suspended using the Suspend All Active Jobs command. Suspended jobs that were not suspended by the Suspend All Active Jobs command will not be affected. Configure Repository Options Configure the global repository options. See the Repository Options documentation for more information. Configure Plugins Configure the Deadline plug-ins. See the Deadline Plug-ins documentation for details about the configuration for each plug-in that is shipped with Deadline. Configure Event Plugins Configure the Deadline event plug-ins. See the Event Plug-in Scripting documentation for more information on creat- ing Event Plug-ins. Configure Power Management Configure the Power Management settings. See the Power Management documentation for more information.

3.2.9 FAQ

Why are all the Remote Control options in the Deadline Monitor are greyed out? In order to use the Remote Control options, you have to enable Remote Administration in the Repository Options. Is it possible to have the Monitor refresh automatically? Yes, this can be set in the user options (Tools -> Options). Under Monitor options, find the User Interface section and set the Auto Refresh Period. When I try to remote desktop to Slaves using the Monitor on Windows XP64, I get an error that says “Cannot find remote desktop connection application”.

3.2. Deadline Monitor 97 Deadline User Manual, Release 5.2.49424

The problem is likely that Deadline doesn’t have the required permissions to read or execute the files in the C:\WINDOWS\system32 directory, where the RDC executable (mstsc.exe) is located. This seems to be built into .NET, so I’m not sure if we can get around it. You might have to play around with the user/security settings to allow Deadline access to the RDC executable file. What does the Purge Obsolete Pools checkbox in the Manage Pools dialog do? This purges any pools that have been removed that are NOT assigned to any slaves or jobs. If either a single job or slave is still assigned that pool, it won’t be purged (doing so could cause some unexpected results). What does it mean when a slave is orange? This means that the slave is using up 95% or more of its available RAM. This is normally not a problem, and is just a means of showing which machines are approaching their memory limit.

3.3 Deadline Job Monitor

3.3.1 Overview

The Deadline Job Monitor allows you to automatically monitor the progress of a few specific jobs without having to refresh the Monitor. Just right-click on the job you want to watch in the Monitor and select Add To Job Monitor, and then keep the tool in a corner of your screen to keep an eye on them. On windows, you can also drag & drop jobs from the Monitor to the Job Monitor tool.

While the Job Monitor only shows the job’s name and progress, you can view more information about the job by simply hovering the mouse over the job’s name and progress bar. You can also right-click on the job to view the output directory or retrieve the scene file that was submitted with the job.

3.3.2 Running The Job Monitor

To start the Job Monitor: • On Windows, you can start the Job Monitor from the Start Menu, from the Deadline Launcher, from the Moni- tor’s Tools menu, or from a command prompt. • On Linux, you can start the Job Monitor from the Deadline Launcher, from the Monitor’s Tools menu, or from a terminal window. • On Mac OSX, you can start the Job Monitor by double-clicking the Job Monitor application in Finder, from the Monitor’s Tools menu, from the Deadline Launcher, or from a terminal window. Command line info:

98 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

• When running the Job Monitor from a command prompt or terminal window, this is the command to use: deadlinelauncher-jobmonitor

• To shutdown the Job Monitor if it’s already running, you can run the following: deadlinejobmonitor-shutdown

3.3.3 Job Monitor Menu Options

File Menu

Add Job Add a job to the Job Monitor tool. This is an alternative to adding the jobs from the Deadline Monitor. Clear Jobs Clears all jobs currently in the Job Monitor tool.

Options Menu

Always On top The Job Monitor tool will always be shown on top of other windows. Clear Jobs On Exit All jobs will be cleared from the Job Monitor tool whenever it is closed.

3.3.4 Job Monitor Right-Click Options

Explore Output Allows you to view the directory where a job’s output is sent. If a job has multiple output directories, they will be listed in a separate sub-menu. Copy Output Path Copies a job’s output directory to the clipboard. If a job has multiple output directories, they will be listed in a separate sub-menu. Retrieve File Allows you to save the scene file that was submitted with a job to another location. Repository Directory Allows you to view a job’s directory in the Repository.

3.3.5 FAQ

Does the Job Monitor automatically refresh itself? Yes. Unlike the Deadline Monitor, the Job Monitor automatically updates the jobs in the list. Is it possible to see more information about the jobs in the list, like priority, pool, etc.

3.3. Deadline Job Monitor 99 Deadline User Manual, Release 5.2.49424

Yes. You can hover the mouse over the job name to see additional information. You can also hover the mouse over the progress bar to see the accurate progress of the job’s tasks. Can I control jobs (suspend, change properties, etc) from the Job Monitor No. The Job Monitor simply allows you to keep an eye on your jobs. Use the Deadline Monitor to control the jobs.

3.4 Deadline Slave

3.4.1 Overview

The Deadline Slave is the application that controls the rendering applications, and should be running on any machine you want to include in the rendering process. Note that the Slave is the only Deadline application that requires a license to run, and more information on setting up licensing can be found in the Licensing Guide.

3.4.2 Running The Slave

To start the Slave: • On Windows, you can start the Slave from the Start Menu, from the Deadline Launcher, or from a command prompt. • On Linux, you can start the Slave from the Deadline Launcher or from a terminal window.

100 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

• On Mac OSX, you can start the Slave by double-clicking the Slave application in Finder, from the Deadline Launcher, or from a terminal window. Command line info: • When running the Slave from a command prompt or terminal window, this is the command to use: deadlinelauncher-slave

• To run the Slave without a user interface, you can specify the -nogui command line option. If the Slave is started through a Launcher that is already in nogui mode, the Slave will automatically start in nogui mode. This is useful when running Deadline on a Linux machine that doesn’t have a Desktop environment. deadlineslave-nogui

• To start the Slave without a splash screen, you can run the following: deadlineslave-nosplash

• To shutdown a Slave that’s already running, you can run the following: deadlineslave-shutdown

• If you have setup or are setting up multiple slaves on one machine, you can start up a slave with a specific name by running the following: deadlineslave -name "myslave"

• To shutdown a specific slave if multiple slaves are running, you can run the following: deadlineslave -name "myslave" -shutdown

You can also configure the Slave to launch automatically when the Deadline Launcher starts up. To enable this, just enable the Launch Slave At Startup option in the Launcher menu.

3.4.3 Slave Menu Options

Options Menu

Hide When Minimized (Windows Only) The Slave is hidden when minimized, but can be restored using the Slave icon in the system tray. Minimize On Startup (Windows Only) Starts the Slave in the minimized state. Show Scheduler Thread Tab Show or hide the Scheduler Thread tab in the Slave user interface. Only Active Render Thread Tabs You can show all 16 render thread tabs at all times by disabling this option.

Control Menu

Search For Jobs If the Slave is sitting idle, this option can be used to force the slave to search for a job immediately. Cancel Current Task

3.4. Deadline Slave 101 Deadline User Manual, Release 5.2.49424

If the Slave is currently rendering a task, this forces the slave to cancel it. Continue Running After Current Task Completion Check to keep the Deadline Slave application running after it finishes its current task completion. Stop/Restart Slave After Current Task Completion Check to stop or restart the Deadline Slave application after it finishes its current task. Shutdown/Restart Machine After Current Task Completion Check to shutdown or restart the machine after the Dealine Slave finishes its current task.

3.4.4 FAQ

Can I run the Slave on an artist’s workstation? It is not recommended to run the Deadline Slave on artist workstations while they are in use, but we encourage running the slave on these workstations when they will not be in use for a fair length of time (overnight, for example). Is it possible to automatically start the Slave when the workstation is not in use? Yes, on Windows or Mac OSX, you can use the Deadline Screen Saver to do this. Can I run the Slave as a service? Yes. If you’re running the Deadline Launcher as a service, then it will run the Slave in the background as well. Can I run the Slave without a user interface? Yes, launching the Slave from the command line with the argument -nogui will run the slave without a user interface: deadlineslave-nogui

Is it possible to stop the Slave application from the command line? Yes, launching Slave from the command line with the argument -s will stop the slave running on the machine: deadlineslave-shutdown

The Slave keeps reporting errors for the same job instead of moving on to a different job. What can I do? You can enable Bad Slave Detection in the repository options to have a slave mark itself as bad for a job when it reports consecutive errors on it. More information can be found in the Job Failure Detection documentation. The Slave does not pick up any jobs and gives an UnauthorizedAccessException error message. This happens when the Slave doesn’t have the proper permissions to access the repository. See the Repository Sharing Documentation for more information. What does it mean when a Slave is stalled, and is this a bad thing? Slaves become stalled when they don’t update their status for a long period of time, and is often an indication that the slave has crashed. A stalled slave isn’t necessarily a bad thing, because it’s possible the slave just wasn’t shutdown properly (it was killed from the Task Manager, for example). In either case, it’s a good idea to check the slave machine and restart the slave application if necessary. On Linux, the Slave is reporting that the operating system is simply ‘Linux’, instead of showing the actual Linux distribution (like CentOS or openSuse). In order for the Slave to report the Linux distribution properly, you need to have lsb installed, and lsb_release needs to be in the path. You can use any package management application to install lsb.

102 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

Using Deadline 4.x on Windows, the Slave gives a Method Not Found error message when it tries to render any job. This is the full error message: Method not found: ‘Void System.Reflection.Emit.DynamicMethod..ctor(System.String, System.Type, System.Type[], Boolean)’. This occurs if you have .NET 2.0 installed instead of .NET 2.0 SP2 (SP2 is the minimum required version). Upgrading your .NET 2.0 installation should fix this problem. Using Deadline 3.x on Vista or Windows 7, the Slave gives a Failed To Assign Process To Job Object error message when it tries to render a job. Running the Slave application from a command prompt has been known to workaround this problem. This problem has been fixed in Deadline 4.0.

3.5 Deadline Pulse

3.5.1 Overview

Deadline Pulse is an optional server application that acts as a proxy between the other Deadline applications and the Repository, which helps reduce the load on your network and improve Deadline’s overall performance. You only need to run one instance of Pulse (it’s part of the Deadline Client installation), and it can run on any machine in your network. If you have more than 50 render nodes in your farm, or are experiencing performance issues, we recommend that you run Pulse. Note: When choosing a machine to run Deadline Pulse on, you should be aware that non-Server editions of Windows have a TCP/IP connection limitation of 10 new connections per second. If your render farm consists of more than 100 machines, it is very likely that you’ll hit this limitation every now and then (and the odds continue to increase as the number of machines increase). Therefore, if you are running Pulse on a farm with 100 machines or more, we recommend using a Server edition of Windows, or a different operating system like Linux.

3.5. Deadline Pulse 103 Deadline User Manual, Release 5.2.49424

Pulse also controls Auto Configuration, Power Management, Statistics Gathering, and has a useful Web Service fea- ture. If you wish to make use of these extra features without having Pulse act as a proxy between the Deadline applications and the Deadline Repository, simply leave the Host Name Or IP Address setting blank in the Pulse: Con- nection Settings section of the Repository Options. Note that if the Pulse application goes down for any reason, the Deadline applications will revert back to scanning the Repository themselves. Whether you decide to run Pulse or not, you will still benefit from Deadline’s robustness.

104 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

3.5.2 Configuring Pulse

Auto Configuration

Before the other Deadline applications can connect to Pulse, you need to configure your Repository Options so that they know where Pulse is running. There are a couple of ways that this can be done automatically. If you launch Pulse, and it hasn’t been configured in the Repository Options yet, it will ask you if you want to automatically configure Deadline to use the current machine as the Pulse server. If you don’t have DNS set up, you will probably want to use the IP address instead of the host name.

If Pulse has already been configured, but you want to quickly switch to another machine to run Pulse on, simply launch Pulse on the desired machine. Then when it appears in the Pulse list in the Monitor, right-click on it and select Auto Configure Pulse. Note that you must be in Super User mode to configure Pulse this way.

Manual Configuration

There are many additional settings that can be configured for Pulse, which you can find in the Pulse Settings section of the Repository Options.

3.5. Deadline Pulse 105 Deadline User Manual, Release 5.2.49424

For the host name/IP address setting, specify the machine name or the IP address of the machine that you will be running Pulse on. In addition, you need to specify the port number that will be used. This is so that the Deadline appli- cations know how to connect to Pulse. You can also adjust the connection attempts so that the Deadline applications will make multiple attempts at contacting Pulse if previous attempts fail. The Dedicated Data Threads setting represents the number of threads that Pulse will use to refresh its cached Reposi- tory data. The default setting of 10 should work well for most render farms, but the more cores your Pulse machine has, the higher you can set this number. The Repository Scan Interval represents how often Pulse will refresh its cached Repository data. Again, the default setting of 10 should work well for most render farms, and often this number can even be reduced to the minimum of 5 seconds. Now that you have a good starting point, you can adjust these values as necessary to try and improve performance.

3.5.3 Running Pulse

To start the Pulse: • On Windows, you can start Pulse from the Start Menu or from a command prompt. • On Linux, you can start Pulse from a terminal window. • On Mac OSX, you can start Pulse by double-clicking the Pulse application in Finder or from a terminal window. Command line info: • When running Pulse from a command prompt or terminal window, this is the command to use: deadlinelauncher-pulse

• To run Pulse without a user interface, you can specify the -nogui command line option. If Pulse is started through a Launcher that is already in nogui mode, Pulse will automatically start in nogui mode. This is useful when running Deadline on a Linux machine that doesn’t have a Desktop environment.

106 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

deadlinepulse-nogui

• To start Pulse without a splash screen, you can run the following: deadlinepulse-nosplash

• To shutdown Pulse if it’s already running, you can run the following: deadlinepulse-shutdown

You can also configure Pulse to launch automatically when the Deadline Launcher starts up (similar to how the Slave does this). To enable this, open the deadline.ini file on the machine that Pulse is running on and specify this: LaunchPulseAtStartup=True

The deadline.ini file can be found in the following locations: • Windows: In the local user profile folder (ie: C:\Documents and Settings\[user]\Local Settings\Application Data\Thinkbox\Deadline). • Linux: In the local user home folder (ie: ~/Deadline). • Mac OSX: In the local user home folder (ie: /Users/[user]/Deadline)

3.5.4 Advanced Features

Auto Configuration

This allows you to set certain settings in a single location, like the repository path, and license server. When a Slave starts up, it will automatically pull this configuration from Pulse and apply it before fully initializing. See the Auto Configuration documentation for more information.

Throttling

Pulse supports a throttling feature, which is helpful if you’re submitting large files with your jobs. This can be used to limit the number of Slaves that are copying over the job files at a time. See the Network Performance Guide documentation for more information.

Power Management

Power management is a system for controlling how machines startup and shutdown automatically based on sets of conditions on the render farm, including job load and temperature. Power management is built into Deadline Pulse, so Pulse must be running to use this feature. The only exception to this rule is Temperature checking. See the Power Management documentation for more information.

Statistics Gathering

While Pulse isn’t required to gather job statistics, it is required to gather the slave and repository statistics. See the Repository Statistics documentation for more information.

3.5. Deadline Pulse 107 Deadline User Manual, Release 5.2.49424

Web Service

Pulse has a web service feature built in, which you can use to get information directly from Pulse over an Internet connection. You can then display this information in a manner of your choice, such as in a web page. See the Pulse Web Service documentation for more information.

3.5.5 Pulse Menu Options

Options Menu

Hide When Minimized (Windows Only) Pulse is hidden when minimized, but can be restored using the Pulse icon in the system tray. Minimize On Startup (Windows Only) Starts Pulse in the minimized state.

Control Menu

Perform Repository Scan If Pulse is between repository scans, this option can be used to force Pulse to perform a repository scan immediately. A repository scan involves reading in the Repository data (jobs, slave settings, etc) and refreshing its internal cache. Once the repository scan is complete, Pulse will service any Slaves that are currently connected. Perform Repository Clean-up If Pulse is between repository clean-ups, this option can be used to force Pulse to perform a repository clean-up immediately. A repository clean-up includes releasing pending jobs, deleting jobs that are marked for automatic deletion, and checking for stalled slaves. Perform Power Management Check If Pulse is between power management checks, this option can be used to force Pulse to perform a power management check immediately.

3.5.6 FAQ

Is Pulse required to use Deadline? Pulse is not required to use Deadline. It simply improves Deadline’s performance, and enables you to use features like Power Management and Auto Configuration. If you are running more than 50 slaves, it is recommended that you run Pulse. What happens if Pulse is shutdown or terminated? When Pulse is not running, the Slaves themselves check for jobs in the Repository. So if Pulse is shutdown or terminated for any reason, Deadline will continue to function as normal, but without the performance boost. This maintains the level of robustness that users of Deadline have become accustomed to. Can I run Pulse on any machine in my farm? You can run Pulse on any machine in your farm, including the Deadline Repository machine. However, for larger farms, we recommend running Pulse on a dedicated machine. Note: When choosing a machine to run Deadline Pulse on, you should be aware that non-Server editions of Windows have a TCP/IP connection limitation of 10 new connections per second. If your render farm consists of more than

108 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

100 machines, it is very likely that you’ll hit this limitation every now and then (and the odds continue to increase as the number of machines increase). Therefore, if you are running Pulse on a farm with 100 machines or more, we recommend using a Server edition of Windows, or a different operating system like Linux. If I’m running Pulse on the Deadline Repository machine, can I use the local path to the repository instead of the network shared path? If your Deadline Repository machine is a Windows machine, then yes. If your Deadline Repository machine is a non-Windows machine, then no. If the local path is used, the logged in user’s permissions will be used when Pulse moves files around, and this will result in permission problems when other Deadline applications try to access these files. Instead, the Repository root should be mounted on the Deadline Repository machine just like any Deadline Client machine (ie: /mnt/DeadlineRepository), and this is the path that Pulse should use. Can I run Pulse as a service? Yes. If you’re running the Deadline Launcher as a service, then it will run Pulse in the background as well. Can I run Pulse without a user interface? Yes, launching the Pulse from the command line with the argument -nogui will run it without a user interface: deadlinepulse-nogui

Is it possible to stop Pulse from the command line? Yes, launching Pulse from the command line with the argument -s will stop the running instance on the machine: deadlinepulse-s

Can I still use the Power Management feature if I don’t want Pulse to act as a proxy between the Slaves and the Deadline Repository? Yes. If you wish to make use of this feature without having Pulse act as a proxy between the slaves and the repository, simply leave the Pulse Host Name Or IP Address setting blank in the Deadline Pulse Settings, and run Pulse on any machine you choose. If Pulse is shutdown or terminated, is the Power Management feature still functional? In this case, the only aspect of Power Management that is still functional is the Temperature Checking. Redundancy for Temperature checking has been built into the Slave application, so if Pulse isn’t running, you’re still protected if the temperature in your farm room begins to rise. Which temperature sensors work with Power Management? The sensors we use are NetTherms, and APC Sensors are also known to be compatible. Basically, as long as the temperature sensors use SNMP, and you know it’s OID (which is configurable in Deadline), it should work. Pulse is crashing, and the last line in the log is “Purging repository temp files”. On rare occasions, something in the Repository temp folder will cause Pulse to crash without a useful error message. The workaround is to manually delete everything in the temp folder in the Repository.

3.6 Deadline Command

3.6.1 Overview

Deadline Command is a command line tool for the Deadline render farm management system. It can be used to control, query, and submit jobs to the Deadline Repository.

3.6. Deadline Command 109 Deadline User Manual, Release 5.2.49424

There is also a deadlinecommandbg application which is identical to deadlinecommand, except that it is executed in the background. When using deadlinecommandbg, the exit code and output are written to the Deadline temp folder as dsubmitexitcode.txt and dsubmitoutput.txt respectively. If you want to control where these files get written to, you can use the -outputFiles option, followed by the paths to the exit code and output file names. For example: deadlinecommandbg -outputFiles c:\exitcode.txt c:\output.txt -pools

3.6.2 Command Line Options

The supported command line options and their usage instructions can be printed out by running Deadline Command from a DOS prompt or terminal with the -help arguments: deadlinecommand-help

To get usage information for a specific command, specify the command name after the -help argument: deadlinecommand -help SubmitCommandLineJob

3.6.3 Usage Examples

Querying For Jobs Using Filters

To query for all jobs that belong to jsmith or cdavis: deadlinecommand -getjobsfilter username=jsmith username=cdavis

To query for all of jsmith’s jobs with completed status: deadlinecommand -getjobsfilterand username=jsmith status=completed

Checking Which Slaves Assigned To A Specific Pool

To check which slaves are assigned to the 3dsmax pool: deadlinecommand -getslavenamesinpool 3dsmax Assigned

To Check which slaves are excluded from the xsi pool: DeadlineCommand -getslavenamesinpool Xsi Excluded

Querying For Task Information

To query for task information for the job with the ID of “00q_100_999_0c49f79a”: deadlinecommand -getjobtasks 00q_100_999_0c49f79a

Retrieving and Changing Job Status

To retrieve the status of the job with the ID of “00q_100_999_0c49f79a”: deadlinecommand -getjob 00q_100_999_0c49f79a

To suspend the job with the ID of “t_090_999_7B74ADC0”:

110 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

deadlinecommand -suspendjob 00q_100_999_0c49f79a

To resume the job: deadlinecommand -resumejob 00q_100_999_0c49f79a

To requeue the job: deadlinecommand -requeuejob 00q_100_999_0c49f79a

To delete the job: deadlinecommand -deletejob 00q_100_999_0c49f79a

To archive the job: deadlinecommand -archivejob 00q_100_999_0c49f79a

Reporting An Error

Say you have a custom script plugin called MyPlugin, to report an error from it using DeadlineCommand: deadlinecommand -reporterror MyPlugin "MyPlugin reported an error"

Sending An Email

To send the message to [email protected] (cc [email protected]): deadlinecommand -sendemail -to [email protected] -cc [email protected] -subject "the subject" -message "C:\MyMessage.html"

To send the same message with the attachment “C:\MyAttachment.txt”: deadlinecommand -sendemail -to [email protected] -cc [email protected] -subject "the subject" -message "C:\MyMessage.html" -attach "C:\MyAttachment.txt"

Note that the -to, -subject, and -message options are required. The other two options are optional.

Submitting A Job

To submit a 3dsmax scene (ie. C:\MyScene.max) to Deadline, you must first create a job submission info file (ie. C:\job_info.job) and a 3dsmax plugin info file (ie. C:\max_info.job). See the Submission documentation for more information. Once the files are created, you can submit the scene to Deadline: deadlinecommand "C:\job_info.job" "C:\max_info.job" "C:\MyScene.max"

3.6.4 FAQ

What’s the difference between the deadlinecommand and deadlinecommandbg executables? deadlinecommand is identical to deadlinecommandbg, except that it is executed in the background. When using deadlinecommandbg, the exit code and output are written to the Deadline temp directory as dsubmitexitcode.txt dsub- mitoutput.txt respectively.

3.6. Deadline Command 111 Deadline User Manual, Release 5.2.49424

3.7 Deadline Screen Saver

3.7.1 Overview

You can use the Deadline screen saver to start the Deadline Slave application when a machine has been idle for a specified amount of time. When the screen saver starts up, the Deadline Slave application is started up with it. Note that the Deadline screen saver is only available on Windows and Mac OSX.

3.7.2 Setup On Windows

The Deadline Screen Saver is installed to the system directory when you install the Deadline Client on a machine, and the steps to setting it up are as follows: • Right-click on the desktop and select Properties. • Select the Screen Saver tab. • Select the deadline screen saver in the drop-down box. • Specify the number of minutes to wait. • Click the Settings button to set whether the Slave should shut down when the screen saver exits or if it should stay running. The default is to shut down the slave.

112 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

3.7.3 Setup On Mac OSX

The Deadline Screen Saver is installed to the screen saver directory when you install the Deadline Client on a machine, and the steps to setting it up are as follows: • Open up System Preferences. • Click on Desktop & Screen Saver. • Select the Screen Saver tab. • In the Screen Savers list on the left, select Deadline to be the screen saver. • Click the Options button to set whether the Slave should shut down when the screen saver exits or if it should stay running. The default is to shut down the slave.

3.8 Deadline Mobile

3.8.1 Overview

Deadline Mobile allows you to monitor your Deadline jobs from anywhere. The application connects to a Pulse server over the Web Service to download information about the Deadline Repository, so Pulse must be running before you can use Deadline Mobile. See the Pulse Web Service documentation for more information. The requirements for Deadline Mobile are as follows.

3.8. Deadline Mobile 113 Deadline User Manual, Release 5.2.49424

Mobile Device Minimum Requirements Android Deadline 5.0 and Android 2.1 iPhone Deadline 4.1 and iPhone OS 3.0 Windows Phone Deadline 5.0 and Windows Phone 7.0

3.8.2 Mobile Setup

When you launch Deadline Mobile for the first time, you will need to configure it so that it can connect to your Pulse server. Just press the Settings button in the top left corner. The important settings are the Deadline User settings and the Pulse Server settings. For Deadline Mobile to connect to Pulse, you must provide the following information: • Deadline User Settings -> User Name: This is the Deadline User is the user that you normally submit render jobs from. • Deadline User Settings -> Password: If the Pulse Web Service has been configured to require authentication, and empty passwords are not allowed, you must enter your user password here. This is the password that you specify in your Deadline User Settings in the Monitor. See the User Management documentation for more information. • Pulse Server Settings -> Server Name: This is the host name or IP address of your Pulse server. • Pulse Server Settings -> Server Port: The default is 8080, and should only be changed if the Pulse Web Service has been configured to listen on a different port. After you have configured your Server and Deadline User settings, press the Job List button to return and press the Refresh button to connect to Pulse and load the job list. If you get an error when Mobile attempts to contact Pulse, see the Troubleshooting section for known errors and solutions.

3.8.3 Job List

The job list is the main screen, and by default it shows all the jobs in the repository. See the Settings section below for information on how to sort and filter this list. You can also use the search field to search for specific jobs.

114 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

To refresh the job list, just press the Refresh button. If you want to see more information about a specific job, press the button to the right of the job name to bring up the job details panel.

3.8.4 Job Details

The job details panel shows additional information for a specific job. In this view, you can see most of the information you could normally see in the Deadline Monitor.

To refresh the job details, just press the Refresh Job button. To return to the job list, press the Job List button in the upper left corner.

3.8. Deadline Mobile 115 Deadline User Manual, Release 5.2.49424

3.8.5 Settings

The settings panel can be accessed from the job list by pressing the Settings button. You can access the online help by pressing the Help button in the top right corner (Android) or by scrolling down to find the Online Help link (iPhone). To return to the job list, press the Job List button in the upper left corner.

Auto Refresh Settings • Job List: If enabled, the job list will automatically refresh itself at the increment defined in Job List Interval. • Job Details: If enabled, the job’s details will automatically refresh itself at the increment defined in Job Details Interval. Job List Filter Settings • Configure filters to only show the jobs that you’re interested in. Job List Sort Settings • Ego-centric Sort: If enabled, all of your jobs will appear at the top of the job list, followed by the remaining jobs. • Primary Sort: Set the primary sort field and order for the job list. • Secondary Sort: Set the secondary sort field and order for the job list. Deadline User Settings • User Name: Your Deadline user name. This is the Deadline User is the user that you normally submit render jobs from. • Password: If the Pulse Web Service has been configured to require authentication, and empty passwords are not allowed, you must enter your user password here. This is the password that you specify in your Deadline User Settings in the Monitor. See the User Management documentation for more information. Pulse Server Settings • Server Name: This is the host name or IP address of your Pulse server. • Server Port: The default is 8080, and should only be changed if the Pulse Web Service has been configured to listen on a different port.

116 Chapter 3. Client Applications Deadline User Manual, Release 5.2.49424

Proxy Server Settings • Server URL: If you are using a proxy web server, you may need to set a more specific URL to connect to the Pulse server. • Http Authorization: If your proxy web server requires HTTP authorization, you should enable this option and specify the user name and password. • SSL: If you are using a proxy web server that requires SSL, you should enable this option. Note that this will change the server port in the Pulse Server Settings to 443 by default. Download Information • This a running tally of the data that you’ve downloaded from the Pulse server.

3.8.6 Pulse Proxy Server

Depending on the security restrictions of your studio, you may wish to to setup a proxy server that acts as a middleman between Deadline Mobile and Pulse. You can run the proxy server on a different machine, and configure it to require authentication, use SSL, etc. We have example scripts that you can start with by downloading Pulse Proxy Script For Deadline Mobile from the Miscellaneous Deadline Downloads Page. • Place these scripts into a cgi script executable folder. For apache, the default is the cgi-bin directory, but different folders can be configured as script folders. • Once the scripts are in the folder, running them should yield a 403: Not authorized error until the script has been configured. The proxy scripts have been written to assume that the root web directory will be where the scripts will be run. Because of this, if they are placed into the cgi-bin folder you must prepend ‘\\cgi-bin\\’ to the URI regular expression test in the scripts. Note that all slashes and regular expression special characters must be escaped (hence the double slash). Common pitfalls with this are forgetting to mark the scripts as executable on unix based systems (use “chmod og+x Mobile_GetJob*” to mark them executable), and forgetting to set the owner and group to be the same as the webserver runs as (use “chown www:www Mobile_GetJob*” on most systems). Note that we provide these scripts as is, and we don’t officially support them. However, if you are having difficulties, contact Deadline Support and we’ll do what we can to help.

3.8.7 Troubleshooting

These are some known Mobile errors and solutions. You must provide a password for authentication This error occurs when a password has not been set for the user name under Manage Users in Deadline while authentication is enabled and empty passwords are not accepted. To resolve this issue, you must fill in the Web Service Password field for the user and restart Pulse or wait for it to update its network settings. The provided user name and password are invalid This error occurs when the password provided is incorrect for the given user. If you believe the password is correct, you may need to wait for Pulse to update its network settings or manually restart Pulse. The provided user name is invalid This error occurs when the provided user is not in Pulse’s cached list. If the user name is valid, you may need to wait for Pulse to update its network settings or manually restart Pulse. There was an error connecting to Pulse This error occurs when there are two errors connecting to Pulse in a row. The likely cause of this error is that Pulse is not running on the specified server. Verify that Pulse is running on the specified server and that you have entered the server’s name or IP address correctly. If you have a name

3.8. Deadline Mobile 117 Deadline User Manual, Release 5.2.49424

specified for the server and are not on the local area network of that machine, you may need to enter the server’s IP address instead of its name. Network Error The connection with the server failed. Please check your server settings in the Settings Section Double check your settings in Deadline Mobile to make sure they match the required information. If all the Deadline Mobile settings are entered correctly and you still cannot connect, look in your general mobile device settings and make sure you are connected to the right network. Depending on how things are set up, your device will try to connect to the strongest network in the area. If the network it switches to doesn’t have the correct settings to connect to your server then the connection will fail. If you are still unable to connect try rebooting the device (fully power off your device and power it back on). This error also occurs when the server you are trying to connect to has lost access to the internet. Double check that the server is connected to the internet.

3.8.8 FAQ

How do I get Deadline Mobile? Deadline Mobile can be downloaded from the Android Market and the iPhone App Store. How much does Deadline Mobile cost? Nothing, it’s free!

118 Chapter 3. Client Applications CHAPTER FOUR

REPOSITORY CONFIGURATION

4.1 Repository Options

4.1.1 Overview

There are a wide variety of Repository options that can be configured. On Windows and Linux, these options were available in the Repository Setup Wizard that was launched after installing the Deadline Repository. However, all of these options can be modified at any time from the Deadline Monitor while in Super User Mode by selecting Tools -> Configure Repository Options.

Note that long-running applications like the Launcher, Slave, and Pulse only update these settings every 10 minutes, so after making changes, it can take up to 10 minutes for all machines to recognize them. You can restart these applications to have them recognize the changes immediately.

4.1.2 Client Setup

These settings affect the Deadline Client installed on each machine.

119 Deadline User Manual, Release 5.2.49424

• Remote Administration: Enabling Remote Administration allows the Deadline Clients to be controlled remotely from the Monitor running on another machine. Note that this can be a security risk if you are not behind a firewall. • Automatic Upgrades:Enabling Automatic Upgrades allows the Deadline Clients to detect if the Repository has been upgraded, and upgrade themselves if necessary. Note that the upgrade check is only performed when launching applications via the Launcher.

4.1.3 Monitor Settings

These settings affect the Deadline Monitor application on each machine. • Pulse refresh connection time out: The number of seconds a monitor that has connected to Pulse will wait for Pulse to respond when refreshing. • Batch command limit while in Satellite Mode: If Satellite Mode is enabled, batch operations (on multiple jobs or slaves, for example) will be limited to this number. Limiting batch operations helps ensure that users don’t accidentally start a command that could take a very long time to complete. • Allow Growl messages to be sent: Whether or not Growl notifications can be sent to machines from the Deadline Monitor. This requires Growl to be installed on the remote machine. • Allow Network messages to be sent: Whether or not instant network messages can be sent to machines from the Deadline Monitor. This requires the Deadline Launcher to be running on the remote machine.

120 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.4 Slave Settings

These settings affect the Deadline Slave application on each machine. General • Limit the number of characters per line for standard output handling: Lines of standard output that are longer than the specified limit will be ignored by the Slave’s stdout handling. • Remove Offline/Stalled Slaves from the Repository after this many days: Slaves that are Offline or Stalled will be removed from the Repository after this many days. • Gather System Resources (CPU and RAM) When Rendering Tasks On Linux/Mac: If enabled, the Slave will collect CPU and RAM usage for a task while it is rendering. We have seen cases where this can cause the Slave to crash on Linux or Mac, so you should only disable this feature if you run into this problem. • Manually scan the Repository for jobs if the Slave cannot connect to Pulse: If enabled, the Slaves will try to scan the Repository manually for jobs if they cannot connect to Pulse. • Power Management Thermal Shutdown check interval: The number of seconds between thermal shutdown checks. The Slave only performs this check if Pulse isn’t running. Note that this is the only feature of Power Management that has redundancy built into the Slave.

4.1. Repository Options 121 Deadline User Manual, Release 5.2.49424

Wait Times • Number of seconds between queries for new Tasks while the Slave is Rendering: The number of seconds a Slave will wait after it finishes a task before moving on to another. This delay is not applied when the Slave is idle. • Number of seconds between Repository queries while the Slave is Idle: The number of seconds a Slave that has not connected to Pulse will wait between polls to the Respository for tasks when it is idle. • Number of seconds between Pulse queries while the Slave is Idle: The number of seconds a Slave that has connected to Pulse will wait between polls to Pulse for tasks when it is idle. • Number of seconds a Slave that has connected to Pulse will wait for a response: The number of seconds a Slave that has connected to Pulse will wait for Pulse to respond when querying for a job. • Number of mintues a Slave must be unresponsive before it is considered Stalled: Deadline determines if a Slave has stalled by checking the last time that the Slave provided a status update. If a Slave has not updated its state in the specified amount of time, it will be marked as Stalled.

122 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.5 Pulse Settings

Connection • Host Name or IP Address: “The host name or the IP address of the machine that Pulse is running on. If left blank, the Deadline applications will not try to connect to Pulse. • Listening Port: The port that Pulse will listen on. • Maximum Incoming Connections: The maximum number of incoming connections that Pulse will accept before it starts rejecting them. • Connection Timeout: The number of milliseconds in which messages being sent to/from Pulse must complete before a timeout occurs. • Maximum Connection Attempts: The maximum amount of times the Deadline applications will attempt to connect to Pulse before giving up. • Task Confirmation: If enabled, Slaves that receive tasks from Pulse will wait up to the specified amount of time to confirm the task’s existence before it proceeds with the render. This can help in cases where network latency causes the Slave to think the task has been requeued. Note that if the Slave confirms the existence before the given timeout, it will move on immediately. So under normal circumstances, the feature shouldn’t have any impact on the overall speed of a task.

4.1. Repository Options 123 Deadline User Manual, Release 5.2.49424

General • Dedicated Data Loading Threads: The maximum number of threads that Pulse uses for loading Repository data. • Repository Scan Interval: The number of seconds between Repository scans. After each scan, Pulse will dis- tribute jobs to any Slaves that are currently connected. • Repository Clean-up Interval: The number of seconds between Repository clean-ups. This process includes resuming pending jobs, cleaning up unused files, etc. • Power Management Check Interval: The number of seconds between Power Management checks. • Repository Disk Space Monitoring: If the repository machine has this much space (in MB) or less, a warning email is sent. Note that this feature only works when Pulse is running on the Repository machine.

124 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

Throttling • Enable Throttling: Enable to limit the number of Slaves that can copy over job files at the same time. • Maximum number of Slaves that can copy job files at the same time: The maximum number of Slaves that can copy over job files at the same time. • Number of seconds a Slave waits between updates to see if it can start copying job files: The amount of time (in seconds) a Slave will wait between sending throttle checks and updates to Pulse. • Throttle update timeout multiplier: The number of seconds a Slave waits between throttle updates is multiplied by this value to determine the timeout value.

4.1. Repository Options 125 Deadline User Manual, Release 5.2.49424

Web Service • Enable the Web Service: Enable the Pulse Web Service. • Listening Port: The port that the Web Service will listen on. • Connection Limit: The amount of simultaneous connections the Web Service can handle. • Connection Timeout: The amount of time, in seconds, that responses from the Web Service have to complete. • Require Authentication: If enabled, a valid user name and password must be provided to access the Pulse Web Service. If you change this setting, you must restart Pulse for the change to take effect. • Allow Empty Passwords: If enabled, the Pulse Web Service will accept an empty password if no password is provided. • Allow Execution of Non-Script Commands: If enabled, you can call Deadline Command commands using the Web Service.

126 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.6 Email Notification

SMTP Settings • SMTP Server: The SMTP server used by Deadline to send emails. • Sender Account: The email account that Deadline will use to send emails from. • Port: The SMTP port to use. • Use SSL: The email account from which the notifications will be sent. • SMTP Server Requires Authentication: Enable if the SMTP server requires a user name and password to au- thenticate. • Testing: Send a test email to the specified email address. Note that if you have SSL enabled, you may need to configure your Linux and OSX machines for SSL to work. The process for doing this is explained in Mono’s Security Documentation.

4.1. Repository Options 127 Deadline User Manual, Release 5.2.49424

Job Notifications • Job Completed: When a job completes, an email will be sent to these email addresses. • Job Timed Out: When a job times out, an email will be sent to these email addresses. • Job Error Warning: When a job accumulates a certain number of errors, a warning email will be sent to these email addresses. You can configure the warning limit in the Failure Detection settings. • Job Failed: “When a job fails, an email will be sent to these email addresses. • Job Corrupted: When a corrupted job is detected, an email will be sent to these email addresses.

128 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

Repository Notifications • Slave License Errors: “When a slave is unable to get a license, an email will be sent to these email addresses. • Slave Status Errors: When a slave is unable to update its state in the Repository, an email will be sent to these email addresses. • Slave Error Warning: When a slave accumulates a certain number of errors in one session, a warning email will be sent to these email addresses. You can configure the warning limit in the Failure Detection settings. • Stalled Slave: When a stalled slave detected, an email will be sent to these email addresses. • Power Management: All Power Management related emails will be sent to these email addresses. • Repository Disk Space: If you have Pulse running on your Repository machine, and that machine has reached the disk space threshold set in the Pulse Settings, an email will be sent to these email addresses. • System Administrator: When users use the option in the Error Report Viewer to report error messages to their system administrator, those emails will be sent to these email addresses.

4.1. Repository Options 129 Deadline User Manual, Release 5.2.49424

Error Reporting • Enable Remote Error Reporting: “Enable or disable remote error reporting.

130 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.7 Auto Configuration

This allows you to configure your Slaves from a single location. When a Slave starts up, it will automatically pull this configuration from Pulse and apply it before fully initializing. See the Auto Configuration documentation for more information.

4.1.8 User Security

User Security • Super User Password: The password needed to access Super User Mode in the Monitor. Leave blank for no password. • Allow Normal users to view the jobs of other users in the Monitor: If enabled, Normal users can see jobs that belong to other users in the Monitor. However, they will not be able to control or change the properties of jobs that do not belong to them. • Allow Normal users to switch to another Deadline user from the Monitor or Launcher: If enabled, Normal users can change the current Deadline user from the Launcher or Monitor. If disabled, only Power users can do this. • Allow Normal users to switch to another Repository from the Monitor or Launcher: If enabled, Normal users can change the current Repository from the Launcher or Monitor. If disabled, only Power users can do this. • Allow Normal users to change the License Server settings from the Launcher: If enabled, Normal users can change the current License Server from the Launcher. If disabled, only Power users can do this. • Allow Normal users to add and remove Slave Instances from the Launcher: If enabled, Normal users can add and remove Slave instances from the Launcher. If disabled, only Power users can do this. • Use the System User For The Deadline User: Enable to use enhanced user security, which prevents users from impersonating others.

4.1. Repository Options 131 Deadline User Manual, Release 5.2.49424

Menu Item Permissions • Each item in the lists represents a Menu Item that is available in the Monitor. Simply place a check mark beside each item that you want Normal and Power users to have access to.

Job Property Permissions • Each item in the lists represents a job property that can be changed from the Monitor. Simply place a check mark beside each item that you want Normal and Power users to have access to.

132 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.9 Job Settings

Job Scheduling • Job Scheduling Order: The order of priority by which Deadline schedules the jobs in the queue. The default order is based on the job\’s pool, then its priority, then finally its submission date. • Automatic Job Timeout: Configure Deadline to automatically determine a timeout for a job based on the render times of tasks that have already completed. If a task goes longer than that timeout, a timeout error will occur and the task will be requeued. • Automatic Job Cleanup: Configure Deadline to clean up completed jobs by either archiving or deleting them. You can also configure Deadline to automatically delete completed jobs that are archived. Non-completed jobs will never be automatically deleted.

4.1. Repository Options 133 Deadline User Manual, Release 5.2.49424

Failure Detection • Send a warning to the job’s user after it has generated this many errors: The number of errors that incomplete tasks can accumulate for a job before a warning is sent to the job’s user. • Mark a job as failed after it has generated this many errors: The number of errors that incomplete tasks can accumulate for a job before the job is marked as Failed. • Mark a task as failed after it has generated this many errors: The maximum number of times a specific task can report an error before that task is marked as Failed. • Automatically delete corrupted jobs from the Repository: If enabled, corrupted jobs will automatically be deleted from the Repository • Send a warning after a Slave has generated this many errors in one session: The maximum number of times a slave can report an error in one session before an email is sent to the corresponding email address in the Email Setup notification settings. • Mark a Slave as Bad after it has generated this many errors for a job in a row: The number of consecutive times a slave can error on a job before it marks itself as bad for that job. • Frequency at which a Slave will attempt a job that it has been marked bad for: A percentage (0 - 100) that determines how often a Slave will try to render a task for a job that it has been marked as bad for if no good jobs are available.

134 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

Auxiliary Files • Store job auxiliary file in a different location: If enabled, auxiliary files that are submitted with the job will be stored in an alternate location to save space and reduce load on the repository machine.

Extra Properties • Extra arbitrary properties can be submitted with a job, and these properties can be given user friendly names so

4.1. Repository Options 135 Deadline User Manual, Release 5.2.49424

that they can easily be identified and used to filter and sort jobs in the Monitor.

4.1.10 Application Logging

• Delete Monitor logs after this many days: Number of days to keep Monitor logs before deleting them. • Delete Slave logs after this many days: Number of days to keep Slave logs before deleting them. • Delete Pulse logs after this many days: Number of days to keep Pulse logs before deleting them. • Slave Verbose Logging: Enable this option to have the Slave print out more information to its log while it’s running. • Pulse Verbose Logging: Enable this option to have Pulse print out more information to its log while it’s running.

136 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.11 Statistics Gathering

General • Enable Statistics Gathering: Enable statistics gathering in Deadline. • Slave Statistics Gathering Interval: How often Slave Statistics are gathered by Pulse. • Repository Statistics Gathering Interval: “How often Repository Statistics are gathered by Pulse. • Delete job statistics after this many days: Delete job statistics after the specified period. • Delete Slave statistics after this many days: Delete Slave statistics after the specified period. • Delete Repository statistics after this many days: Delete Repository statistics after the specified period.

4.1. Repository Options 137 Deadline User Manual, Release 5.2.49424

Database • Enable Database Statistics Gathering: Enable to have Deadline store statistics in a database. • Server Name: The host name or IP address of the database server. • Port: The database port number. • User Name: The database user that Deadline will log in as to enter statistics. When Postgres is first installed, the default user name is ‘postgres’. • Password: The password for the database user. • Database: Name of the database schema. When Postgres is first installed, the default database name is ‘postgres’. • Create Database: Connects to the specified database and creates the necessary tables that Deadline uses to store statistics. This will fail if the database already contains the necessary tables. • Update Database: Connects to the specified database and updates the tables it to ensure they’re compatible with the current version of Deadline. If the update can’t be done automatically, you will be prompted for a file that contains the SQL to perform the update. These will be made available for download as required. • Test Connection: Tests the connection to the specified database.

138 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.12 Mapped Paths

When using a mixed render farm, it is all but guaranteed that asset paths will be different each on operating system. In many cases, Deadline is aware of the paths being passed to the rendering application, so you can configure Path Mappings to swap out paths when appropriate based on the operating system. See the Cross Platform Rendering documentation for more information. Note that the ordering of the path mappings can be a factor. For example, of you want to remap /Volumes/Assets/ and /Assets/, make sure to list /Volumes/Assets/ first, or else /Assets/ will match anything that /Volumes/Assets/ would have matched.

4.1. Repository Options 139 Deadline User Manual, Release 5.2.49424

4.1.13 Mapped Drives

If your pipeline uses mapped drives on your Windows machines for network shares, you can configure Deadline to automatically map these drives before a Slave begins rendering. This is especially useful if Deadline is running as a service on your Slaves, as they may not be able to access these drives otherwise.

140 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

To add a new Mapped Drive, just click the Add button. Here you specify the driver letter you want to map to, and the path that needs to be mapped. You can also specify the credentials if required.

4.1.14 Script Menus

There are many scripts that ship with Deadline, and it’s more than likely that you don’t need to use them all, especially the submission scripts. Here, you can configure the contents of the individual script menus to only display what you use. Note though that these settings will affect all Monitors that connect to this Repository.

4.1.15 Remoting Software

Support for the following remoting software is integrated into the Deadline Monitor. See the Remote Control and Access documentation for more information.

4.1. Repository Options 141 Deadline User Manual, Release 5.2.49424

VNC • Allow VNC connections from the Monitor: If enabled, VNC connections can be made from the Monitor to connect to remote machines. • Viewer Executable: The local path(s) to the VNC Viewer executable on the client machines. Specify one path per line, and Deadline will use the first path that exists. • Port: The VNC server listening port. • Password: The VNC password. • Viewer Command Line Arguments: Command line arguments to be used when running the VNC viewer on the different operating systems.

Radmin • Allow Radmin connections from the Monitor: If enabled, Radmin connections can be made from the Monitor to connect to remote machines. • Viewer Executable: The local path(s) to the Radmin Viewer executable on the client machines. Specify one path per line, and Deadline will use the first path that exists. • Port: The Radmin server listening port.

142 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

RDC • Allow RDC connections from the Monitor: If enabled, RDC connections can be made from the Monitor to connect to remote machines. • Settings Directory: Where the Remote Desktop Connection settings files should be stored. If you are uncon- cerned about security you could specify a shared network path. Note that this value is ignored if using a Settings File Name instead. • Settings File Name: The path to the RDC settings (*.rdp) to always use when connecting. If left blank, the RDC Settings Storage Directory will be used instead. • RDC Executable: Optionally specify the path to the Remote Desktop Connection executable. If left blank, the executable in the Windows system path will be used.

4.1. Repository Options 143 Deadline User Manual, Release 5.2.49424

ARD • Allow ARD connections from the Monitor: If enabled, ARD connections can be made from the Monitor to connect to remote machines.

144 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.1.16 Wake On Lan Settings

Deadline’s Power Management uses Wake On Lan to wake up machines, and you can configure which port(s) the WOL packet is sent over. If no ports are listed here, Deadline will use port 9 by default.

4.2 Network Performance Guide

4.2.1 Overview

This guide is intended to help you find and fix bottlenecks in your Deadline render farm. If you are noticing slow network performance when you are using Deadline, there are a few things you can do to try and improve it.

4.2.2 Adjust Slave Settings

There are a few Slave settings in the Repository Options that you can tweak to help improve performance.

4.2. Network Performance Guide 145 Deadline User Manual, Release 5.2.49424

The settings to tweak are under Wait Times: • Number of seconds between Repository queries (RQ): The number of seconds a slave that has not connected to Pulse will wait between queries to the repository when it is idle. • Number of seconds between queries for new Tasks (TQ): The number of seconds a slave that has not connected to Pulse will wait after it has completed a task before it tries to query for another. As a general rule of thumb, we suggest setting the RQ to the number of slaves you have, divided by 2. For example, if you have 100 slaves, set the value to 50. We then suggest setting the TQ to the RQ divided by 10. So in this example, set the value to 5. Now that you have a good starting point, you can adjust these values as necessary to try and improve performance.

4.2.3 Use Deadline Pulse

If you have more than 50 render nodes in your farm, or are still experiencing performance issues after adjusting the Slave settings, we recommend that you run the Deadline Pulse application. Pulse is a server application that acts as a proxy between the Deadline applications and the Repository, which helps to reduce the load on your network and improve Deadline’s overall performance. Note that if the Pulse application goes down for any reason, the Deadline applications will revert back to scanning the Repository themselves. Whether you decide to run Pulse or not, you will still benefit from Deadline’s robustness. To configure and run Deadline Pulse, see the Deadline Pulse documentation.

146 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

Once you have installed and configured Pulse, all you need to do is launch the Pulse application on the appropriate machine. Pulse will start showing how many slaves are connecting to it and how many it is servicing. If the slaves don’t start connecting to it right away, it may be possible that they haven’t recognized the changes you made in the Repository Options yet. You can simply restart the Slave applications to get them to recognize the new changes immediately. If the slaves still have difficulty connecting to Pulse, check if there is any firewall or security software on the Pulse machine that is interfering with the communication. If there is, you may need to add an exception for Pulse and the port that it is communicating over before the slaves can successfully connect to it.

4.2. Network Performance Guide 147 Deadline User Manual, Release 5.2.49424

4.2.4 Enable Throttling

Pulse supports a Throttling feature, which is helpful if you’re submitting large files with your jobs. This can be used to limit the number of Slaves that are copying over the job files at a time. The Throttling settings can be found in the Pulse Settings section of the Repository Options.

For example, if you have 100 slaves, and you’re submitting 500mb scene files with your jobs, you may notice a performance hit if all 100 slaves try to copy over the job files at the same time. You could set the Slave Throttle Limit to 10 so that only 10 slaves at a time will ever be copying over those files. Note that a Slave only copies over the job files when it starts up a new job. When it goes to render subsequent tasks for the same job, it will not be affected by the throttling feature. As a rule of thumb, we suggest setting the Slave Throttle Wait Interval to the same value as the Job Scan Interval in the General Pulse Settings.

4.2.5 Manage Job Auxiliary Files

If you are submitting your scene files with the jobs, this can affect overall performance if the scene files are quite large. This is because whenever a Slave starts a new job, it copies those job files locally before rendering (including the scene file). If you have 200 machines starting a job with a 500MB scene file, and your Repository machine hardware isn’t built to handle a large load, your performance will suffer. If enabling Throttling isn’t helping, another option (which can be used in conjunction with Throttling if you wish) is to configure Deadline to store these scene files in alternate location (like a separate file server). This can be done by configuring the Job Auxiliary Files settings in the Repository Options.

148 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

You can choose a server that’s better equipped to handle the load, which will help improve the performance and stability of your Repository machine. In a mixed farm environment, you need to ensure that the paths for each operating system resolve to the same location. Otherwise, a scene file submitted with the job on one operating system will not be visible to a slave running on another.

4.2.6 Evaluate Repository Hardware

Download and read the Scaling Whitepaper from the Miscellaneous Deadline Downloads Page. This is a guide for setting up and configuring your network to get the best performance out of your render farm. It contains a section on hardware considerations to help ensure your Repository machine meets the current and future demands of your render farm.

4.3 Job Scheduling

4.3.1 How A Job Is Selected For A Slave

By default, a job is selected for a slave based on the following properties in this order: 1. The Group and Pool that the job is submitted to: • A slave will only select a job if it has been assigned to the group and pool that the job belongs to. • Pools are priority based, so everything else being equal, a job submitted to a pool with the highest priority will be chosen first when a slave is selecting its next job. • Groups are not priority based, and are just used to ensure that jobs render on machines with the correct hardware and software configurations. 2. The Priority of the job:

4.3. Job Scheduling 149 Deadline User Manual, Release 5.2.49424

• A job can have a numeric priority ranging from 0 to 100, where 0 is the lowest priority and 100 is the highest priority. • Everything else being equal, a job with the highest priority will always be chosen first when a slave is selecting its next job. 3. The Date and Time the job is submitted: • This is set automatically and is the timestamp of when the job was submitted to Deadline. • Everything else being equal, an older job will take priority over a newer job when a slave is selecting its next job. 4. The job’s Limits and Machine Limit: • With Limits, if a job has the highest priority, but requires a Limit that is maxed out, a slave will try to select a job with the next highest priority. • A Machine Limit is essentially a special Limit, except that the limit restricts the number of machines that can render that particular job at a time.

4.3.2 Changing The Scheduling Order

It is possible to change the order in which jobs are scheduled in the Job Settings section of the Repository Options.

The following options are available: • Date_Pool_Priority: This represents a First In First Out (FIFO) scheduling system. Since it is rare for two jobs to be submitted at exactly the same time, the job’s pool and priority will likely never affect how the job is scheduled. • Date_Priority_Pool: Because it is rare for two jobs to be submitted at exactly the same time, this will work the same as Date_Pool_Priority, and is simply included for completeness. • Pool_Priority_Date: This is the default scheduling order that is used.

150 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

• Pool_Date_Priority: Since it is rare for two jobs to be submitted at exactly the same time, only the job’s pool and submission date/time will affect how the job is scheduled. • Priority_Date_Pool: Since it is rare for two jobs to be submitted at exactly the same time, only the job’s priority and submission date/time will affect how the job is scheduled. • Priority_Pool_Date: Similar to the default scheduling order, except that the job’s priority takes precedence over its pool.

4.4 Failure Detection

4.4.1 Overview

Job Failure Detection can be used prevent problematic jobs from wasting precious render time on the farm. There are two types of failure detection, which are explained below. By default, jobs will fail after they have accumulated 100 errors, but this can be changed in the Job Settings in the Repository Options.

4.4.2 Job Failure Detection

A job will enter the Failed state when it has accumulated the maximum number of errors that are permitted. Once in the failed state, the job will no longer be picked up by slaves for rendering without manual intervention. Because of this, job failure detection can help ensure that problematic jobs are flagged appropriately and therefore won’t waste precious rendering time. In the Repository Options, you can setup failure settings for an entire job, or for individual tasks.

4.4. Failure Detection 151 Deadline User Manual, Release 5.2.49424

If you’ve resolved the problem that was causing the job to fail, you can right-click on it in the Monitor and select Resume Failed Job. You will be prompted with the option to ignore failed job and task detection going forward.

If you choose not to ignore failure detection, make sure to clear the job’s errors, or a new error will result in the job failing again because its error limit is still over the maximum. To clear a job’s errors, right-click on it and select Job Reports -> Clear Error Reports.

4.4.3 Slave Failure Detection

Slave failure detection works a little differently than job failure detection. Basically, if a particular slave reports consecutive errors for a job, it will add itself to the job’s bad slave list. When a slave is on a job’s bad list, it won’t try to render that job again until all good jobs in the queue have finished. This helps ensure that one or two problematic slaves won’t continue reporting errors for jobs they likely are unable to render. Once the problem has been resolved, you can remove a slave from a job’s bad list by right-clicking on the job in the Monitor and selecting View Bad Slaves. You can also choose to have your job ignore bad slave detection if you wish.

152 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.5 Slave Settings

4.5.1 Overview

The slaves can be configured from the Monitor while in Super User Mode by right-clicking on one or more of them and selecting Modify Slave Settings. You can also configure the Pools and Groups for a slave from the right-click menu, but for more flexibility, we recommend using the Tools menu to manage Pools and Groups as explained in the Pools and Groups documentation.

The only settings that have an actual impact on rendering are the Concurrent Tasks and CPU Affinity settings. Note that CPU Affinity is only supported on Windows and Linux, because the OSX operating system doesn’t support process affinity.

4.5.2 Slave Settings

The settings you can change are: • Slave Description: The description of the slave. This can be used to provide some brief details about the slave, such as certain System information. • Slave Comment: A short comment regarding the slave. This can be used to inform other users why this slave has been assigned to a different repository path, why it’s excluded from a certain pool, etc. • Exclude Jobs In The ‘none’ Pool: Enable this option to prevent the slave from picking up jobs that are assigned to the ‘none’ pool. • Exclude Jobs In The ‘none’ Group: Enable this option to prevent the slave from picking up jobs that are assigned to the ‘none’ group. • Normalized Render Time Multiplier: This value is used to determine the normalized render time of tasks. For example, a slave that takes twice as long to render a task should have a multiplier of 2. • Normalized Task Timeout Multiplier: This value is used to determine the normalized render time of task time- outs. For example, a slave that takes twice as long to render a task should have a multiplier of 2.

4.5. Slave Settings 153 Deadline User Manual, Release 5.2.49424

• Concurrent Task Limit Override: The concurrent task limit for the slave. If 0, the slave’s CPU count is used as the limit. • Override CPU Affinity: Enable this option to override which CPUs the slave and its child processes are limited to (Windows and Linux only). – Select Individual CPUs To Use: Choose this option to explicitly pick which CPUs are used. This is useful if you are running multiple slaves on the same machine and you want to give them their own specific CPUs. – Number Of CPUs To use: Choose this option if you want to limit the number of CPUs used, and you aren’t concerned with which specific CPUs are actually used.

4.6 Pools and Groups

4.6.1 What Are Pools and Groups

Groups can be used to organize your farm based on machine configurations (specs, installed software, etc). For example, if you have a 64 bit machine with 3ds Max installed, you could assign it to groups like 3dsmax, or 3dsmax_64, or simply 3D. The Groups have no impact on the order in which jobs are rendered, they just help to ensure that your job renders on the machines you want it to. If you don’t care about grouping your machines, just use the default none group. Pools are similar to groups, except that they are priority based and affect the order in which jobs are rendered. Because of this, it’s encouraged to use pools for prioritizing shows, shots, etc. If you don’t want to set up pools on your farm, you can use the default ‘none’ pool. Note that the ‘none’ pool always has the least priority of all the pools.

4.6.2 Managing Pools and Groups

Groups and pools can be managed from the Deadline Monitor while in Super User mode. Just select Tools -> Manage Groups or Tools -> Manage Pools to open the appropriate dialog. Here, you will find two tabs.

Manage Pools and Manage Groups Tab

From this tab you can add and remove pools or groups. You can also see which Slaves are in which groups or pools. Additionally, the Manage Pools tab will display a list of slaves that have the currently selected pool configured as their highest priority pool.

154 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

Manage Slaves and Manage Groups Tab

From this tab you can add and remove slaves to pools or groups.

4.6. Pools and Groups 155 Deadline User Manual, Release 5.2.49424

• Pools/Groups Filter list: Filters the “Select Slaves to Manage” list by the selected pools/groups. Two options affect the way the filter behaves: – Show/Hide: Whether the slaves belonging to the selected pools/groups are the ones to being or the ones being filtered out. – OR/AND/XOR: Defines how to filter if multiple pools/groups are selected.

* OR: Filter by slaves in any one of the selected pools/groups. * AND: Filter by slaves that are in all of the selected pools/groups. * XOR: Filter by slaves in any one of the selected pools/groups but no others. • Select Slaves to Manage: Here you select the slave(s) that you would like to manage. • Operations: A group of operations that can be performed using the selected slaves and selected pools/groups. More operations are provided for pools that allow you to change their priority. Groups don’t need these opera- tions because they are not priority based.

Per Slave Modify Pools and Modify Groups Dialogs

Optionally, you can use the slave specific Modify Pools and Modify Groups dialogs to assign pools or groups to slaves. Right-click on one or more Slaves in the Slaves list in the Monitor while in Super User Mode and select Modify Pools or Modify Groups.

156 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

In the pools window, you can assign pools to a Slave in order of priority. For groups, the ordering has no affect.

Preventing Slaves From Rendering Jobs In The ‘none’ Pool or Group

In some cases, it may be useful to prevent one or more slaves from rendering jobs that are assigned to the ‘none’ pool or group. For example, you may have a single machine that you want to only render Quicktime jobs. Normally, you could add this machine to a ‘quicktime’ group, but if there are no Quicktime jobs, the slave could move on to jobs in

4.6. Pools and Groups 157 Deadline User Manual, Release 5.2.49424 the ‘none’ group. If you want this machine to only be available for Quicktime jobs, you can configure it to exclude jobs in the ‘none’ group. The option to exclude jobs in the ‘none’ pool or group can be found in the Slave Settings in the Monitor.

4.6.3 Pools and Job Scheduling

How pools affect the job selection process is best explained through an example. Say we need to render jobs for two shows, and we’ve already created corresponding pools for each show in Deadline: • show_a • show_b Now say we have 10 machines in our render farm, and we want to give each show top priority on half the farm, but we don’t want half the farm sitting idle when jobs for one show finish up. First, we’ll assign the pools to our slaves in the following order: • Slaves 0-4: 1. show_a • Slaves 5-9: 1. show_b If jobs for both shows are in the queue, then slaves 0-4 will give priority to show_a jobs, and slaves 5-9 will give priority to show_b jobs. This accomplishes our first goal of giving priority to both shows. However, with this configuration, slaves 0-4 will sit idle when there are no more show_a jobs. The same for slaves 5-9 when there are no show_b jobs. To accomplish our second goal of not having half the farm sit idle, we’ll assign the pools to our slaves in the following order: • Slaves 0-4: 1. show_a 2. show_b • Slaves 5-9: 1. show_b 2. show_a Now, slaves 0-4 will give still give top priority to show_a jobs, and slaves 5-9 will still give top priority to show_b jobs. However, if show_a jobs finish up, slaves 0-4 will then start working on show_b jobs. Also, if show_b jobs finish up, slaves 5-9 will then start working on show_a jobs. If all slaves are working on show_b jobs, and new show_a jobs get submitted, then slaves 0-4 will finish up their current task and move on to give the show_a jobs priority again. Note that all slaves will render jobs that are submitting to the none pool. However, the slaves will only give priority to none jobs when jobs for all their assigned pools have finished rendering.

158 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

4.7 Limits and Job Machine Limits

4.7.1 Overview

In order to support rendering applications that use floating licensing to limit the number of clients rendering at a time, Deadline supports the ability to create Limits to manage this restriction. When creating a Limit, be sure to set the limit to the number of network licenses you have for that product. For example, if you have 20 nodes in your render farm and only 10 licenses of Fusion, you can create a Fusion Limit with a limit of 10. When you submit a Fusion job to Deadline, be sure to specify the Fusion Limit. During rendering, Deadline will ensure that no more than 10 machines will be rendering jobs with the Fusion Limit at any given time. Because of this, you never have to worry about licensing issues. Machine Limits are like a special type of Limit. Instead of limiting how many slaves can render a group of jobs, they limit the number of slaves that can render one particular job. This is useful if you want to render a bunch of jobs simultaneously.

4.7.2 Job Machine Limits

Machine Limits are a per-job option, and can be managed by right-clicking on a job in the Deadline Monitor and selecting Modify Machine Limit. This brings up the Job Properties window with the Machine Limit tab selected.

You can modify the following options for the machine limit: • Number Of Machines That Can Render This Job Concurrently: The number of slaves that can render this job at one time. • Release Machine Limit Stub When Task Progress Reaches: If enabled, you can have a slave release the machine limit stub when the current task it’s rendering reaches the specified progress. Note that not all plug-ins report task progress, in which case the machine limit stub will not be released until the task finishes rendering. • Whitelisted/Blacklisted Slaves: If slaves are on a blacklist, they will never try to render this job. If slaves are on a whitelist, only those slaves will try to render this job.

4.7. Limits and Job Machine Limits 159 Deadline User Manual, Release 5.2.49424

4.7.3 Limits

Limits can be managed from the Limit list in the Deadline Monitor while in Super User mode. This list shows all the Limits that are in your Repository. It also displays useful information about each Limit such as its name, its limit, and the number of Limit stubs that are currently in use. You can access many options for the Limit, which are listed below, by right-clicking on them.

New Limit

Use this option to add a new Limit to your Repository.

You can modify the following settings for the new Limit:

160 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

• Name: The name of the new Limit. • Limit: The number of slaves that can use this Limit at one time. • Release At Task Progress: If enabled, you can have a slave release the Limit when the current task it’s rendering reaches the specified progress. Note that not all plug-ins report task progress. • Whitelisted/Blacklisted Slaves: If slaves are on a blacklist, they will never try to render jobs submitted to the Limit. If slaves are on a whitelist, only those slaves will try to render jobs submitted to the Limit. • Slaves That Don’t Add To The Limit: These slaves will ignore this Limit when searching for a job. This is useful if you are juggling floating and node locked licenses, in which case your machines with node locked licenses should be placed on this list.

Edit Limit

Edit the settings for an existing Limit.

You can modify the following options for the existing Limit: • Limit: The number of slaves that can use this Limit at one time. • Release At Task Progress: If enabled, you can have a slave release the Limit when the current task it’s rendering reaches the specified progress. Note that not all plug-ins report task progress. • Whitelisted/Blacklisted Slaves: If slaves are on a blacklist, they will never try to render jobs submitted to the Limit. If slaves are on a whitelist, only those slaves will try to render jobs submitted to the Limit. • Slaves That Don’t Add To The Limit: These slaves will ignore this Limit when searching for a job. This is useful if you are juggling floating and node locked licenses, in which case your machines with node locked licenses should be placed on this list list.

4.7. Limits and Job Machine Limits 161 Deadline User Manual, Release 5.2.49424

Clone Limit

Use the previous settings of an existing Limit to create a new one.

You can modify the following options for the new Limit: • Name: The name of the new Limit (cannot be the same as the original). • Limit: The number of slaves that can use this Limit at one time. • Release At Task Progress: If enabled, you can have a slave release the Limit when the current task it’s rendering reaches the specified progress. Note that not all plug-ins report task progress. • Witelisted/Blacklisted Slaves: If slaves are on a blacklist, they will never try to render jobs submitted to the Limit. If slaves are on a whitelist, only those slaves will try to render jobs submitted to the Limit. • Slaves That Don’t Add To The Limit: These slaves will ignore this Limit when searching for a job. This is useful if you are juggling floating and node locked licenses, in which case your machines with node locked licenses should be placed on this list.

Delete Limit

Remove an existing Limit from your Repository.

Reset Limit Usage Count

Sometimes a Limit stub will get orphaned, meaning that it is contributing to the usage count, but no machine is actually using it. After a while, Deadline will eventually clean up these orphaned Limit stubs. This option provides the means

162 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424 to delete all existing stubs immediately (whether they are orphaned or not), which will require machines to acquire them again.

4.8 User Management

4.8.1 Overview

Deadline has its own user system, which is primarily used to tie users to jobs. By default, users cannot control or modify the settings of another user’s job.

4.8.2 User Settings

Each user can configure their user settings from the Deadline Monitor by selecting Tools -> Options.

User Settings • Authentication Settings – Web Service Password: Password for the user to authenticate with the Pulse Web Service if authentication has been enabled and empty passwords are not allowed. • Growl Settings: – Growl Password: Password used for Growl notifications. – Growl Sticky Notifications: Whether or not Growl notifications remain on the screen until clicked. • Notification Settings: – Email Address: Address where job notifications (if the job completed or failed) will be emailed to. – Email Notification: Receive email notifications for your jobs when they complete, fail, or timeout. – Growl Notification: Receive Growl notifications for your jobs when they complete, fail, or timeout. – Machine: machine that the user works at (for Netsend and Growl notifications). – Netsend Notification: Receive Netsend notifications for your jobs when they complete, fail, or timeout.

4.8. User Management 163 Deadline User Manual, Release 5.2.49424

4.8.3 User Management

Administrators can manage the Deadline users from the Deadline Monitor while Super User Mode by selecting Tools -> Manage Users.

You can add or remove Deadline users and edit their user settings. You can also specify if a user is a Normal or Power user. By default, Power users have the ability to control jobs for all users, and perform some administrative actions that Normal users do not have access to. You can also configure the User Security settings (see below) to control what actions Normal and Power users can perform.

4.8.4 User Security

User Security settings can be configured in the Repository Options.

By default, Deadline does not enforce Enhanced User Security. This means that a user can switch to another Deadline user and edit someone else’s jobs. For some pipelines, this “honor system” will work fine, but for those looking for more security, you should enable Enhanced User Security so that it uses the system user as the Deadline user. When this option is enabled, users will not be able to switch to another Deadline user unless they log off their system and log back in as someone else.

164 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

For even stricter security, you can disable the ability to allow normal uses to see the jobs of other users in the Monitor. Note that this only affects Normal Users, so Power Users and Super Users can still see everyone’s jobs. Finally, each item in the Menu Item Permissions list represents a Menu Item that is available in the Monitor, and each item in the Job Property Permission list represents a job properties in the Modify Job Properties dialog. Simply place a check mark beside each item that you want Normal and Power users to have access to.

4.9 Notifications

4.9.1 Overview

Deadline can be configured to notify users when their jobs finish or if they have failed. In addition, Deadline can be configured to send notifications to administrators when certain events occur on the farm (like when a Slave has become stalled, or if a Slave is being shutdown by Power Management).

4.9.2 Email Notifications

Before Deadline can send email notifications, you need to configure the Email Notification settings in the Repository Options.

You can also configure Deadline to send emails to one or more recipients when certain events happen, like a job finishing or a slave stalling. For multiple recipients, just use a comma to separate email addresses.

4.9. Notifications 165 Deadline User Manual, Release 5.2.49424

4.9.3 Job Notifications

Users can edit their user settings to control whether or not they receive notifications for their jobs. They can choose to be notified by email, netsend, or Growl.

To receive email notifications, the user just needs to set the Email Address setting and enable the Email Notification option. Note that email notifications will only be sent if the SMTP settings in the Repository Options are set properly. To receive netsend messages, the user just needs to set the Machine setting to their workstation’s host name or IP address and enable the Netsend Notification option. Note that these messages are sent to the Deadline Launcher appli- cation on the specified machine, so they need to ensure the Launcher is running in order to receive these notifications. To receive Growl messages, the user needs to have Growl installed (there are versions for OSX and Windows). Then they just need to set the Machine setting to their workstation’s host name or IP address and enable the Growl Notifica-

166 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424 tion option. Finally, they can configure their Growl Settings: • Growl Password: Password used for Growl notifications (if required by the Growl installation on the receiving machine). • Growl Sticky Notifications: Whether or not Growl notifications remain on the screen until clicked.

4.10 Remote Control and Access

4.10.1 Overview

There are remote control and access features that are built into the Deadline Monitor to make farm administration easier.

4.10.2 Remote Control

Remote control allows you to control the Slave or Pulse application from another machine. In the Monitor while in Super User Mode, you can right-click on any slave or pulse in their respective lists to access the Remote Control options. If you are not in Super User Mode, these Remote Control options are only available if you are right-clicking on the Slave that runs on your machine.

The available options in the Slaves list are:

4.10. Remote Control and Access 167 Deadline User Manual, Release 5.2.49424

• Force the Slave application to search for a job immediately if it is sitting idle. • Force the Slave application to cancel any tasks it is currently working on. • Start/Stop/Restart the Deadline Slave application. • Start/Restart/Shutdown the remote machine the Deadline Client is running on. Note that starting a remote machine requires that Wake On Lan be setup properly. • Stop/Restart the Deadline Slave application after it finishes its last task. • Shutdown/Restart the machine after the Slave application finishes its last task. • Create/Remove Slave Instances on the machine (if you plan on running more than one Slave on the same machine). • Execute an arbitrary command on the remote machine. The available options in the Pulse list are: • Start/Stop/Restart the Deadline Pulse application. • Start/Restart/Shutdown the remote machine the Pulse is running on. Note that starting a remote machine requires that WakeOnLan be setup properly. • Execute an arbitrary command on the remote machine. When executing an arbitrary command, if you want to execute a DOS command on a Windows machine, the command must be preceded with “cmd /C”. This opens the DOS prompt, executes the command, and closes the prompt. For example: cmd /C echo "foo" > c:\test.txt

4.10.3 Remote Access

There are many applications which allows you to remotely control another computer. The following integrate seam- lessly with Deadline, which allows for effortless remote access to desktops across your render farm. The settings for the following remote software can be configured in the Remoting Software section of the Repository Options.

168 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

Virtual Network Computing (VNC)

Virtual Network Computing (VNC) is a desktop protocol to remotely control another computer. It transmits the key- board presses and mouse clicks from one computer to another relaying the screen updates back in the other direction, over a network. There are many options available for VNC software. TightVNC, RealVNC, UltraVNC, and Chicken of the VNC have all been used successfully with Deadline. Once VNC has been configured in the Repository Options, you can remote into a slave from the Monitor by right- clicking on it in the slave list and selecting Connect by VNC.

Remote Desktop Connection (RDC)

With Remote Desktop Connection (RDC), you can easily connect to a terminal server or to another computer running Windows. All you need is network access and permissions to connect to the other computer. Once RDC has been configured in the Repository Options, you can remote into a slave from the Monitor by right- clicking on it in the slave list and selecting Connect by RDC.

Apple Remote Desktop (ARD)

With Apple Remote Desktop (ARD), you can observe and obtain access to the computers on your network. Note that in order to connect to a machine from the Monitor, that machine must already be in the ARD list of computers because Deadline can’t create new computer entries and add them to the list. An error message is displayed if the machine can’t be found in the ARD list. Once ARD has been configured in the Repository Options, you can remote into a slave from the Monitor by right- clicking on it in the slave list and selecting Connect by ARD.

Radmin

Radmin is fast, secure and affordable remote-control software that enables you to work on a remote computer in real time as if you were sitting in front of it. Once Radmin has been configured in the Repository Options, you can remote into a slave from the Monitor by right- clicking on it in the slave list and selecting Connect by Radmin.

4.11 Cross Platform Rendering

4.11.1 Overview

Many of the applications that Deadline supports are available for multiple operating systems, and if you have a mixed network, you will probably run into one or more of these scenarios: • You want to submit jobs from one operating system and render on another. • You want jobs to render on machines with different operating systems. Both of these can be achieved, thanks to Deadline’s Path Mapping feature. While there may be other considerations to take into account depending on the application you’re rendering with, the Path Mapping feature will do most of the work for you.

4.11. Cross Platform Rendering 169 Deadline User Manual, Release 5.2.49424

4.11.2 Mapped Path Setup

When using a mixed render farm, it is all but guaranteed that asset paths will be different each on operating system. In many cases, Deadline is aware of the paths being passed to the rendering application, so you can configure Path Mappings to swap out these paths when appropriate based on the operating system.

To add a new Path Mapping, just click the Add button. Here you specify the path that needs to be swapped out, along with the paths that will be swapped in based on the operating system. For best results, make sure that all paths end with their respective path separator. This helps avoid mangled paths that are a result of one path with a trailing separator and one without.

Note that these swaps only work one-way, so if you are swapping from PC to Linux, and vice versa, you will need two entries. For example, the PC machines use the path \\server\share for assets and the Linux machines use the path /mnt/share. Here are what your two entries should look like: • Entry 1 (replaces the Linux path with the PC path on PCs): Replace Path: /mnt/share/ Windows Path: \\server\share\ Linux Path: Mac Path:

170 Chapter 4. Repository Configuration Deadline User Manual, Release 5.2.49424

• Entry 2 (replaces the PC path with the Linux path on Linux): Replace Path: \\server\share\ Windows Path: Linux Path: /mnt/share/ Mac Path:

If you have Mac machines as well, you will need three entries. For example, if the Macs use /Volumes/share, here are what your three entries should look like: • Entry 1 (replaces the Linux path with the PC path on PCs and the Mac path on Macs): Replace Path: /mnt/share/ Windows Path: \\server\share\ Linux Path: Mac Path: /Volumes/share/

• Entry 2 (replaces the PC path with the Linux path on Linux and the Mac path on Macs): Replace Path: \\server\share\ Windows Path: Linux Path: /mnt/share/ Mac Path: /Volumes/share/

• Entry 3 (replaces the Mac path with the PC path on PCs and the Linux path on Linux): Replace Path: /Volumes/share/ Windows Path: \\server\share\ Linux Path: /mnt/share/ Mac Path:

By default, Deadline just uses regular string replacement to swap out the paths. In this case, Deadline takes care of the path separators ‘/’ and ‘\’ automatically. If you want more flexibility, you can configure your path mappings to use regular expressions, but note that you will need to handle the path separators manually using ‘[/\\]’ in your regular expressions.

4.11.3 Application Specific Considerations

For some applications, like Maya and Nuke, configuring Path Mappings is enough to allow for cross platform render- ing. For other applications, like After Effects, more setup is required. More information on how to render with these applications on mixed farms can be found in their Cross-Platform Rendering Considerations sections in the Deadline Plug-ins documentation.

4.11. Cross Platform Rendering 171 Deadline User Manual, Release 5.2.49424

172 Chapter 4. Repository Configuration CHAPTER FIVE

ADVANCED FEATURES

5.1 Auto Configuration

5.1.1 Overview

Auto Configuration allows you to configure your Slaves from a single location. Settings that can be controlled this way include the repository path, license server, launch slave at startup, and the local slave data folder. When a Slave starts up, it will automatically pull this configuration from Pulse, save it to its local configuration, and then apply it before initializing. Because the Slave gets this information from Pulse, you must have Pulse running for this to work. If the Slave cannot connect to Pulse, it will use its local configuration as normal. To configure and run Deadline Pulse, see the Deadline Pulse documentation.

5.1.2 Rulesets

You can set up Slave Configuration Rulesets from the Auto Configuration section of the Repository Options. If you want to configure groups of Slaves differently from others, you can add multiple Rulesets. This is useful if you

173 Deadline User Manual, Release 5.2.49424 have more than one Repository on your network, or if you want to configure your render nodes differently than your workstations. New Rulesets can be added by pressing the Add button. You can give the Rulset a name, and then choose a Slave Filter method to control which Slaves will use this Ruleset. There are currently three types of Slave Filters: • Hostname Regex: You can use regular expressions to match a Slave’s host name. If your Slaves are using IPv6, this is probably the preferred method to use. Note that this is case-sensitive. Example: – .*host.* will match hostnames containing the word ‘host’ in lower case – host.* will match hostnames starting with ‘host’ – Host.* will match starting with ‘Host’ • IP Regex: You can use regular expressions to match a Slave’s IP address. This works with both IPv4 and IPv6 addresses. – 192\.168\..* will match IPv4 addresses not transported inside IPv6 starting with “192.168” – [:fF]*192\.168\. should match IPv4 address even if within IPv6 starting with “192.168” • IPv4 Match: You can specify specific IP addresses, or a range of IP addresses (by using wildcards or ranges). Note that this only works with IPv4. Do not use this for IPv6 addresses. Here are some examples: – 192.168.0.1-150 – 192.168.0.151-255 – 192.168.*.* Configurations are generated starting from the top rule working down one by one. When there is a match for the requesting Slave, any properties in the rule which are not marked as ‘(Inherited)’ will override a previous setting. By default, Slaves will use their local configuration for any property which is not set by a rule. Based on the example here, all slaves starting with the name ‘Render-‘ and ending with a whole number will use the same Repository Path and launch the Slave at startup, while the ‘Default’ rule above it matches all Slaves and sets their license server.

174 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

The available options are: • License Server: The Deadline license server setting. Use the format ‘@server‘, or if you have configured your license file to use a specific port, use ‘port@server‘. • Launch Slave At Startup: Whether or not the slave should automatically launch when the Launcher starts up. • Repository Path: This is the path to the Repository that the slave will connect to. You can specify a different path for each operating system. • Slave’s Local Data Path: The local path where the Slave temporarily stores plugin and job data from the Repos- itory during rendering. Note that this should be a local path to avoid conflicts. You can specify a different path for each operating system.

5.2 Multiple Slaves On One Machine

5.2.1 Overview

Deadline 5.1 introduced the ability to launch and configure an arbitrary number of Slaves on a single machine. Each Slave instance can be given a unique name, and can be assigned its own list of pools and groups, which allows Slaves to work on separate jobs. Now a single high performance machine can process multiple 3D, compositing, and simulation jobs simultaneously.

5.2.2 Licensing

Each Slave instance uses a license, so if you are running 4 Slaves on one machine, you will need 4 licenses. Note that this does not affect a Slave’s ability to render up to 16 concurrent tasks for the same job, so it’s possible to have 4 x 16 = 64 concurrent tasks rendering with just 4 licenses!

5.2.3 Adding and Running Slaves

Launching new Slave instances on a machine is easy. If you want to launch new Slaves on your current machine, you can do so from the Launcher by selecting Launch Slave By Name -> New Slave Instance. You can also launch new Slaves from the command line using the -name argument: deadlineslave -name "myslave"

If you want to launch new Slaves on a remote machine, you can do so from the Monitor while in Super User Mode by right-clicking on the appropriate machine in the Slave List and selecting Remote Control -> Start New Slave Instance. In both cases, you’ll be prompted to enter the Slave’s name. After you enter the new Slave’s name, press OK to launch the Slave.

Once the new Slave shows up in the Slave List in the Monitor, you can configure it like any other Slave. Use the Slave Settings to assign Slaves different affinities, or assign it different Pools and Groups so that it can process different jobs than other Slaves on the same machine.

5.2. Multiple Slaves On One Machine 175 Deadline User Manual, Release 5.2.49424

You can also launch the Slave remotely just like any other Slave. See the Remote Control documentation for more information. You can use Remote Control to launch one Slave at a time, or you can use the Start All Slave Instances option to launch all Slaves that have been configured on a specific machine.

5.2.4 Removing Slaves

You can remove existing Slave instances from the Launcher by selecting Launch Slave By Name -> Remove Slave Instances. Just select the Slave(s) you want to remove and press OK. Note that this does not remove them from the Slave List in the Monitor. They will have to be deleted manually from the Monitor.

You can also remove Slave instances from the Monitor while in Super User Mode by right-clicking on the appropriate Slave(s) in the Slave List and selecting Remote Control -> Remove Slave Instances. You will be asked if you also want to delete the Slaves from the Repository as well. This saves you the hassle of having to delete them manually afterwards.

5.2.5 Limiting and Disabling Multiple Slaves

In certain cases, you may want to lock down a normal user’s ability to run multiple slaves on their machine. You can do this from the User Security section in the Repository Options. Just disable the option that allows Normal users to add and remove Slave instances. In other cases, you may want to completely disable the feature. The only situation where this should be necessary is if your render nodes all net-boot off the same installation (meaning they share the same file system). In this case, if multiple slaves are enabled, each render node will end up trying to run a Slave instance for every other render node. To disable multiple slaves, open the system deadline.ini file and add this line: MultipleSlavesEnabled=False

The system deadline.ini file can be found in the following locations: • Windows: %ProgramData%\Thinkbox\Deadline\deadline.ini • Linux: [Client Install Folder]/deadline.ini (ie: /usr/local/Thinkbox/Deadline/deadline.ini) • Mac OS X: /Applications/Deadline/Resources/deadline.ini

176 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

5.3 Render Jobs As Job’s User (Linux and Mac OSX)

5.3.1 Overview

Deadline 5.2 introduced some features that allow jobs to be rendered with the the job’s user account on Linux and Max OSX, rather than the user account that the Slave is running as. This documentation provides information on how to set this up.

5.3.2 Requirements

There are currently two requirements to set this up. The first is that the Slave must be running as root on the render nodes. This is so that the Slave can drop down to the job’s user account when launching the rendering process (using su or sudo). The second requirement is that the job’s user name is the same as the user’s system account name. While this can be worked around, it is much simpler to keep these identical.

5.3.3 Environment Variables

In Deadline 5.2, there is a DEADLINE_USER environment variable that is exported to the rendering process’ envi- ronment. It contains the job’s user name. This can be used by shell scripts to wrap the actual render executable and have it run with the job’s user account.

5.3.4 Setup

You must first create a shell script that the Slave will use to run the render with the job’s user account. This script can use the DEADLINE_USER environment variable exported by Deadline to do this. Here are some examples on how you could wrap the maya executable used by Deadline’s MayaBatch plugin: sudo -u $DEADLINE_USER /usr/autodesk/maya2012/bin/maya "$@" sudo su -c restricted_resources_class -l $DEADLINE_USER /usr/autodesk/maya2012/bin/maya "$@"

Then place this script on each node, or in a global location that all nodes can access. Next, modify the executable paths in your Plugin Configuration, which can be accessed from the Tools menu in the Monitor while in Super User mode. You should change the executable paths to point to your shell script instead of the actual render executable. At render time, the Slave will use your script to run the executable it wraps with the job’s user account.

5.3.5 Helpful Tips

Enforcing User Account Names

You can enforce the Deadline user to be the same as the user’s actual system account by enabling Enhanced User Security in the Deadline Repository Options.

Bitness Detection

Many Deadline plugins give the option to force 32 or 64 bit rendering. This works by checking the bitness of the render executable. This will fail with this setup because Deadline won’t be able to determine the bitness from the shell script. There are a few ways to avoid this problem:

5.3. Render Jobs As Job’s User (Linux and Mac OSX) 177 Deadline User Manual, Release 5.2.49424

• Ensure that jobs are always submitted with the Build option set to None. This can be enforced by modifying the Deadline submission scripts you use. • Modify the Deadline plugins you are using to skip the bitness checking. • Modify the Deadline plugins you are using to check the bitness of the actual executable that the shell script is wrapping.

When Deadline Users and User System Accounts Don’t Match

If you want to use this setup, but for whatever reason your Deadline user accounts don’t match the users’ system accounts, there is a workaround. First, you must create a PreLoad.py script for each Deadline plugin you are using. This script can query the job for info and use that to determine the user to run as. Then it can export a custom environment variable that will be used by the shell script. For example: from System import * def __main__( *args ): job= GetJob() jobUser= job.JobUserName

# Do something here to set jobUser to the user's system account

SetProcessEnvironmentVariable("CUSTOM_DEADLINE_USER", jobUser )

You can then use shell scripts that look like this: sudo -u $CUSTOM_DEADLINE_USER /usr/autodesk/maya2012/bin/maya "$@" sudo su -c restricted_resources_class -l $CUSTOM_DEADLINE_USER /usr/autodesk/maya2012/bin/maya "$@"

5.4 Power Management

5.4.1 Overview

Power management is a system for controlling how machines startup and shutdown automatically based on sets of conditions on the render farm, including job load and temperature. Machines can be configured to shutdown after they have been idle for a set amount of time, and startup depending on how many jobs are queued. Machines may also poll an external temperature sensor using SNMP and shutdown a number of machines if the temperature rises beyond a given threshold. If you have problematic machines that you find you are always restarting, you can have them reboot automatically at defined intervals. You can even set up a schedule for when slaves should start and stop. Power management is built into Deadline Pulse, so Pulse must be running to use this feature. The only exception to this rule is Temperature checking. Redundancy for Temperature checking has been built into the Slave application, so if Pulse isn’t running, you’re still protected if the temperature in your farm room begins to rise. If you wish to use power management without having Pulse act as a proxy between the Deadline applications and the Repository, simply leave the Host Name Or IP Address setting blank in the Pulse Settings in the Repository Options. To configure and run Deadline Pulse, see the Deadline Pulse documentation.

178 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

5.4.2 Configuration

Power management can be configured from the Deadline Monitor while in Super User mode by selecting Tools -> Configure Power Management.

5.4. Power Management 179 Deadline User Manual, Release 5.2.49424

Machine Groups are used by Power Management to organize slave machines on the farm, and each group has five sections that can be configured independently of each other.

Power Management Group Settings: • Group Name: The name the Power Management Group will be identified by. • Group Mode: Select Disabled or Enabled. • Slaves Not In Group: Slaves that are available to be added to the new group.

180 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

• Slaves In Group: Slaves that will be included in the new group.

Idle Shutdown

A system for forcing slaves to shutdown after they have been idle for set periods of time. This can be used to save on energy costs when the render farm is sitting idle. Combining this feature with Wake-On-Lan will ensure that machines in the render farm are only running when they are needed. You can split the idle time period between a daytime period and an evening period. This is useful because in most cases, you want most of your machines to stay on during the working day, and then shutdown during the evening when there are no renders left. In addition, you can also specify exceptions to these two periods, which means (for example) you could have different idle periods for the weekend.

Idle Shutdown Settings: • Idle Shutdown Mode: Select Disabled, Enabled, or Debug mode. In Debug mode, all the checks are performed as normal, but no action is actually taken. • Slaves Will Be Shutdown After Being Idle For # Minutes: Self explanatory. • Number of Slaves To Leave Running: This amount of slaves to be left running. • Slave Shutdown Type: The method that will be used to shutdown the slaves machine. – Shutdown: Power off the machine using the normal shutdown method. – Stand By: Put the machine into Stand By mode instead of shutting it down. Only works for Windows slaves. – Run Command: Use this method to have the Slave run a command when attempting to shutdown a slave.

5.4. Power Management 181 Deadline User Manual, Release 5.2.49424

• Important Processes: If the Slave has any of these processes running it will not shutdown. • Overrides: Define overrides for different days and times. Simply specify the day(s) of the week, the time period, the minimum number of slaves, and the idle shutdown time for each override required. For example if more machines are required to be running continuously for Friday evening and Saturday afternoon, it can be specified in an override. • Override Shutdown Order: Whether or not to define the order in which slaves are shutdown. If disabled, slaves are shutdown in alphabetical order. If enabled, use the Set Shutdown Order dialog to define the order.

Machine Startup

A system that allows powered down machines to be started automatically when new jobs are submitted to the render farm. Combining this feature with Idle Shutdown will ensure that machines in the render farm are only running when they are needed. If slave machines support it, Wake On Lan (WOL) or IPMI commands can be used to start them up after they shutdown. By default, the WOL packet is sent over port 9, but you can change this in the Wake On Lan Settings in the Repository Options. Make sure there isn’t a firewall or other security software blocking communication over the selected port(s). Note: If machines in the group begin to be shutdown due to temperature, this feature may be automatically disabled for the group to prevent machines from starting up and raising the temperature again.

Machine Startup Settings: • Machine Startup Mode: Select Disabled, Enabled, or Debug mode. In Debug mode, all the checks are performed as normal, but no action is actually taken.

182 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

• Number Of Slaves To Wake Up Per Interval: The maximum number of machines to start in the given power management check interval. The interval can be configured in the Pulse section of the repository options. • Use Wake On Lan: Use Wake On Lan to start the machines. • Run Command: This is primarily for IPMI support. If enabled, Pulse will run a given command to start slave machines. This command will be run once for each slave that is being woken up. A few tags can be used within the command: – {SLAVE_NAME}: Is replaced with the current slave’s hostname. – {SLAVE_MAC}: Is replaced with the current slave’s MAC address. – {SLAVE_IP}: Is replaced with the current slave’s IP address. • Override Startup Order: Whether or not to define the order in which slaves are started up. If disabled, slaves are started up in alphabetical order. If enabled, use the Set Startup Order dialog to define the order.

Thermal Shutdown

The thermal shutdown system polls temperature sensors and responds by shutting down machines if the temperature gets too high. The sensors we use are NetTherms, and APC Sensors are also known to be compatible. Note that this feature uses port 161, so make sure there isn’t a firewall or other security software blocking communication over this port.

Thermal Shutdown Settings: • Thermal Shutdown Mode: Select Disabled, Enabled, or Debug mode. In Debug mode, all the checks are performed as normal, but no action is actually taken.

5.4. Power Management 183 Deadline User Manual, Release 5.2.49424

• Thermal Shutdown Temperature Units : The units to display and configure the temperatures in. Note that this is separate from the units that the actual sensors use. • Thermal Sensors: The host and OID (object identifier) of the sensor(s) in the zone. To add a sensor, simply click the Add button. • Temperature Thresholds: Thresholds can be added for any temperature. When a sensor reports a temperature higher than a particular threshold, the slaves in the zone will respond accordingly. Note that higher temperature thresholds take precedence over lower temperature thresholds. • Shut down slaves if sensor(s) cannot be reached: If enabled, the slaves will be shutdown after a period of time in which the temperature sensor could not be reached for temperature information. • Disable Machine Startup if threshold is reached: If enabled, Machine Startup for the current group will be disabled if a thermal threshold is reached. • Re-Enable Machine Startup when temperature returns to temperature: If enabled, Machine Startup for the current group will be re-enabled (if previously disabled by Thermal Shutdown) when the temperature returns to a specified temperature. • Override Shutdown Order: Whether or not to define the order in which slaves are shutdown. If disabled, slaves are shutdown in alphabetical order. If enabled, use the Set Shutdown Order dialog to define the order.

Sensor Settings: • Sensor Hostname Or IP Address: The host of the temperature sensor. • Sensor OID: The OID (object identifier) of the temperature sensor. The default OID is for the particular type of sensor we use. • Sensor SNMP Community: If testing the sensor fails when Private is selected, try selecting Public. • Sensor Reports Temperature As: Select the units that your temperature sensor uses to report the temperature. • Sensor Timeout In Milliseconds: The timeout value for contacting the sensor.. • Test Sensor: Queries the sensor for the temperature and displays it. If the temperature displayed seems incorrect, make sure you are reading in the correct units.

184 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

Machine Restart

If you have problematic machines that you need to restart on a regular basis, you can configure the Machine Restart feature of power management to restart your slave machines at specified intervals. Note that if the slave on the machine is in the middle of rendering a task, it will finish its current task before the machine is restarted.

Machine Restart Settings: • Machine Restart Mode: Select Disabled, Enabled, or Debug mode. In Debug mode, all the checks are performed as normal, but no action is actually taken. • Restart machines after Slave has been running for: The interval, in minutes, at which this group of slaves will be restarted.

Slave Scheduling

You can use the Slave Scheduling feature of power management to configure when slaves applications should be launched and shut down. You can even group together different machines and have those groups follow different schedules.

5.4. Power Management 185 Deadline User Manual, Release 5.2.49424

Slave Scheduling Settings: • Slave Scheduling Mode: Select Disabled, Enabled, or Debug mode. In Debug mode, all the checks are per- formed as normal, but no action is actually taken. • Day Of The Week: Configure which days of the week you want to set a schedule for. • Start Time: The time on the selected day that the Slave application should be launched if it is not already running. • Stop Time: The time on the selected day that the Slave application should be closed if it is running. • Slaves In Group: The slaves that will follow this schedule. • Use Wake On Lan If Machine Is Offline When Starting: If enabled, an offline machine will be booted up if the Slave application is scheduled to run. Note that the machine must support Wake On Lan. • Allow Slaves To Finish Their Current Task When Stopping: If enabled, the Slave application won’t close until it finishes its current task.

5.5 Repository Statistics

5.5.1 Overview

Deadline can keep track of some basic statistics. It can keep track of all of your completed jobs so that you refer to them later. It stores the user that submitted the job, when the job was submitted, the error count, and some useful stats like render time, CPU usage, and memory usage. It can also keep track how often your slaves are rendering, idle, and

186 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424 offline. You can use this information to figure out which slaves aren’t being utilized properly. Finally, it can keep track of the average number of jobs and slaves in the queue.

5.5.2 Enabling Statistics Gathering

You must first enable statistics gathering before Deadline will start logging information, which can be done in the Statistics Gathering section of the Repository Options.

Note that if Pulse is not running, only statistics for completed jobs will be recorded. In order to also keep track of the slave and repository statistics, you must also run Deadline Pulse. Pulse will periodically gather information about slaves and the repository and record them.

5.5.3 Storing Statistics in a Database

You can also choose to store statistics in a postgres database instead of the repository, which is useful if you want to write your own queries to gather information from the Deadline statistics. This can also be set up from the Statistics Gathering section of the Repository Options.

5.5. Repository Statistics 187 Deadline User Manual, Release 5.2.49424

Setup

Before you can configure Statistics Gathering to use a database, you must have an existing postgres database installed. If you do not, you can download the postgres installers from the PostgreSQL Website. Once you have a postgres database in place, you can use the Database tab in the Statistics Gathering settings to test the connection to the database. Once you’ve confirmed that you can connect, you can then click the Create Database button to have Deadline automatically create the tables needed to store the statistics. At this point, you will now be able to store Deadline statistics in the database. The Update Database button will allow you to ensure your database tables will work with the current version of Deadline. If the update can’t be done automatically, you will be prompted for a file that contains the SQL to perform the update. These will be made available for download as required.

Failover

If the database goes offline, the statistics will still be stored in the Repository. These statistics can then be imported into the database the next time you view the statistics in the Monitor (see below).

5.5.4 Viewing Statistics

To view statistics, open the Deadline Monitor and enter Super User Mode from the Tools menu. Then select Tools -> View Repository Statistics. If Deadline detects statistics that are from a previous version of Deadline, or detects statistics in the repository that need to be imported into the database, it will give you the option to update/import them. From the statistics window, you can specify a range from which you would like to view stats for. In the Job and Slave tabs, you can also use the Search field to look for specific information. Finally, you can click the Save button to save the information to a csv file, which you can then open in any spreadsheet application.

188 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

The Slave and Repository tabs have graphs that display the statistics. You can zoom in/out and pan the graphs with your mouse. You can also right-click to save the graph image to disk.

5.5. Repository Statistics 189 Deadline User Manual, Release 5.2.49424

5.5.5 Custom Statistics

If you need to keep track of more information, we suggest writing your own tool that uses Deadline Command. Deadline Command can be used to query the repository for all sorts of information, like the current state of all the jobs and all the slaves. You can have it print these out in an ini file format and use any ini file parser (Python has a module for this) to pull the relevant information that you care about and log it. This is also handy if you want to post stats to a web page, or insert entries into a database.

5.6 Pulse Web Service

5.6.1 Overview

Pulse has a web service feature built in, which you can use to get information directly from Pulse over an Internet connection. You can view this information with Deadline Mobile, or you can write custom Web Service Scripts to display this information in a manner of your choice, such as in a web page. Before you use the web service, you need to configure the Web Service settings in the Repository Options.

190 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

5.6.2 Connecting to the Web Service

When Pulse is running, you can connect to the web service using a URL containing the host name or IP address of the machine that is hosting Pulse, as well as the port, which we will assume to be 8080 for now (this can be configured in the Web Service Settings). Note that if port 8080 is being blocked by a firewall, Pulse will not be able to accept web requests. An example URL will look like the following: http://[myhost]:8080/[command][arguments]

Where: • myhost is your Pulse server’s IP address or host name. • command is the command you want to execute. Pulse can support two different types of commands, which are explained below. • arguments represents the arguments being passed to the command. This can be optional, and depends on the command. To confirm that you can at least connect to Pulse’s web service, try the following URL. http://[myhost]:8080/

You should see the following if you connect to Pulse successfully: Error - Not a supported command.

If Pulse is running on Windows, you may also need to add a namespace reservation for the current user that Pulse is running under, so that it can reserve namespaces for the URL connection. See the Configuring Namespace Reserva- tions section in this MSDN Article for more information. Note that Pulse listens on port 8080, so make sure this is the URL you use when reserving the namespace. For example:

5.6. Pulse Web Service 191 Deadline User Manual, Release 5.2.49424

netsh http add urlacl url=http://*:8080/ user=USERNAME

5.6.3 Calling Deadline Command

The first set of commands are the same commands that you can use with the Deadline Command application. However, these commands are disabled by default. To enable them, you need to enable the Allow Non-Script Commands setting in the Web Service settings. If left disabled, you will see the following results when trying to call one of these commands: Error - Non-Script commands are disabled.

See the Deadline Command documentation for a list of available commands. Note that these commands are executed in a similar fashion as if they were called using Deadline Command, which means that they don’t use any of the data that is currently cached by Pulse. Because of this, there may be a delay when executing these commands. Here is an example of how you would use the web service to call the GetSlaveNames command: http://[myhost]:8080/GetSlaveNames

Here is an example of the results that would be displayed: Jupiter Rnd-vista Slave-29 Monkeypantswin7 Electron.franticfilms.com Test3 Monkeypants Slave-27d Proton.franticfilms.com Atom.franticfilms.com Rnd-suse Opensuse-64 Pathos Neutron.franticfilms.com

Some commands can take arguments. To include arguments, you need to place a ? between the command name and the first argument, and then a & between additional arguments. Here is an example of how you would use the web service to call the GetSlaveNamesInPool command, and pass it two pools as arguments: http://[myhost]:8080/GetSlaveNamesInPool?show_a&show_b

Here is an example of the results that would be displayed: Monkeypants Pathos

5.6.4 Calling Python Scripts

The second set of commands are actually Python scripts that you can create in the Repository. These scripts use Pulse’s Python API to get data, and then return the data in a readable manner. So basically, you can create scripts to access any type of data and display it in any way you want. See the Web Service Scripting documentation for more information on how to create these scripts. Once a script has been created, you can call it by using the name of the script, without the .py extension. For example, if you have a Pulse script called GetFarmStatistics.py, you would call it using:

192 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

http://[myhost]:8080/GetFarmStatistics

Some scripts can take arguments. To include arguments, you need to place a ? between the command name and the first argument, and then a & between additional arguments. Here is an example of how you would pass arg1, arg2, and arg3 as separate arguments to the GetFarmStatistics.py script: http://[myhost]:8080/GetFarmStatistics?arg1&arg2&arg3

The way the results are displayed depends on the format in which they are returned. Again, see the Pulse Web Service Scripting documentation for more information.

5.7 Satellite Mode

5.7.1 Overview

When Satellite Mode is enabled, it changes the behavior of the Deadline Client to allow it to work better when connecting to a Repository from a remote location over the VPN. The performance improvements are accomplished by connecting to Pulse to get more information via a socket connection instead of pulling it directly from the Repository. Because of this, it is required that Pulse is running on the remote Repository in order to interact with it in Satellite Mode. If Pulse isn’t running, refer to the Deadline Pulse documentation.

5.7. Satellite Mode 193 Deadline User Manual, Release 5.2.49424

5.7.2 Enabling Satellite Mode

Satellite Mode can be enabled from the Launcher’s right-click or Options menu. It can also be enabled from the Monitor’s File menu or from the main toolbar. This feature can be turned off at any time.

5.7.3 Changes In Behavior

Each Deadline application is affected when the Client is configured to run in Satellite Mode.

Launcher Changes

• The Launcher’s menu will no longer contain the options to launch the Slave or the Job Monitor. • The Launcher will no longer load any scripts in its menu. These scripts will only be accessible from the Monitor. • The Launcher never check for upgrades when launching other Deadline applications. This means upgrades will have to be installed manually.

Monitor Changes

• If the Monitor cannot connect to Pulse, it will not try to load the data directly from the Repository. • Clicking a job no longer automatically loads the task list. You must refresh the job manually using the right-click menu or by double-clicking the job. Now you can quickly select through jobs without the lag from loading the tasks. • The Pulse and Limit data is now gathered from Pulse, instead of from the Repository directly. • Individual job refreshes are now done via Pulse, instead of from the Repository directly. • Error and Log reports will be loaded as you click on them in the report viewer’s list, instead of being loaded all at once before displaying the report viewer. However, there will be less information displayed in the report viewer’s list. • Job plug-in icons and the script menus will not be populated on start up. This helps improve the start up performance. There is now an option in the Tools menu to refresh these if desired. • I/O heavy operations like viewing statistics, configuring plugins, etc are disabled. • Batch operations on jobs and slaves can not be performed on more than a limited number of items at a time (the default is 10). This limit can be configured from the Monitor Settings section of the Repository Options. • The Slave Availability Filter in the slave list toolbar is disabled.

Job Monitor Changes

• The Job Monitor will not be allowed to launch.

Slave Changes

• The Slave will not be allowed to launch.

Pulse Changes

• Pulse will not be allowed to launch.

194 Chapter 5. Advanced Features Deadline User Manual, Release 5.2.49424

5.8 Job Transferring

5.8.1 Overview

If you have multiple office locations that each have their own Deadline Repository, it is possible to transfer jobs between them. This can be handy if one office’s farm is sitting idle and another office needs to ship some its jobs over. Note though that Deadline will only transfer over the files that are submitted with the job, which in most cases is just the scene file. You must ensure that all assets the scene requires and all output paths that it writes to exist in the remote location before transferring the job.

5.8.2 Setting Up A Transfer

Before you can transfer a job, it must be in the suspended, completed, or failed state. Just right-click on the job and select Scripts -> Transfer Job. A Transfer Job window will be displayed.

You’ll notice that you’re actually submitting another job that will transfer the original job. The general Deadline options are explained in the Job Submission documentation. The Job Transfer specific options are: • Frame List and Frames Per Task: This is the frame list for the original job that will be transferred. It will default to the values for the original job, but you can change them if you only want to transfer a subset of frames.

5.8. Job Transferring 195 Deadline User Manual, Release 5.2.49424

• New Repository: This is the path to the remote repository that the original job will be transferred to. Note that the slaves that the transfer job will be running on must be able to see this path in order to transfer the original job to the new repository. • Compress Files During Transfer: If enabled, the original job’s files will be compressed during the transfer. • Suspend Remote Job After Transfer: If enabled, the original job will be submitted in the suspended state to the new repository. • Email Results After Transfer: If enabled, you will be emailed when the original job has been successfully transferred. Note that this requires you to have your email notification options set up properly. • Remove Local Job After Transfer: If enabled, the original job in the local repository will be deleted after the job has been successfully transferred to the remote repository. Once you have your options set, click the Submit button to submit the transfer job.

5.8.3 Global Transfer Options

Job transfers are handled by a JobTransfer plug-in, which has a few options that can be configured which will affect all transfers. To change the JobTransfer plug-in options, open the Monitor and enter Super User Mode. Then select Tool -> Configure Plugins and select the JobTransfer plug-in from the list on the left.

The following options are available: • Notification Email(s): The email(s) where successful job transfer reports will be sent, so sys admins can keep track of all successfully transferred jobs. Leave blank to disable this feature. Use commas for multiple emails.

196 Chapter 5. Advanced Features CHAPTER SIX

SCRIPTING

6.1 Scripting Overview

6.1.1 Overview

Scripts can be used to customize various aspects of Deadline, including creating custom plug-ins, submitting jobs to the queue, or automating specific tasks after a job completes. The scripting language that Deadline uses is Python®, which by default is supported by Deadline using IronPython. The benefit to using IronPython is that the it makes the .NET libraries available to programmers, while maintaining full compatibility with the Python language. You can also write your own .NET libraries and import them into your scripts. Deadline currently integrates with IronPython 2.6, which is compatible with Python 2.6. Starting with Deadline 5.1, native Python scripts are also supported using Python for .NET, and the Deadline Client software now comes bundled with its own Python bundle. Python.NET scripts still allows you to make use of the .NET libraries, but the key benefit is that it also allows you to import modules that IronPython doesn’t support, like “os”. In addition, you can import your own cPython modules into your scripts, which is something that IronPython doesn’t support either. Deadline currently comes bundled with Python 2.6. Here are some useful links: • IronPython Website • Python for .NET Website • .NET Library Documentation By default, Deadline will execute scripts using the IronPython engine. If you want to use Python for .NET, the first line of your script must look like the following. This tells Deadline that the script is a Python.NET script: #Python.NET

The only requirement for Deadline scripts is that you define a __main__ function. This is the function called by Deadline when it executes the script. def __main__( *args ): ... ''do something'' ...

In addition to running scripts in the context of Plug-ins, Monitor scripts, or Job scripts, you can also run general scripts from the command line using Deadline Command. For example, if you have a script called c:\myscript.py, you could execute it using this command: DeadlineCommand -ExecuteScript "c:\myscript.py"

197 Deadline User Manual, Release 5.2.49424

6.1.2 Global Deadline Scripting Functions

These are some global Deadline functions that can be called from your scripts, regardless of the context in which they are used. You do not need to import any modules to use these functions.

Deadline Repository Path Functions

Function Description string GetJobsDirectory() Returns the jobs directory of the Deadline repository. string GetJobDropDirectory() Returns the drop jobs directory of the Deadline repository. string GetLimitGroupsDirectory() Returns the limit group directory of the Deadline repository. string GetPluginsDirectory() Returns the plugin directory of the Deadline repository. string GetPulseDirectory() Returns the pulse directory of the Deadline repository. string GetRootDirectory() Returns the root directory of the Deadline repository. string GetScriptsDirectory() Returns the scripts directory of the Deadline repository. string GetSettingsDirectory() Returns the settings directory of the Deadline repository. string GetSlavesDirectory() Returns the slaves directory of the Deadline repository. string GetSubmissionDirectory() Returns the submission directory of the Deadline repository. string GetTempDirectory() Returns the temp directory of the Deadline repository. string GetTrashDirectory() Returns the trash directory of the Deadline repository. string GetUsersDirectory() Returns the users directory of the Deadline repository.

198 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Deadline Client Path Functions

Function Description string GetDeadlineBinPath() Returns the bin directory of the Deadline client. string GetDeadlineHomeCurrentUserPath() Returns the Deadline client home directory for the current user. string GetDeadlineHomePath() Returns the Deadline client home directory for all users. tuple GetDeadlineSettingsPath() Returns the settings directory of the Deadline client. string GetDeadlineTempPath() Returns the temp directory of the Deadline client. tuple GetLocalApplicationDataPath() Returns the system local application data path. tuple GetSystemTempPath() Returns the system temp path.

General Process Functions

Function Description bool IsProcessRunning( string processName ) Returns true if the given executable name is currently running. bool KillAllProcesses( string processName ) Kills all processes with the given name. Returns true if successful. bool KillParentAndChildProcesses( string processName ) Kills all processes with the given name and their child processes. Returns true if successful. bool WaitForProcessToStart( string processName, float TimeoutSeconds ) Returns true if the given process has started before the timeout. Returns false otherwise.

File/Path/Directory Functions

Function Description void AddToPath( string SemicolonseparatedList ) Adds the specified directory to the PATH environment variable for this session.

6.1. Scripting Overview 199 Deadline User Manual, Release 5.2.49424

string ChangeFilename( string path, string filename ) Changes the filename in the path. bool FileExists( string filename ) Returns True if the given file exists. string GetExecutableVersion( string filename ) Returns the version of the given executable file. long GetFileSize( string filename ) Returns the file size of the given file in bytes. string GetIniFileKeys( string IniFilename, string Section ) Returns the keys for the given Section of the given IniFilename. tuple GetIniFileSections( string IniFilename ) Returns the sections for the given IniFilename. string GetIniFileSetting( string IniFilename, string Section, string Key, string DefaultValue ) Returns the value for the given Key, which is in the given Section of the given IniFilename. If the Key does not exist, the given DefaultValue is returned. bool Is64BitDllOrExe( string filename ) Checks if the given file is a 64 bit executable or library. string SearchDirectoryList( string SemicolonseparatedList ) Searches through the semicolon-separated of directories, returning the first directory which exists, or an empty string otherwise. An example list could be “c:/directory1;c:/directory2”. string SearchFileList( string SemicolonseparatedList ) Searches through the semicolon-separated list of files, returning the first file which exists, or an empty string otherwise. An example list could be “c:/file1.exe;c:/file2.exe”. string SearchFileListFor32Bit( string SemicolonseparatedList ) Searches through the semicolon-separated of files, returning the first 32bit file which exists, or an empty string other- wise. An example list could be “c:/file1.exe;c:/file2.exe”. string SearchFileListFor64Bit( string SemicolonseparatedList ) Searches through the semicolon-separated of files, returning the first 64bit file which exists, or an empty string other- wise. An example list could be “c:/file1.exe;c:/file2.exe”. string SearchPath( string filename ) Searches the PATH environment variable to see if the specified filename exists in any of the paths. If it does, the full path is returned. Otherwise, an empty string is returned. void SetIniFileSetting( string IniFilename, string Section, string Key, string Value ) Sets the Value for the given Key, which is in the given Section of the given IniFilename. void SynchronizeDirectories( string SrcDirPath, string DestDirPath, bool deepCopy ) Ensures that the contents of the DestDirPath directory are the same as the SrcDirPath directory. If deepCopy is True, then all subfolders are synchronized as well. string ToShortPathName( string filename )

200 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Retrieves the short path form of a specified long input path.

Miscellaneous Functions

Function Description string BlankIfEitherIsBlank( string Str1, string Str2 ) Returns an empty string if either Str1 or Str2 is empty. Otherwise, concatenates them. void ExecuteScript( string scriptFilename, string arguments ) Executes the given script file, and passes along the given arguments, if any. Note that the script must contain a __main__ method, which is the main method that is executed. void Sleep( int milliseconds ) Sleeps for the given amount of time.

OS Functions

Function Description long GetAvailableRam() Gets the amount of RAM that is still available on the machine (in bytes). string GetApplicationPath( string filename ) Searches the PATH environment variable to see if the specified filename exists in any of the paths. If it does, the full path is returned. Otherwise, an empty string is returned. int GetCpuCount() Gets the machine’s CPUs count. string GetRegistryKeyValue( string keyName, string valueName, string defaultValue ) Windows Only - Returns the value for the specified registry key. If the key is not found, the default value is returned. long GetTotalRam() Gets the total amount of RAM that is installed on the machine (in bytes). long GetUsedRam() Gets the amount of RAM that is in use on the machine (in bytes). bool Is64Bit() Returns True if the current application is 64 bit. bool IsRunningOnLinux() Returns True if the current machine is a Linux machine. bool IsRunningOnMac() Returns True if the current machine is a Mac machine. bool IsRunningOnWindows() Returns True if the current machine is a Windows machine.

6.1. Scripting Overview 201 Deadline User Manual, Release 5.2.49424

6.1.3 General Deadline Utility Scripting Functions

These are some general Deadline functions that can be called from your scripts, regardless of the context in which they are used. To use them, you must import from the Deadline.Scripting module using this import line in your script:

from Deadline.Scripting import *

String Utilities

All functions are called by using StringUtils.function Function Description string BlankIfEitherIsBlank( string Str1, string Str2 ) Returns an empty string if either Str1 or Str2 is empty. Otherwise, concatenates them. tuple FromCommaSeparatedString( string list ) Returns a string array from a comma separated string. tuple FromCommaSeparatedString( string list, bool allowEmptyTokens ) Returns a string array from a comma separated string. You have the option to allow empty tokens. tuple FromSemicolonSeparatedString( string list ) Returns a string array from a semicolon separated string. tuple FromSemicolonSeparatedString( string list, bool allowEmptyTokens ) Returns a string array from a semicolon separated string. You have the option to allow empty tokens. string GetNumeralKeyFromPath( string pathWithNumeralKey, tuple numeralKeyChars ) Retrieves the numeral key (based on the specified numeral key characters) from the specified path. string GetNumeralKeyFromPath( string pathWithNumeralKey, tuple numeralKeyChars, bool allowEmptyNumer- alKey ) Retrieves the numeral key (based on the specified numeral key characters) from the specified path. If allowEmp- tyNumeralKey is False, an InvalidOperationException will be thrown if the specified path doesn’t contain a numerical key. bool IsEmpty( string str ) Checks if the specified string is empty. string Pad( string str, int desiredLength, char fillCharacter ) Pads the specified string with the fill character to achieve the desired length. float ParseLeadingNumber( string str ) Parses the number at the begining of the specified string. bool ParseBoolean( string str ) Parses the specified string for a boolean value. Throws an ArgumentException if the string is not a valid boolean. bool ParseBooleanWithDefault( string str, bool defaultValue ) Parses the specified string for a boolean value. Returns the specified default value if the string is not a valid boolean. string ReplaceNumeralKey( string pathWithNumeralKey, string numeralKey, int index, bool padExtra )

202 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Replaces the specified numeralKey in the specified path with the specified index. If padExtra is True, extra padding will be added if necessary to ensure the entire number is inserted into the numeral key. string RemoveWhitespace( string str ) Removes all whitespace from the specified string, including tabs and end of line characters. string ToCommaSeparatedString( tuple list, bool includeSpaces ) Converts a string array to a comma seperated string. string ToSemicolonSeparatedString( tuple list, bool includeSpaces ) Converts a string array to a semicolon seperated string. string ToZeroPaddedString( int value, int length ) Creates a string of the desired length containing the given value, padded with zeros. string ToZeroPaddedString( int value, int length, bool strictLength ) Creates a string of the desired length containing the given value, padded with zeros. The strictLength < value indicates whether or not to allow the length of value to be greater than the length specified.

File Utilities

All functions are called by using FileUtils.function Function Description bool FileExists( string filename ) Returns True if the given file exists. string GetExecutableVersion( string filename ) Returns the version of the given executable file. long GetFileSize( string filename ) Returns the file size of the given file in bytes. string GetIniFileKeys( string IniFilename, string Section ) Returns the keys for the given Section of the given IniFilename. tuple GetIniFileSections( string IniFilename ) Returns the sections for the given IniFilename. string GetIniFileSetting( string IniFilename, string Section, string Key, string DefaultValue ) bool Is64BitDllOrExe( string filename ) Checks if the given file is a 64 bit executable or library. string SearchFileList( string SemicolonseparatedList ) Searches through the semicolon-separated list of files, returning the first file which exists, or an empty string otherwise. An example list could be “c:/file1.exe;c:/file2.exe”. string SearchFileListFor32Bit( string SemicolonseparatedList ) Searches through the semicolon-separated of files, returning the first 32bit file which exists, or an empty string other- wise. An example list could be “c:/file1.exe;c:/file2.exe”.

6.1. Scripting Overview 203 Deadline User Manual, Release 5.2.49424

string SearchFileListFor64Bit( string SemicolonseparatedList ) Searches through the semicolon-separated of files, returning the first 64bit file which exists, or an empty string other- wise. An example list could be “c:/file1.exe;c:/file2.exe”. void SetIniFileSetting( string IniFilename, string Section, string Key, string Value ) Sets the Value for the given Key, which is in the given Section of the given IniFilename.

Path Utilities

All functions are called by using PathUtils.function Function Description string ChangeFilename( string path, string filename ) Changes the filename in the path. string EnsureTrailingPathSeparator( string path ) Ensures the specified path ends with the proper path separatator depending on the platform. string GetApplicationPath( string filename ) Searches the PATH environment variable to see if the specified filename exists in any of the paths. If it does, the full path is returned. Otherwise, an empty string is returned. tuple GetLocalApplicationDataPath() Returns the system local application data path. string GetMappedDriveNetworkPath( string driveName ) Returns the network path that the given drive is mapped to. If the drive is not mapped, or is not a network drive, then an empty string is returned. tuple GetSystemTempPath() Returns the system temp path. bool IsDriveMapped( string driveName ) Returns True if the given drive is mapped to a network path. bool IsPathLocal( string path ) Returns True if the path has the root ‘c:’, ‘d:’, or ‘e:’. bool IsPathLocal( string path, string root ) Check if the root of the given path matches the given root. bool IsPathLocal( string path, tuple roots ) Check if the root of the given path matches any of the roots in the given array. bool IsPathRooted( string path ) Returns True if the path rooted. bool IsPathUNC( string path ) Returns True if the path is a UNC path. bool MapNetworkPath( string driveName, string networkPath, string username, string password, bool force )

204 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Maps a network path. If no authorization is required, you can leave the username and password blank. bool RegisterFont( string fontFilename ) Adds the font resource in the specified file to the system font table (Windows only). Returns true if the font was registered successfully. string ToPlatformIndependentPath( string path ) Replaces all slashes in the path with the proper slash depending on the platform. string ToShortPathName( string filename ) Retrieves the short path form of a specified long input path. bool UnmapNetworkPath( string driveNameOrNetworkPath, bool force ) Unmaps a network drive. bool UnregisterFont( string fontFilename ) Removes the font resource in the specified file from the system font table (Windows only). Returns true if the font was unregistered successfully.

Directory Utilities

All functions are called by using DirectoryUtils.function Function Description void AddToPath( string SemicolonseparatedList ) Adds the specified directory to the PATH environment variable for this session. string SearchDirectoryList( string SemicolonseparatedList ) Searches through the semicolon-separated of directories, returning the first directory which exists, or an empty string otherwise. An example list could be “c:/directory1;c:/directory2”. string SearchPath( string filename ) Searches the PATH environment variable to see if the specified filename exists in any of the paths. If it does, the full path is returned. Otherwise, an empty string is returned. bool SynchronizeDirectories( string sourceDirectory, string destDirectory, bool deepCopy ) Synchronize two directories. If the deepCopy paramater is set to true, then it will synchronize all subDirectories as well. bool SynchronizeFiles( tuple sourceFiles, string destDirectory ) Synchronizes a list of files with the destination directory specified.

Frame Utilities

All functions are called by using FrameUtils.function Function Description bool FrameRangeValid( string frameRange ) Returns True if the given frameRange is a valid Deadline frame range.

6.1. Scripting Overview 205 Deadline User Manual, Release 5.2.49424

string GetFilenameWithoutPadding( string filename ) Returns the specified filename with its padding removed. int GetFrameNumberFromFilename( string filename ) Returns the number obtained from the specified filename’s padding. string GetFrameStringFromFilename( string filename ) Returns the padding of the specified filename. string GetLowerFrameFilename( string filename, int startFrame, int paddingSize ) If the directory that the specified file is in contains a range of filenames with similar padding, the filename with the lowest frame number is returned. int GetLowerFrameRange( string filename, int startFrame, int paddingSize ) If the directory that the specified file is in contains a range of filenames with similar padding, the lowest frame number is returned. int GetPaddingSizeFromFilename( string filename ) Returns the length of the padding for the specified filename. string GetUpperFrameFilename( string filename, int startFrame, int paddingSize ) If the directory that the specified file is in contains a range of filenames with similar padding, the filename with the highest frame number is returned. int GetUpperFrameRange( string filename, int startFrame, int paddingSize) If the directory that the specified file is in contains a range of filenames with similar padding, the highest frame number is returned. tuple Parse( string frameRange ) Converts the frame string to a frame list. The frames are automatically placed in ascending order. tuple Parse( string frameRange, bool reorderFrames ) Converts the frame string to a frame list. The frames are automatically placed in ascending order if reorderFrames is True. int RequiredPaddingSize( int frame ) Returns the minimum length of the padding required for the specified frame number. string SubstituteFrameNumber( string filename, string frame ) Returns the specified filename with its padding replaced with the specified frame string. tuple ToChunks( tuple frameList, int chunkSize ) Converts the frame list into chunks. The frames are automatically placed in ascending order.

Process Utilities

All functions are called by using ProcessUtils.function Function Description bool IsProcessRunning( string name ) Checks if a process is running.

206 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

bool KillProcesses( string name ) Kills all processes with the given name. void KillParentAndChildProcesses( int parentId ) Kills the parent with the given ID and its child processes. This function does not return until all processes have been successfully killed. Process ShellExecute( string filename) Shell executes the specified filename. Process ShellExecute( string filename, string verb ) Shell executes the specified filename using the specified verb. Process SpawnProcess( string executable ) Spawns a process. Process SpawnProcess( string executable, string arguments ) Spawns a process. Process SpawnProcess( string executable, string arguments, string workingDirectory ) Spawns a process. Process SpawnProcess( string executable, string arguments, string workingDirectory, ProcessWindowStyle window- Style, bool redirectStdOutput ) Spawns a process. bool WaitForExit( Process process, int timeoutMilliseconds ) Waits for a process to exit. bool WaitForProcessToStart( string name , int timeoutMilliseconds ) Returns True if the process with the given name starts before the timeout.

System Utilities

All functions are called by using SystemUtils.function Function Description long GetAvailableRam() Gets the amount of RAM that is still available on the machine (in bytes). int GetCpuCount() Gets the machine’s CPUs count. string GetRegistryKeyValue( string keyName, string valueName, string defaultValue ) Windows Only - Returns the value for the specified registry key. If the key is not found, the default value is returned. long GetTotalRam() Gets the total amount of RAM that is installed on the machine (in bytes). long GetUsedRam() Gets the amount of RAM that is in use on the machine (in bytes).

6.1. Scripting Overview 207 Deadline User Manual, Release 5.2.49424

bool Is64Bit() Returns True if the current application is 64 bit. bool IsRunningOnLinux() Returns True if the current machine is a Linux machine. bool IsRunningOnMac() Returns True if the current machine is a Mac machine. bool IsRunningOnWindows() Returns True if the current machine is a Windows machine. void Sleep( int milliseconds ) Sleeps for the given amount of time.

Client Utilities

All functions are called by using ClientUtils.function Function Description int ExecuteCommand( StringCollection args ) Executes a command the same way as if you were passing arguments to DeadlineCommand, and returns the error code. string ExecuteCommandAndGetOutput( StringCollection args ) Executes a command the same way as if you were passing arguments to DeadlineCommand, and returns the stdout. void ExecuteScript( string scriptFileName ) Executes the python script specified by the given file name. Note that the script must define a __main__ function. void ExecuteScript( string scriptFileName, tuple arguments ) Executes the python script specified by the given file name, and passes the given arguments to it. Note that the script must define a __main__ function that accepts arguments. string GetBinDirectory() Returns the bin directory of the Deadline Client. string GetCurrentUserHomeDirectory() Returns the Deadline client home directory for the current user. string GetDeadlineTempPath() Returns the temp directory of the Deadline client. string GetDeadlineUser() Returns the current Deadline user name. string GetUsersHomeDirectory() Returns the Deadline client home directory for all users. string GetUsersSettingsDirectory() Returns the user settings directory of the Deadline client.

208 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

void LogText( string line ) Writes to the log of the application calling the script (either the Monitor or the Slave).

Repository Utilities

All functions are called by using RepositoryUtils.function Paths Function Description string GetAlternateAuxiliaryPath() Returns the alternate auxiliary path for jobs. Note that this automatically determines the current operating system and returns the appropriate path. string GetBinDirectory() Returns the bin directory of the Deadline repository. string GetEventsDirectory() Returns the events directory of the Deadline repository. string GetJobsDirectory() Returns the jobs directory of the Deadline repository. string GetJobDropDirectory() Returns the drop jobs directory of the Deadline repository. string GetLimitGroupsDirectory() Returns the limit group directory of the Deadline repository. string GetLinuxAlternateAuxiliaryPath() Returns the Linux-specific alternate auxiliary path for jobs. string GetMacAlternateAuxiliaryPath() Returns the Mac-specific alternate auxiliary path for jobs. string GetPluginsDirectory() Returns the plugins directory of the Deadline repository. string GetPulseDirectory() Returns the pulse directory of the Deadline repository. string GetRootDirectory() Returns the root directory of the Deadline repository. string GetScriptsDirectory() Returns the scripts directory of the Deadline repository. string GetSettingsDirectory() Returns the settings directory of the Deadline repository. string GetSlavesDirectory()

6.1. Scripting Overview 209 Deadline User Manual, Release 5.2.49424

Returns the slaves directory of the Deadline repository. string GetSubmissionDirectory() Returns the submission directory of the Deadline repository. string GetTempDirectory() Returns the temp directory of the Deadline repository. string GetTrashDirectory() Returns the trash directory of the Deadline repository. string GetUsersDirectory() Returns the users directory of the Deadline repository. string GetWindowsAlternateAuxiliaryPath() Returns the Windows-specific alternate auxiliary path for jobs. Path Mapping Function Description string CheckPathMapping( string Path, bool Verbose ) Maps the given path to a different path if necessary. If no path mapping is required, the original path is returned. If Verbose is True, any path mappings that are made are logged. Path Mappings can be set up in the Repository Options in the Monitor. string CheckPathMappingInFile( string InFileName, string OutFileName ) Checks each line of the given input file to see if a path mapping is required. The new file with any paths that may have been swapped is saved to the output file defined. Path Mappings can be set up in the Repository Options in the Monitor. string CheckPathMappingInFileAndReplaceSeparator( string InFileName, string OutFileName, string Separator- ToReplace, string NewSeparator ) This is identical to CheckPathMappingInFile above, except that lines that are swapped out will replace the given SeparatorToReplace with the given NewSeparator. bool PathMappingRequired( string Path ) Checks if the given Path needs to be mapped to a different path. Path Mappings can be set up in the Repository Options in the Monitor. Jobs Function Description bool ArchivedJobExists( string jobId ) Returns True if the archived job with the given ID exists. void CreateMachineLimit( string jobId, int limit, tuple slavesInList, bool isWhiteList, float releaseProgress ) Creates a new machine limit from the given information for the given job. Job GetArchivedJob( string jobId, bool invalidate ) Returns the archived job with the given ID. If you want to refresh the job before getting it, set the invalidate value to True.

210 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

tuple GetArchivedJobIds() Returns the list of archived job IDs. tuple GetArchivedJobs() Returns the list of archived jobs. Job GetJob( string jobId, bool invalidate ) Returns the job with the given ID. If you want to refresh the job before getting it, set the invalidate value to True. tuple GetJobIds() Returns the list of job IDs. tuple GetJobs() Returns the list of jobs. tuple GetJobTasks( Job job, bool invalidate ) Returns the task for the given job. If you want to refresh the tasks before getting them, set the invalidate value to True. LimitGroup GetMachineLimit( string jobId ) Returns the job’s machine limit, which is a type of LimitGroup. You can use the RepositoryUtils LimitGroup functions to save the machine limit, reset it, or get the number of stubs in use. void InvalidateArchivedJob( string jobId ) Removes the specified archived job from the cache. void InvalidateJob( string jobId ) Removes the specified job from the cache. void InvalidateJobIds() Removes all job Ids from the cache. void InvalidateJobs() Removes all jobs from the cache. void InvalidateJobTasks( Job job ) Removes all task for the specified job from the cache. bool JobExists( string jobId ) Returns True if the job with the given ID exists. void SaveJob( Job job ) Saves the given job. Slaves Function Description SlaveInfo GetSlaveInfo( string slaveName, bool getErrorReportCount ) Gets the slave info for the given slave, which is a snapshot of the slave’s current state. Set getErrorReportCount to True if you want to load the error report count as well. tuple GetSlaveNames() Returns the list of slave names.

6.1. Scripting Overview 211 Deadline User Manual, Release 5.2.49424

SlaveSettings GetSlaveSettings( string slaveName ) Gets the slave settings for the given slave. void InvalidateAllSlaveInfos() Removes all SlaveInfos from the cache. void InvalidateAllSlaveSettings() Removes all SlaveSettings from the cache. void InvalidateSlaveInfo( string slaveName ) Removes the SlaveInfo for the specified slave from the cache. void InvalidateSlaveNames() Removes all slave names from the cache. void InvalidateSlaveSettings( string slaveName ) Removes the SlaveSettings for the specified slave from the cache. void SaveSlaveInfo( SlaveInfo slaveInfo ) Saves the given slave info. void SaveSlaveSettings( SlaveSettings settings ) Saves the given slave settings. Pulse Function Description PulseInfo GetPulseInfo( string machineName ) Gets the pulse info for the given machine, which is a snapshot of Pulse’s current state. tuple GetPulseNames() Returns the list of pulse names. void InvalidatePulse( string machineName ) Removes the PulseInfo for the specified machine from the cache. void InvalidatePulseNames() Removes all pulse names from the cache. void InvalidatePulses() Removes all PulseInfos from the cache. void SavePulseInfo( PulseInfo info ) Saves the given pulse info. Users Function Description UserInfo GetUserInfo( string userName ) Gets the user settings for the given name.

212 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

tuple GetUserNames() Returns the list of user names. void InvalidateUserNames() Removes all user names from the cache. void SaveUserInfo( UserInfo info ) Saves the given user settings. Limits Function Description void CreateLimitGroup( string limitName, int limit, tuple slavesInList, bool isWhiteList, tuple excludedSlaves, float releaseProgress ) Creates a new limit from the given information. LimitGroup GetLimitGroup( string limitName ) Gets the limit settings for the given name. tuple GetLimitGroupNames() Returns the list of limit names. void InvalidateLimitGroup( string limitGroupName ) Removes the limit with the specified name from the cache. void InvalidateLimitGroupNames() Removes all limit names from the cache. void InvalidateLimitGroups() Removes all limits from the cache. int LimitStubsInUse( string limitName ) Returns the number of limit stubs in use for the given limit. void SaveLimitGroup( LimitGroup limit ) Saves the given limit. void ResetLimitGroup( string limitName ) Resets the limit’s usage count to 0. Slaves will have to reacquire their limit stubs. Pools and Groups Function Description void AddGroup( string groupName ) Add the given group to the Repository. void AddPool( string poolName ) Add the given pool to the Repository. void DeleteGroup( string groupName )

6.1. Scripting Overview 213 Deadline User Manual, Release 5.2.49424

Remove the given group from the Repository. void DeletePool( string poolName ) Remove the given pool from the Repository. tuple GetGroupNames() Returns the list of group names. tuple GetPoolNames() Returns the list of pool names. Plug-ins and Scripts Function Description tuple GetGeneralScriptFilenames() Returns the list of general monitor script filenames. tuple GetMonitorJobScriptFilenames() Returns the list of monitor job script filenames. tuple GetMonitorSlaveScriptFilenames() Returns the list of monitor slave script filenames. tuple GetPluginNames() Returns the list of plugin names. tuple GetSubmissionScriptFilenames() Returns the list of monitor submission script filenames.

Script Utilities (obsolete)

As of Deadline 5.0, the ScriptUtils functions are obsolete. They have been moved to the Client and Repository Utilities, which should be used going forward. All functions are called by using ScriptUtils.function Function Description string GetRootDirectory() Returns the root directory of the Deadline repository. string GetPluginsDirectory() Returns the plugin directory of the Deadline repository. string GetSlavesDirectory() Returns the slaves directory of the Deadline repository. string GetPulseDirectory() Returns the pulse directory of the Deadline repository. string GetJobsDirectory()

214 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Returns the jobs directory of the Deadline repository. string GetJobDropDirectory() Returns the drop jobs directory of the Deadline repository. string GetLimitGroupsDirectory() Returns the limit group directory of the Deadline repository. string GetUsersDirectory() Returns the users directory of the Deadline repository. string GetSettingsDirectory() Returns the settings directory of the Deadline repository. string GetSubmissionDirectory() Returns the submission directory of the Deadline repository. string GetTrashDirectory() Returns the trash directory of the Deadline repository. string GetUsersHomeDirectory() Returns the Deadline client home directory for all users. string GetCurrentUserHomeDirectory() Returns the Deadline client home directory for the current user. string GetUsersSettingsDirectory() Returns the user settings directory of the Deadline client. string GetDeadlineTempPath() Returns the temp directory of the Deadline client. tuple GetPluginNames() Returns the list of plugin names. tuple GetPoolNames() Returns the list of pool names. tuple GetGroupNames() Returns the list of group names. tuple GetSlaveNames() Returns the list of slave names. tuple GetPulseNames() Returns the list of pulse names. tuple GetJobIds() Returns the list of job IDs. tuple GetArchivedJobIds() Returns the list of archived job IDs. tuple GetLimitGroupNames()

6.1. Scripting Overview 215 Deadline User Manual, Release 5.2.49424

Returns the list of limit group names. tuple GetUserNames() Returns the list of user names. tuple GetSubmissionScriptFilenames() Returns the list of monitor submission script filenames. tuple GetMonitorJobScriptFilenames() Returns the list of monitor job script filenames. tuple GetMonitorSlaveScriptFilenames() Returns the list of monitor slave script filenames. tuple GetGeneralScriptFilenames() Returns the list of general monitor script filenames. int ExecuteCommand( StringCollection args ) Executes a command the same way as if you were passing arguments to DeadlineCommand, and returns the error code. string ExecuteCommandAndGetOutput( StringCollection args ) Executes a command the same way as if you were passing arguments to DeadlineCommand, and returns the stdout. void LogText( string line ) Writes to the log of the application calling the script (either the Monitor or the Slave).

6.1.4 Deadline Objects Reference

Some Script functions will give you access to Deadline objects like Jobs or SlaveSettings.

Job

To use the Job object, you must import from the Deadline.Jobs module using this import line in your script:

from Deadline.Jobs import *

A new job can be created using the Job constructor: myJob= Job()

Job Properties If you have an instance of a Job, you can get or set values using the following properties. For example: jobName= myJob.JobName myJob.JobName="A new name"

Note that any properties you modify will only be committed if you use the RepositoryUtils.SaveJob() function. Property Description string JobComment Gets or sets the job comment. int JobConcurrentTasks

216 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Gets or sets the job concurrent task count. string JobDepartment Gets or sets the job department. float JobDependencyPercentageValue Gets or sets the percentage of tasks that must be completed by the job’s dependencies before it will resume. bool JobEmailNotification If overriding the job notification method, gets or sets if an email notification should be sent. bool JobEnableAutoTimeout Gets or sets if Auto Timeout is enabled for the job. bool JobEnableTimeoutsForScriptTasks Gets or sets if the job timeout is applied to pre and post job script tasks. string JobExtraInfo0 Gets or sets the extra info 0 property. string JobExtraInfo1 Gets or sets the extra info 1 property. string JobExtraInfo2 Gets or sets the extra info 2 property. string JobExtraInfo3 Gets or sets the extra info 3 property. string JobExtraInfo4 Gets or sets the extra info 4 property. string JobExtraInfo5 Gets or sets the extra info 5 property. string JobExtraInfo6 Gets or sets the extra info 6 property. string JobExtraInfo7 Gets or sets the extra info 7 property. string JobExtraInfo8 Gets or sets the extra info 8 property. string JobExtraInfo9 Gets or sets the extra info 9 property. bool JobForceReloadPlugin Gets or sets if the job’s plugin should be reloaded by the Slave between tasks. string JobGroup Gets or sets the job group. bool JobGrowlNotification

6.1. Scripting Overview 217 Deadline User Manual, Release 5.2.49424

If overriding the job notification method, gets or sets if a growl notification should be sent. bool JobIgnoreBadJobDetection Gets or sets if the job should ignore bad job detection. bool JobIgnoreFailedJobDetection Gets or sets if the job should ignore failure detection. bool JobIgnoreFailedTaskDetection Gets or sets if the job should ignore task failure detection. bool JobInterruptible Gets or sets if the job is interruptible. bool JobIsFrameDependent Gets or sets if the job is frame dependent. bool JobLimitTasksToNumberOfCpus Gets or sets if the job’s concurrent tasks should be limited to the number of CPUs that the slave rendering it has. int JobMinRenderTimeSeconds Gets or sets the minimum render time, in seconds, per task (0 to disable). string JobName Gets or sets the job name. bool JobNetsendNotification If overriding the job notification method, gets or sets if a net message notification should be sent. string JobNotificationNote Gets or sets a note that will be appended to the job’s notification. string JobOnJobComplete Gets or sets the action to perform when the job finishes. Valid actions are “Archive”, “Delete”, or “Nothing”. string JobOnTaskTimeout Gets or sets the action to take when a job timeout occurs. Valid actions are “Error”, “Notify”, and “Both”. bool JobOverrideNotificationMethod Gets or sets if the job’s notification method should be overridden. string JobPool Gets or sets the job pool. string JobPostJobScript Gets or sets the post job script. string JobPostTaskScript Gets or sets the post task script. string JobPreJobScript Gets or sets the pre job script. string JobPreTaskScript

218 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Gets or sets the pre task script. int JobPriority Gets or sets the job priority (0-100). bool JobResumeOnCompleteDependencies Gets or sets if the job should resume on completed dependencies. bool JobResumeOnDeletedDependencies Gets or sets if the job should resume on deleted dependencies. bool JobResumeOnFailedDependencies Gets or sets if the job should resume on failed dependencies. bool JobSequentialJob Gets or sets if the job is a sequential job. bool JobSuppressEvents Gets or sets if the job should trigger events (for Event Plug-ins). bool JobSynchronizeAllAuxiliaryFiles Gets or sets if the slave rendering the job should sync all of its job files between tasks. If False, only the job info and plugin info files are synced. int JobTaskTimeoutSeconds Gets or sets the maximum render time, in seconds, per task (0 to disable). string JobUserName Gets or sets the user that submitted the job. Job Read-Only Properties If you have an instance of a Job, you can get read-only values using the following proper- ties. For example: jobStatus= myJob.JobStatus

Property Description tuple JobAuxiliarySubmissionFileNames Gets the list of auxiliary files that have been submitted with the job (ie: the scene file is considered an auxiliary file). DateTime JobCompletedDateTime Gets the date and time the job finished at, represented by the .NET DateTime class. If the job hasn’t finished yet, DateTime.MinValue will be returned. tuple JobDependencyIDs Gets the IDs of the jobs that this job is dependent on. string JobFrames Gets the job frames. tuple JobFramesList Gets the job frames list. int JobFramesPerTask

6.1. Scripting Overview 219 Deadline User Manual, Release 5.2.49424

Gets the frames per task. string JobId Gets the job ID. tuple JobLimitGroups Gets the job limit groups. tuple JobNotificationEmails Gets the additional emails that notifications are sent to. tuple JobNotificationTargets Gets the job notification targets. tuple JobOutputDirectories Gets the job output directories. tuple JobOutputFileNames Gets the job output file names. string JobPlugin Gets the job plugin name. DateTime JobStartedDateTime Gets the date and time the job started at, represented by the .NET DateTime class. If the job hasn’t started yet, DateTime.MinValue will be returned. string JobStatus Gets the job status. DateTime JobSubmitDateTime Gets the submission date and time, represented by the .NET DateTime class. string JobSubmitMachine Gets the name of the machine that the job was submitted from. int JobTaskCount Gets the task count for the job. Job Functions If you have an instance of a Job, you can access some settings using the following functions. For example: myJob.SetJobLimitGroups( ("myLimit1","myLimit2"))

Note that any settings you modify will only be committed if you use the RepositoryUtils.SaveJob() function. Function Description tuple GetJobExtraInfoKeys() Gets the list of key names for the job’s extra info key/value pairs. string GetJobExtraInfoKeyValue( string key ) Gets the value for the given key. If the key does’t exist, an empty string is returned.

220 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

void SetJobDependencyIDs( tuple jobIds ) Sets the IDs of the jobs that this job is dependent on. void SetJobExtraInfoKeyValue( string key, string value ) Sets the value for the given key. If the key does’t exist, it is added automatically. void SetJobLimitGroups( tuple limitGroupNames ) Sets the limit groups this job requires. void SetJobNotificationEmails( tuple emails ) Sets the additional emails that notifications for this job will be sent to. void SetJobNotificationTargets( tuple userNames ) Sets the additional users that will be notified for this job.

Task

To use the Task object, you must import from the Deadline.Jobs module using this import line in your script:

from Deadline.Jobs import *

Task Read-Only Properties If you have an instance of a Task, you can get read-only values using the following properties. For example: taskStatus= myTask.TaskStatus

Property Description tuple TaskFrameList Gets the task frame list. string TaskFrameString Gets the task frame string. string TaskId Gets the task ID. string TaskSlaveMachineName Gets the machine that rendered or is rendering this task. string TaskStatus Gets the task status.

SlaveSettings

To use the SlaveSettings object, you must import from the Deadline.Slaves module using this import line in your script:

from Deadline.Slaves import *

A new SlaveSettings can be created using the SlaveSettings constructor:

6.1. Scripting Overview 221 Deadline User Manual, Release 5.2.49424

mySlaveSettings= SlaveSettings()

SlaveSettings Properties If you have an instance of a SlaveSettings, you can get or set values using the following properties. For example: description= mySlaveSettings.SlaveDescription mySlaveSettings.SlaveDescription="A new description"

Note that any properties you modify will only be committed if you use the RepositoryUtils.SaveSlaveSettings() func- tion. Property Description string SlaveComment Gets or sets the slave comment. int SlaveConcurrentTasksLimit Gets or sets the concurrent task override (0-16). If set to 0, the slave’s CPU count will be used. tuple SlaveCpuAffinity Gets or sets which CPUs the slave should use if its affinity is being overridden. string SlaveDescription Gets or sets the slave description. bool SlaveEnabled Gets or sets if slave is enabled. float SlaveNormalizedRenderTimeMultiplier Gets or sets the multiplier used to calculate the normalized render time for tasks rendered by this slave. float SlaveNormalizedTimeoutMultiplier Gets or sets the multiplier used to calculate the normalized timeout for tasks rendered by this slave. bool SlaveOverrideCpuAffinity Gets or sets if the slave’s affinity should be overridden. SlaveSettings Read-Only Properties If you have an instance of a SlaveSettings, you can get read-only values using the following properties. For example: name= mySlaveSettings.SlaveName

Property Description tuple SlaveGroups Gets the groups assigned to the slave. string SlaveName Gets the slave name. tuple SlavePools Gets the pools assigned to the slave.

222 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

SlaveSettings Functions If you have an instance of a SlaveSettings, you can access some settings using the following functions. For example: mySlaveSettings.SetSlavePools( ("myPool1","myPool2"))

Note that any settings you modify will only be committed if you use the RepositoryUtils.SaveSlaveSettings() function. Function Description void SetSlaveGroups( tuple groupNames ) Sets the groups assigned to this slave. void SetSlavePools( tuple poolNames ) Sets the pools assigned to this slave.

SlaveInfo

To use the SlaveInfo object, you must import from the Deadline.Slaves module using this import line in your script:

from Deadline.Slaves import *

A new SlaveInfo can be created using the SlaveInfo constructor: mySlaveInfo= SlaveInfo()

Note though that there isn’t a way to commit a SlaveInfo object, so creating a new instance of one is usually pointless. SlaveInfo Read-Only Properties If you have an instance of a SlaveInfo, you can get read-only values using the following properties. For example: machineUser= mySlaveInfo.MachineUserName

Property Description string MachineArchitecture Gets the machine’s architecture. int MachineCPUs Gets the machine’s CPU count. int MachineCPUUsage Gets the machine’s current CPU usage. long MachineDiskSpace Gets the machine’s free disk space, in bytes. long MachineFreeMemory Gets the machine’s free memory, in bytes. string MachineIPAddress Gets the machine’s IP address. string MachineMACAddress Gets the machine’s MAC address.

6.1. Scripting Overview 223 Deadline User Manual, Release 5.2.49424 long MachineMemory Gets the machine’s total memory, in bytes. string MachineOperatingSystem Gets the machine’s operating system. long MachineProcessorSpeed Gets the machine’s processor speed, in hertz. string MachineRealName Gets the machine’s real host name. string MachineUserName Gets the machine’s user. string MachineVideoCard Gets the machine’s video card. int SlaveBadJobs Gets the number of jobs marked bad for this slave. int SlaveCompletedTasks Gets the number of tasks the slave has rendered successfully during its current session. string SlaveCurrentJobGroup Gets the group of the job if the slave is rendering a job. string SlaveCurrentJobId Gets the ID of the job if the slave is rendering a job. string SlaveCurrentJobName Gets the name of the job if the slave is rendering a job. string SlaveCurrentJobPool Gets the pool of the job if the slave is rendering a job. int SlaveCurrentJobPriority Gets the priority of the job if the slave is rendering a job. string SlaveCurrentJobUserName Gets the name of the job’s user if the slave is rendering a job. string SlaveCurrentPlugin Gets the plugin the slave has loaded if it’s rendering a job. int SlaveFailedTasks Gets the number of tasks the slave has failed to render during its current session. bool SlaveFreeMode Gets if the slave is running in free mode. bool SlaveIsConnectedToPulse Gets if the slave connected to Pulse.

224 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424 bool SlaveIsLicensePermanent Gets if the slave’s license is permanent. string SlaveLastMessage Gets the last update message posted by the slave. int SlaveLicenseDaysLeftToExpiry Gets the number of days the slave’s license is valid for. string SlaveLicenseServer Gets the license server the slave is connected to. tuple SlaveLimitGroupStubs Gets the limit group stubs the slave has loaded if it’s rendering a job. string SlaveName Gets the slave name. int SlaveRunningTime Gets the duration of the slave’s current session, in seconds. string SlaveState Gets the slave’s state.

PulseInfo

To use the PulseInfo object, you must import from the Deadline.Pulses module using this import line in your script: from Deadline.Pulses import *

A new PulseInfo can be created using the PulseInfo constructor: myPulseInfo= PulseInfo()

Note though that there isn’t a way to commit a PulseInfo object, so creating a new instance of one is usually pointless. PulseInfo Read-Only Properties If you have an instance of a PulseInfo, you can get read-only values using the following properties. For example: machineUser= myPulseInfo.MachineUserName

Property Description string MachineArchitecture Gets the machine’s architecture. int MachineCPUs Gets the machine’s CPU count. int MachineCPUUsage Gets the machine’s current CPU usage. long MachineDiskSpace Gets the machine’s free disk space, in bytes.

6.1. Scripting Overview 225 Deadline User Manual, Release 5.2.49424 long MachineFreeMemory Gets the machine’s free memory, in bytes. string MachineIPAddress Gets the machine’s IP address. string MachineMACAddress Gets the machine’s MAC address. long MachineMemory Gets the machine’s total memory, in bytes. string MachineOperatingSystem Gets the machine’s operating system. long MachineProcessorSpeed Gets the machine’s processor speed, in hertz. string MachineRealName Gets the machine’s real host name. string MachineUserName Gets the machine’s user. string MachineVideoCard Gets the machine’s video card. string PulseName Gets the pulse name. int PulsePort Gets the port that Pulse is listening on. int PulseRunningTime Gets the duration of pulse’s current session, in seconds. string PulseState Gets pulse’s state.

UserInfo

To use the UserInfo object, you must import from the Deadline.Users module using this import line in your script: from Deadline.Users import *

A new UserInfo can be created using the UserInfo constructor: myUserInfo= UserInfo()

UserInfo Properties If you have an instance of a UserInfo, you can get or set values using the following properties. For example: email= myUserInfo.UserEmailAddress myUserInfo.UserEmailAddress="[email protected]"

226 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Note that any properties you modify will only be committed if you use the RepositoryUtils.SaveUserInfo() function. Property Description string UserEmailAddress Gets or sets the user’s email address. bool UserEmailNotification Gets or sets if the user wants to receive notifications via email. string UserGroup Gets or sets name of the group that the user belongs to. Valid groups are “Normal” or “Power”. bool UserGrowlNotification Gets or sets if the user wants to receive notifications via Growl. string UserGrowlPassword Gets or sets the user’s Growl password. string UserMachine Gets or sets the user’s workstation name. string UserName Gets or sets the user name. bool UserNetsendNotification Gets or sets if the user wants to receive notifications via net messages. bool UserStickyGrowlNotifications Gets or sets if the user wants their Growl notifications to be sticky. string UserWebServicePassword Gets or sets the user’s web service password (used by Deadline mobile applications).

LimitGroup

To use the LimitGroup object, you must import from the Deadline.LimitGroups module using this import line in your script: from Deadline.LimitGroups import *

A new LimitGroup can be created using the LimitGroup constructor: myLimitGroup= LimitGroup()

LimitGroup Properties If you have an instance of a LimitGroup, you can get or set values using the following properties. For example: maximum= myLimitGroup.LimitGroupLimit myLimitGroup.LimitGroupLimit= 123

6.1. Scripting Overview 227 Deadline User Manual, Release 5.2.49424

Note that any properties you modify will only be committed if you use the RepositoryUtils.SaveLimitGroup() function. Property Description bool LimitGroupIsJobSpecific Gets or sets if the limit is job-specific (which means it represents a job’s Machine Limit). int LimitGroupLimit Gets or sets the limit. float LimitGroupReleasePercentage Gets or sets the task progress at which the limit is released by the slave. bool LimitGroupWhitelistFlag Gets or sets if the limit’s list of slaves is a white list instead of a black list. LimitGroup Read-Only Properties If you have an instance of a LimitGroup, you can get read-only values using the following properties. For example: name= myLimitGroup.LimitGroupName

Property Description tuple LimitGroupExcludedSlaves Gets the list of slaves that don’t need to acquire this limit in order to render a job. tuple LimitGroupListedSlaves Gets the list of slaves, which could be a white list or a black list. string LimitGroupName Gets the limit name. LimitGroup Functions If you have an instance of a LimitGroup, you can access some settings using the following functions. For example: myLimitGroup.SetLimitGroupListedSlaves( ("mySlave1","mySlave2","mySlave3"))

Note that any settings you modify will only be committed if you use the RepositoryUtils.SaveLimitGroup() function. Function Description void SetLimitGroupExcludedSlaves( tuple slaveNames ) Sets the list’s list of slaves that don’t need to acquire this limit in order to render a job. void SetLimitGroupListedSlaves( tuple slaveNames ) Sets the limit’s slave list.

6.1.5 User Interface Scripting

If you are creating scripts for the Monitor, or to be executed using Deadline Command, you have ability to create user interfaces to gather data from the users. This is a necessity when creating Submission scripts, and comes in handy when creating other scripts as well. All user interface development is done obtaining a reference to the ScriptDialog

228 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

object (which is part of the Deadline.Scripting module), and calling this reference’s member functions. To get a reference to this object, use this line of code: scriptDialog= DeadlineScriptEngine.GetScriptDialog()

Now you can use this reference to create and show a dialog as shown here: scriptDialog.SetSize( 200, 400) scriptDialog.SetTitle("This Is A Script Dialog") scriptDialog.AddRow() scriptDialog.AddControl("Label","LabelControl","Enter Data", 80,-1) scriptDialog.AddControl("TextBox","TextControl","", 100,-1) scriptDialog.EndRow() scriptDialog.ShowDialog( False)

Check out the submission scripts in \\your\repository\scripts\Submission for excellent examples on how to create your own dialogs and retrieve the data from the user.

Script Dialog Member Functions

There are many more member functions available, all called using scriptDialog.function. Functions that return a Control object are returning a basic .NET control object. Dialog Properties and Control Function Description void CollapseAll() Collapses all group boxes. void CloseDialog() Closes the dialog. void ExpandAll() Expands all group boxes. void Invert() Inverts which group boxes are collapsed and expanded. void LoadSettings( string filename, tuple controlNames ) Loads the sticky settings for the controls specified in the controlNames. void LoadTooltips( string filename ) Loads tool tips from a file. The file should contain lines with the format “Control=Tooltip”, where “Control” is the name of a specific control, and “Tooltip” is the actual tool tip to display for that control. Note that some controls, like range controls, do not support tool tips. void SaveSettings( string filename, tuple controlNames ) Saves the sticky settings for the controls specified in the controlNames. void SetIcon( string filename ) Sets the dialog’s icon to the icon provided by the given filename. void SetSize( int width, int height )

6.1. Scripting Overview 229 Deadline User Manual, Release 5.2.49424

Sets the size of the dialog. void SetTitle( string title ) Sets the dialog’s title. void ShowDialog( bool modal ) Shows the script dialog. string ShowFolderBrowser( string initialPath ) Displays a Folder browser, using initialPath to set the default starting path. If the user cancels the browser, None is returned, otherwise the selected path is returned. void ShowGroupBoxMenu() If called, the group box menu will be available by right-clicking on the dialog. This menu allows you to expand, collapse, or invert the current group boxes. string ShowMessageBox( string message, string title ) Shows a message box with the given message and title, along with an OK button. The text of the pressed button is returned, which is “OK” in this case. string ShowMessageBox( string message, string title tuple buttons ) Shows a message box with the given message and title. The buttons are represented by a list of strings, and the text of the pressed button is returned. string ShowOpenFileBrowser( string initialPath, tuple filters, int filterIndex ) Displays an Open File browser, using initialPath to set the default starting path. Filters have the form name0|filter0|name1|filter1 (for example: Text Files (*.txt)|*.txt|All Files (*.*)|*.*). Use the filterIndex to set the filter that is selected by default (indexes start at 0). If the user cancels the browser, None is returned, otherwise the selected path is returned. string ShowSaveFileBrowser( string initialPath, tuple filters, int filterIndex ) Displays a Save File browser, using initialPath to set the default starting path. Filters have the form name0|filter0|name1|filter1 (for example: Text Files (*.txt)|*.txt|All Files (*.*)|*.*). Use the filterIndex to set the filter that is selected by default (indexes start at 0). If the user cancels the browser, None is returned, otherwise the selected path is returned. Adding Layouts Function Description Control AddGroupBox( string name, string text, bool collapsible ) Add a new group box to the dialog. The name is used to uniquely identify the group box, and the specified text is displayed on the control. You can also specify if the group box is collapsible or not. Control AddRow() Add a new row to the dialog. Control AddTab( string name ) Add a new tab to the current tab control, where the given name is the text that appears on the tab. Must be called between calls to AddTabControl() and EndTabControl(). Control AddTabControl( string name, int width, int height ) Add a new tab control to the dialog with the given name.

230 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

void EndGroupBox( bool isCollapsed ) Ends the current group box, and specifies if the group box should be initially collapsed or not. Should be called after the controls have been added to the current group box. void EndGroupBox( bool isCollapsed, int newWidth ) Ends the current group box, sets its new width, and specifies if the group box should be initially collapsed or not. Should be called after the controls have been added to the current group box. void EndRow() Ends the current row. Should be called after the controls have been added to the current row. void EndTab() Ends the current tab. Should be called after the controls have been added to the current tab. void EndTabControl() Ends the current tab control. Should be called after the tabs have been added to the current tab control. Adding Controls Function Description Control AddComboControl( string name, string type, string defaultValue, tuple items ) Adds a combo box control to the dialog with a default width and height. Control AddComboControl( string name, string type, string defaultValue, tuple items, string tooltip ) Adds a combo box control to the dialog with a default width and height, as well as the given tool tip. Control AddComboControl( string name, string type, string defaultValue, tuple items, int width, int height ) Adds a combo box control to the dialog with the given width and height. Control AddComboControl( string name, string type, string defaultValue, tuple items, int width, int height, string tooltip ) Adds a combo box control to the dialog with the given width and height, as well as the given tool tip. Control AddControl( string name, string type, object defaultValue ) Adds a basic control to the dialog with a default width and height. Control AddControl( string name, string type, object defaultValue, string tooltip ) Adds a basic control to the dialog with a default width and height, as well as the given tool tip. Control AddControl( string name, string type, object defaultValue, int width, int height ) Adds a basic control to the dialog with the given width and height. Control AddControl( string name, string type, object defaultValue, int width, int height, string tooltip ) Adds a basic control to the dialog with the given width and height, as well as the given tool tip. Control AddRadioControl( string name, string type, bool defaultValue, string text, string groupName ) Adds a radio button control to the dialog with a default width and height. All radio buttons in the same group will automatically check/uncheck themselves when another radio button is checked. Control AddRadioControl( string name, string type, bool defaultValue, string text, string groupName, string tooltip ) Adds a radio button control to the dialog with a default width and height, as well as the given tool tip. All radio buttons in the same group will automatically check/uncheck themselves when another radio button is checked.

6.1. Scripting Overview 231 Deadline User Manual, Release 5.2.49424

Control AddRadioControl( string name, string type, bool defaultValue, string text, string groupName, int width, int height ) Adds a radio button control to the dialog with the given width and height. All radio buttons in the same group will automatically check/uncheck themselves when another radio button is checked. Note that this function uses the specified name for the radio control text, as well as a unique identifier. Control AddRadioControl( string name, string type, bool defaultValue, string text, string groupName, int width, int height, string tooltip ) Adds a radio button control to the dialog with the given width and height, as well as the given tool tip. All radio buttons in the same group will automatically check/uncheck themselves when another radio button is checked. Note that this function uses the specified name for the radio control text, as well as a unique identifier. Control AddRangeControl( string name, string type, float defaultValue, float min, float max, int decimals, float incre- ment ) Adds a range control to the dialog with a default width and height. Control AddRangeControl( string name, string type, float defaultValue, float min, float max, int decimals, float incre- ment, int width, int height ) Adds a range control to the dialog with the given width and height. Control AddSelectionControl( string name, string type, object defaultValue, string filter ) Adds a selection control to the dialog with a default width and height. The filter option is only used when adding file browser selection controls. Control AddSelectionControl( string name, string type, object defaultValue, string filter, string tooltip ) Adds a selection control to the dialog with a default width and height, as well as the given tool tip. The filter option is only used when adding file browser selection controls. Control AddSelectionControl( string name, string type, object defaultValue, string filter, int width, int height ) Adds a selection control to the dialog with the given width and height. The filter option is only used when adding file browser selection controls. Control AddSelectionControl( string name, string type, object defaultValue, string filter, int width, int height, string tooltip ) Adds a selection control to the dialog with the given width and height, as well as the given tool tip. The filter option is only used when adding file browser selection controls. Control Propeties Function Description bool GetEnabled( string name ) Returns whether or not the control identified by the name specified is enabled. tuple GetItems( string name ) Returns the items in the combo box control identified by the name specified. object GetValue( string name ) Returns the value of the control identified by the name specified. void SetEnabled( string name, bool enabled ) Sets whether or not the control identified by the name specified is enabled.

232 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

void SetItems( string name, tuple items ) Sets the items in the combo box control identified by the name specified. void SetTooltip( string name, string tooltip ) Sets the tool tip of the control identified by the name specified. Note that some controls, like range controls, do not support tool tips. void SetValue( string name, object value ) Sets the value of the control identified by the name specified.

Basic Script Dialog Controls

These are controls that can be added to the dialog using the AddControl() function explained in the table above. The controls and their value types are as follows: ButtonControl A simple button control. • Value Type: String. The value is the text that is displayed on the button. • ValueModified Event: Occurs when the button is pressed. scriptDialog.AddControl("MyButton","ButtonControl","Press Me", 100,-1)

ColorControl A control that allows you to select a color. Note that the Color type is from System.Drawing.Color, so you need to import System.Drawing before you can use it. • Value Type: System.Color. The value is the color that is selected. • ValueModified Event: Occurs when the color is changed either using the browse button or manually. scriptDialog.AddControl("MyColor","ColorControl", Color.Red, 200,-1)

DependencyControl A control that allows you to select jobs from a list. The jobs are represented by their IDs. • Value Type: String. The value is a comma separated list of job IDs. • ValueModified Event: Occurs when the user changes the dependency list by either using the browse button or by typing in text manually. scriptDialog.AddControl("MyDeps","DependencyControl","000_000_000_ABCD1234,111_222_333_ABCD1234", 200,-1)

GroupComboControl A control that allows you to select a Group. The Group list is automatically populated with the current Deadline Groups. • Value Type: String. The value is the selected Group. • ValueModified Event: Occurs when a different Group is selected. scriptDialog.AddControl("MyGroup","GroupComboControl","none", 200,-1)

LabelControl A simple label control. • Value Type: String. The value is the text that is displayed in the label.

6.1. Scripting Overview 233 Deadline User Manual, Release 5.2.49424

• ValueModified Event: Not applicable for this control. scriptDialog.AddControl( "MyLabel, "LabelControl", "This is some text for this label", 200, -1 )

LimitGroupControl A control that allows you to select Limit Groups from a list. • Value Type: String. The value is a comma separated list of Limit Group names. • ValueModified Event: Occurs when the user changes the Limit Group list by either using the browse button or by typing in text manually. scriptDialog.AddControl("MyLimits","LimitGroupControl","Limit Group 1, Limit Group 2", 200,-1)

MachineListControl A control that allows you to select machines from a list. • Value Type: String. The value is a comma separated list of machine names. • ValueModified Event: Occurs when the user changes the machine list by either using the browse button or by typing in text manually. scriptDialog.AddControl("MyMachines","MachineListControl","Machine001,Machine002,Machine003", 200,-1)

MultilineTextControl A text box control that can have multiple lines. • Value Type: String. The value is the text. • ValueModified Event: Occurs when the text in the box is modified. scriptDialog.AddControl("MyMultiText","MultilineTextControl","One Line \r\nAnother Line", 200, 100)

OnJobCompleteControl A control that allows you to select an action to take when a job completes. The list is automatically populated with the available options. • Value Type: String. The value is the selected action. • ValueModified Event: Occurs when a different action is selected. scriptDialog.AddControl("MyOnComp","OnJobCompleteControl","Nothing", 200,-1)

PoolComboControl A control that allows you to select a Pool. The Pool list is automatically populated with the current Deadline Pools. • Value Type: String. The value is the selected Pool. • ValueModified Event: Occurs when a different Pool is selected. scriptDialog.AddControl("MyPool","PoolComboControl","none", 200,-1)

ReadOnlyTextControl A simple text box control with text that is read-only. • Value Type: String. The value is the text. • ValueModified Event: Not applicable for this control. scriptDialog.AddControl("MyReadOnly","ReadOnlyTextControl","Some Read Only Text", 200,-1)

234 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

SeparatorControl A horizontal line with text, which can be used to separate groups of controls. • Value Type: String. The value is the text that is displayed in the separator. • ValueModified Event: Not applicable for this control. scriptDialog.AddControl("MySeparator","SeparatorControl","This is a Separator", 200,-1)

TextControl A simple text box control. • Value Type: String. The value is the text. • ValueModified Event: Occurs when the text in the box is modified. scriptDialog.AddControl("MyText","TextControl","Some Text", 200,-1)

Selection Script Dialog Controls

These are controls that can be added to the dialog using the AddSelectionControl() function explained in the table above. The controls, their value types, and their filter options are as follows: CheckBoxControl A simple check box control. • Value Type: Boolean. The value indicates whether or not the check box is checked. • Filter: String. The filter is actually used as the text for the check box. • ValueModified Event: Occurs when the check box is checked or unchecked. scriptDialog.AddSelectionControl("CheckBox","CheckBoxControl", False,"This is a Check Box", 200,-1)

FileBrowserControl A control for selecting an existing file. • Value Type: String. The selected file name. • Filter: String. The file type filter. For example, Text Files (*.txt)|*.txt|All Files (*.*)|*.*. • ValueModified Event: Occurs when the file name is changed, either by using the browse button or by editing the name manually. scriptDialog.AddSelectionControl("MyFile","FileBrowserControl","","All Files ( *.*)|*.*", 200,-1)

FileSaverControl A control for selecting a file to save to. • Value Type: String. The selected file name. • Filter: String. The file type filter. For example, Text Files (*.txt)|*.txt|All Files (*.*)|*.*. • ValueModified Event: Occurs when the file name is changed, either by using the browse button or by editing the name manually. scriptDialog.AddSelectionControl("MySaveFile","FileSaverControl","","All Files ( *.*)|*.*", 200,-1)

FolderBrowserControl A control for selecting an existing folder.

6.1. Scripting Overview 235 Deadline User Manual, Release 5.2.49424

• Value Type: String. The selected folder name. • Filter: String. Not applicable for this control. • ValueModified Event: Occurs when the folder name is changed, either by using the browse button or by editing the name manually. scriptDialog.AddSelectionControl("MyFolderBrowser","FolderBrowserControl","","", 200,-1)

MultiFileBrowserControl A control for selecting one or more existing files. The files are displayed using a semicolon separated list. • Value Type: String. The selected file name(s). Uses a semicolon to separate multiple file names. • Filter: String. The file type filter. For example, Text Files (*.txt)|*.txt|All Files (*.*)|*.*. • ValueModified Event: Occurs when the file name is changed, either by using the browse button or by editing the name manually. scriptDialog.AddSelectionControl("MyMultiFile","MultiFileBrowserControl","","All Files ( *.*)|*.*", 200,-1)

MultiLineMultiFileBrowserControl A control for selecting one or more existing files. The files are displayed one per line. • Value Type: String. The selected file name(s). Uses a semicolon to separate multiple file names. • Filter: String. The file type filter. For example, Text Files (*.txt)|*.txt|All Files (*.*)|*.*. • ValueModified Event: Occurs when the file name is changed, either by using the browse button or by editing the name manually. scriptDialog.AddSelectionControl("MF","MultiLineMultiFileBrowserControl","","All Files ( *.*)|*.*", 200,-1)

MultiLineMultiFolderBrowserControl A control for selecting one or more existing folders. The folders are displayed one per line. • Value Type: String. The selected folder name(s). Uses a semicolon to separate multiple folder names. • Filter: String. Not applicable for this control. • ValueModified Event: Occurs when the folder name is changed, either by using the browse button or by editing the name manually. scriptDialog.AddSelectionControl("MyMultiLineFolder","MultiLineMultiFolderBrowserControl","","", 200,-1)

Range Script Dialog Controls

These are controls that can be added to the dialog using the AddRangeControl() function explained in the table above. The controls, their value types, and how they use the Minimum, Maximum, Decimal Places, and Increment display settings are as follows: ProgressBarControl A control for displaying progress. • Value Type: Float. The current progress value. Change this to change the progress display. • Display Settings: Minimum and Maximum are used for the beginning and end of the progress bar. Decimal Places and Increment are not applicable for this control. • ValueModified Event: Not applicable for this control.

236 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

scriptDialog.AddRangeControl("MyProgress","ProgressBarControl",1,1, 100,0,0, 200- 200,-1)

RangeControl A control for selecting a number from a defined range. • Value Type: Float. The current value. • Display Settings: Minimum and Maximum are used to define the lower and upper range for the control. Decimal Places are used to indicate how many decimal places should be used, and Increment is used to indicate how much the value should change when the Up or Down arrows are pressed. • ValueModified Event: Occurs when the value changes, either by using the Up and Down buttons or by changing the value manually. scriptDialog.AddRangeControl("MyRange","RangeControl", 50.0, 0.0, 100.0,1, 5.0, 200,-1)

SliderControl The same as a RangeControl, expect that there is a Slider beside it. • Value Type: Float. The current value. • Display Settings: Minimum and Maximum are used to define the lower and upper range for the control. Decimal Places are used to indicate how many decimal places should be used, and Increment is used to indicate how much the value should change when the Up or Down arrows are pressed. • ValueModified Event: Occurs when the value changes, either by using the Slider, the Up and Down buttons, or by changing the value manually. scriptDialog.AddRangeControl("MySliderControl","SliderControl", 50,0, 100,0,1, 200,-1)

Combo Script Dialog Controls

These are controls that can be added to the dialog using the AddComboControl() function explained in the table above. The controls and their value types are as follows: ComboControl A control that allows you to select an item from a drop down list. • Value Type: String. The value is the selected item. • ValueModified Event: Occurs when a different item is selected. scriptDialog.AddComboControl("MyCombo","ComboControl","Two",("One","Two","Three"), 200,-1)

ListControl A control that allows you to select an item from a list. • Value Type: String. The value is the selected item. • ValueModified Event: Occurs when a different item is selected. scriptDialog.AddComboControl("MyList","ListControl","Two",("One","Two","Three"), 200,-1)

MultiSelectListControl A control that allows you to select one or more items from a list. • Value Type: String array. The value is an array containing the selected item(s). • ValueModified Event: Occurs when the list of selected items changes.

6.1. Scripting Overview 237 Deadline User Manual, Release 5.2.49424

scriptDialog.AddComboControl( "MyMultiList", "MultiSelectListControl", ("One,"Two"), ("One","Two","Three"), 200, -1 )

Radio Script Dialog Controls

These are controls that can be added to the dialog using the AddRadioControl() function explained in the table above. The controls and their value types are as follows: RadioControl A simple radio control. The text specified will represent the text shown for this control. • Value Type: Boolean. If the radio button is checked or not. • ValueModified Event: Occurs when the radio button becomes checked or unchecked. scriptDialog.AddRadioControl("RadioOne","RadioControl", True,"Radio One","RadioGroup", 100,-1) scriptDialog.AddRadioControl("RadioTwo","RadioControl", False,"Radio Two","RadioGroup", 100,-1)

Script Dialog Events

You can set up events to call functions when a value for a particular control has been modified. First, you need a reference to the control you want to create the event handler. Every function that adds a control to the Script Dialog returns a reference to the control that was just added. For example: textControl= scriptDialog.AddControl("MyTextControl","TextControl","This is a test")

Then to create the event handler, add the following: textControl.ValueModified+= TextValueChanged

Finally, you need to define the handler function: def TextValueChanged( *args ): ... do something ...

Again, there are many examples of this in the Submission scripts found in \\your\repository\scripts\Submission.

Script Dialog Example

This script shows examples of all the controls explained above, as well as some script dialog events. To install, download UI Scripting Example for Deadline Monitor from the Miscellaneous Deadline Downloads Page, and unzip it to \\your\repository\scripts\General. Then restart the Deadline Monitor and you should find the “Script UI Example” menu item in the Scripts menu.

6.2 Plug-in Scripting

6.2.1 Overview

All of Deadline’s plug-ins are completely scripted, which means that it’s easy to create your own plug-ins or customize the existing ones (providing you have some experience with the Python scripting language). Because Deadline can use IronPython or Python for .NET to execute scripts, not only can you access all of the Python modules, you can import all of the .NET libraries as well, which means the level of customization is nearly endless.

238 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

6.2.2 General Plug-in Information

There are two types of plug-ins that can be created for Deadline: • Simple • Advanced To create a new plug-in, you start by creating a folder in the Repository’s plugins folder and give it the name of your plug-in. For the sake of this document, we will call our new plug-in MyPlugin. All relative script and configuration files for this plug-in are to be placed in this plug-in’s folder (some are required and some are optional).

The dlinit File - Required

The first file is MyPlugin.dlinit, which is the main configuration file for this plug-in. It is a plain text file that defines a few general key=value plug-in properties, which include: Key Name Description About A short description of the plug-in. ConcurrentTasks If the plug-in supports concurrent tasks (True/False). Note that if you change this value, you’ll have to restart the Slave applications so that they recognize the change. This is because they cache this information. It can also define key=value custom settings to be used by the plug-in. A common custom setting is the executable to use to render the job. For this example, our MyPlugin.dlinit file might look like this: About=My Example Plugin for Deadline ConcurrentTasks=True MyPluginRenderExecutable=c:\path\to\my\executable.exe

The py File - Required

The other required file is MyPlugin.py, which is the main plug-in script file. It defines the main DeadlinePlugin class that contains the necessary functions that Deadline uses to render a job. The template for this script file might look like this: from Deadline.Plugins import *

###################################################################### ## This is the function that Deadline calls to get an instance of the ## main DeadlinePlugin class. ###################################################################### def GetDeadlinePlugin(): return MyPlugin()

###################################################################### ## This is the main DeadlinePlugin class for MyPlugin. ###################################################################### class MyPlugin (DeadlinePlugin):

# TODO: Place code here

6.2. Plug-in Scripting 239 Deadline User Manual, Release 5.2.49424

The GetDeadlinePlugin() function is important, as it allows Deadline to get an instance of our MyPlugin class (which is extending the abstract DeadlinePlugin class). If this function isn’t defined, Deadline will report an error when it tries to render the job. Notice that we’re importing the Deadline.Plugins namespace so that we can access the DeadlinePlugin class. In fact, because we’re using IronPython, you can import any .NET namespace, like System, System.IO, etc: from System import * from System.Diagnostics import * from System.IO import *

The MyPlugin class will need to override certain functions based on the type of plug-in it is (simple or advanced). One function that all plug-ins should override is the InitializeProcess function. This function defines some general plug-in settings: ## Called by Deadline to initialize the process. def InitializeProcess( self): # Set the plugin specific settings. self.SingleFramesOnly= False self.PluginType= PluginType.Simple

Remember that by default, Deadline will execute scripts using the IronPython engine. If you want to use Python for .NET, the first line of your MyPlugin.py must look like the following. This tells Deadline that the plugin is a Python.NET plugin: #Python.NET

In addition, the way you override functions is slightly different for Python.NET plugins. For example, in an Iron- Python plugin, you just need to define the function in the plugin class (see the code for InitializeProcess() above). In Python.NET plugins, you also need to add a corresponding event handler in the __init__ constructor for the plugin class. For example: def __init__( self): # Set up the event handlers because this is a Python.NET plugin self.InitializeProcessEvent+= self.InitializeProcess

## Called by Deadline to initialize the process. def InitializeProcess( self): # Set the plugin specific settings. self.SingleFramesOnly= False self.PluginType= PluginType.Simple

The general plug-in properties that can be defined are: Property Description PluginType The type of plug-in this is (PluginType.Simple/PluginType.Advanced). SingleFramesOnly If this plug-in can only render one frame at a time (True/False). There are many other functions that can be overridden, but most of these are dependent on the type of plug-in we’re creating, and will be covered in their respective sections below. Here is the list of functions you can override for both types of plug-in: Function Description void MonitoredManagedProcessExit( string name )

240 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Optional - Allows you to handle the situation where a Monitored Managed Process exits unexpectedly. If not overrid- den, the job will simply fail when this happens. void MonitoredProgramExit( string name ) Optional - Allows you to handle the situation where a Monitored Program exits unexpectedly. If not overridden, the job will simply fail when this happens. void InitializeProcess() Required - Defines some plug-in settings and any popup or stdout handlers that we need. bool IsSingleFramesOnly() Optional - Allows you to override SingleFramesOnly setting in the InitializeProcess() function, using code to deter- mine if the setting should be True or False. If not overridden, the SingleFramesOnly setting is used.

The param File - Optional

The MyPlugin.param is used to declare properties which are used by the Plugin Configuration dialog in the Monitor to dynamically generate a UI for modifying custom settings as they appear in the MyPlugin.dlinit file. After you’ve created this file, open the Monitor and enter Super User mode. Then select Tools -> Configure Plugins and look for your plug-in in the list on the left.

The file might look something like: [MyPluginRenderExecutable] Type=filename Label=My Plugin Render Executable Default=c:\path\to\my\executable.exe Description=The path to the executable file used for rendering.

You’ll notice that the property name between the square brackets matches the MyPluginRenderExecutable custom setting we defined in our MyPlugin.dlinit file. This means that this control will change the MyPluginRenderExecutable setting. The available key=value pairs for the properties defined here are: Key Name Description Type

6.2. Plug-in Scripting 241 Deadline User Manual, Release 5.2.49424

The type of control (Boolean/Enum/Filename/FilenameSave/Float/Folder/Integer/Label/MultiFilename/String). Category The category the control should go under. CategoryIndex This determines the control’s order under its category. This does the same thing as Index. CategoryOrder This determines the category’s order among other categories. If more than one CategoryOrder is defined for the same category, the lowest value is used. Default The default value to be used if this property is not defined in the dlinit file. This does the same thing as DefaultValue. DefaultValue The default value to be used if this property is not defined in the dlinit file. This does the same thing as Default. Description A short description of the property the control is for (displayed as a tooltip in the UI). DisableIfBlank If True, a control will not be shown if this property is not defined in the dinit file (True/False). This does the same thing as IgnoreIfBlank. IgnoreIfBlank If True, a control will not be shown if this property is not defined in the dinit file (True/False). This does the same thing as DisableIfBlank. Index This determines the control’s order under its category. This does the same thing as CategoryIndex. Label The control label. Required If True, a control will be shown for this property even if it’s not defined in the dlinit file (True/False). There are also key/value pairs for specific controls: Key Name Description DecimalPlaces The number of decimal places for the Float controls. Filter The filter string for the Filename, FilenameSave, or MultiFilename controls. Increment The value to increment the Integer or Float controls by. Items The semicolon separated list of items for the Enum control. This does the same thing as Values.

242 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Maximum The maximum value for the Integer or Float controls. Minimum The minimum value for the Integer or Float controls. Values The semicolon separated list of items for the Enum control. This does the same thing as Items.

The options File - Optional

The MyPlugin.options file declares properties which are used by the Job Properties dialog in the Monitor to dynami- cally generate a UI for modifying plug-in specific options as they appear in the plug-in info file that is submitted with the job. After you’ve created this file, you can right-click on a job in the Monitor that uses this plug-in and select Modify Properties. You should then see a MyPlugin tab page which you can select to view these properties.

Often, these plug-in specific options are used to build up the arguments to be passed to the rendering application. Let’s assume that our render executable takes a “-verbose” argument that accepts a boolean parameter, and that the plug-in info file submitted with the job contains the following: Verbose=True

Now we would like to be able to change this value from the Job Properties dialog in the Monitor, so our MyPlu- gin.options file might look like this: [Verbose] Type=boolean Label=Verbose Logging Description=If verbose logging is enabled. Required=true DisableIfBlank=false DefaultValue=True

6.2. Plug-in Scripting 243 Deadline User Manual, Release 5.2.49424

You’ll notice that the property name between the square brackets matches the Verbose setting in our plug-in info file. This means that this control will change the Verbose setting. The available key=value pairs for the properties defined here are the same as those defined for the param file above.

The ico File - Optional

You can add a MyPlugin.ico file, which is an 16x16 icon file for identifying the plug-in. In most cases, this should be the plug-in application’s logo. This icon will appear next to the job in the Monitor, and will also identify the plug-in in the Plugin Configuration dialog. After all of your files have been created, your plug-in folder should look something like this:

The PreLoad.py File - Optional

In Deadline 4.0 and later, you can add a PreLoad.py file, which is a Python script that gets executed by Deadline prior to loading a job that uses this particular plug-in (note that the name of the plug-in isn’t used in the PreLoad.py file name). This is helpful if you want to synchronize some plug-ins, set some environment variables prior to rendering, or perform some other pre-load tasks. See the Global Plug-in Functions section further down for a list of functions that are available to the PreLoad.py script. The only requirement for the PreLoad.py script is that you define a __main__ function. This is the function called by Deadline when it executes the script. def __main__( *args ): ... ''do something'' ...

Here is an example PreLoad.py script that sets a couple of environment variables: from System import * def __main__( *args ): LogInfo("Setting EnvVar1 to True") Environment.SetEnvironmentVariable("EnvVar1","True")

LogInfo("Setting EnvVar2 to False") Environment.SetEnvironmentVariable("EnvVar2","False")

244 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

6.2.3 Simple Plug-ins

A Deadline job goes through three stages: • StartJob: A job enters this stage when it is first picked up by a slave. • RenderTasks: A job can enter this stage many times (once for each task a slave dequeues while it has the current job loaded). • EndJob: A job enters this stage when a slave is unloading the job. Simple plug-ins only covers the RenderTasks stage, and are pretty straight forward. They are commonly used to render with applications that support simple command line rendering (running a command line executable and waiting for it to complete). For example, After Effects has a command line renderer called aerender.exe, which can be executed by Deadline to render specific frames of an After Effects project file. By default, Deadline always assumes you are creating a simple plug-in, but you can explicitly tell Deadline this by overriding the InitializeProcess() function (as explained above) and adding this line: self.PluginType= PluginType.Simple

Within the InitializeProcess() function, you can also define settings specific to the simple plug-in, as well as any popup or stdout handlers that we need. ## Called by Deadline to initialize the process. def InitializeProcess( self): # Set the plugin specific settings. self.SingleFramesOnly= False self.PluginType= PluginType.Simple

# Set the process specific settings. self.ProcessPriority= ProcessPriorityClass.BelowNormal self.UseProcessTree= True self.StdoutHandling= True self.PopupHandling= True

# Set the stdout handlers. self.AddStdoutHandler("WARNING:. *", self.HandleStdoutWarning ) self.AddStdoutHandler("ERROR:(. *)", self.HandleStdoutError )

# Set the popup ignorers. self.AddPopupIgnorer("Popup 1") self.AddPopupIgnorer("Popup 2")

# Set the popup handlers. self.AddPopupHandler("Popup 3","OK") self.AddPopupHandler("Popup 4","Do not ask me this again;Continue")

At this point, if you’re creating a Python.NET plugin, your __init__ and InitializeProcess() functions will now look like this. Notice that the stdout handlers are set up a bit differently for Python.NET plugins. This is covered a bit later. def __init__( self): # Set up the event handlers because this is a Python.NET plugin self.InitializeProcessEvent+= self.InitializeProcess

## Called by Deadline to initialize the process. def InitializeProcess( self): # Set the plugin specific settings. self.SingleFramesOnly= False self.PluginType= PluginType.Simple

6.2. Plug-in Scripting 245 Deadline User Manual, Release 5.2.49424

# Set the process specific settings. self.ProcessPriority= ProcessPriorityClass.BelowNormal self.UseProcessTree= True self.StdoutHandling= True self.PopupHandling= True

# Set the stdout handlers. self.AddStdoutHandlerEvent("WARNING:. *").HandleEvent+= self.HandleStdoutWarning self.AddStdoutHandlerEvent("ERROR:(. *)").HandleEvent+= self.HandleStdoutError

# Set the popup ignorers. self.AddPopupIgnorer("Popup 1") self.AddPopupIgnorer("Popup 2")

# Set the popup handlers. self.AddPopupHandler("Popup 3","OK") self.AddPopupHandler("Popup 4","Do not ask me this again;Continue")

The plugin properties that can be defined are: Property Description dictionary EnvironmentVariables Gets or sets a dictionary containing extra environment variables that will be added to the created process bool HideDosWindow If the application uses a console window, you can use this property to show it (it’s hidden by default). bool PopupHandling Needs to be True if using Popup handlers. ProcessPriorityClass ProcessPriority The process priority of the executable that is launched. Note that ProcessPriorityClass is a .NET enumeration. This property is currently ignored on Linux and OSX. bool StdoutHandling Needs to be True if using Stdout handlers. bool UseProcessTree This should almost always be True. If Enabled, Deadline will control and monitor any child processes launched by the main executable. The AddStdoutHandler() function takes two arguments: a regular expression string, and a pointer to a handler function that is defined in the plug-in class. This handler function will be called when the regular expression string matches a line of stdout from the rendering application. For example: self.AddStdoutHandler("WARNING:. *", self.HandleStdoutWarning ) self.AddStdoutHandler("ERROR:(. *)", self.HandleStdoutError )

If you are writing a Python.NET plugin, you must use the AddStdoutHandlerEvent() function instead. It only takes one argument, which is the regular expression string. It returns a RegexHandlerEvent object with a HandleEvent property that you can assign the handler function to. For example: warningEventHandler= self.AddStdoutHandlerEvent("WARNING:. *") warningEventHandler.HandleEvent+= self.HandleStdoutWarning

246 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

errorEventHandler= self.AddStdoutHandlerEvent("ERROR:(. *)") errorEventHandler.HandleEvent+= self.HandleStdoutError

There is also a shorthand way of doing this:

warningEventHandler = self.AddStdoutHandlerEvent( "WARNING:.*" ).HandleEvent += self.HandleStdoutWarning errorEventHandler = self.AddStdoutHandlerEvent( "ERROR:(.*)" ).HandleEvent += self.HandleStdoutError

Within these handler functions, the GetRegexMatch( int index ) function can be used to get a specific match from the regular expression. The index passed to GetRegexMatch() is the index of the matches that were found. 0 returns the entire matched string, and 1, 2, etc returns the matched substrings (matches that are surrounded by round brackets). If there isn’t a corresponding substring, you’ll get an error (note that 0 is always a valid index). For example: In HandleStdoutWarning(), 0 is the only valid index because there is no substring in round brackets in the regular expression. In HandleStdoutError(), 0 and 1 are valid. 0 will return the entire matched string, whereas 1 will return the substring in the round brackets. You can also use the SuppressThisLine() function to suppress the current line of stdout, or you can use the GetPre- viousStdoutLine() function to get the previous line of stdout (if there is any). For the example above, the following functions would have to be defined: def HandleStdoutWarning( self): LogWarning( self.GetRegexMatch(0))

def HandleStdoutError( self): FailRender("Detected an error:"+ self.GetRegexMatch(1))

The AddPopupIgnorer() function takes one argument: a regular expression string. If a popup is displayed with a title that matches the given regular expression, the popup is simply ignored. Popup ignorers should only be used if the popup doesn’t halt the rendering because it is waiting for a button to be pressed. In the case where a button needs to be pressed to continue, popup handlers should be used instead. The AddPopupHandler() function takes two arguments, a regular expression string, and the button(s) to press (multiple buttons can be separated with semicolons). There are many other functions you can override, but the only required one is RenderExecutable(). As the name indicates, this function should return the full path to the executable to be used for rendering. Continuing our example, this path is specified in the MyPlugin.dlinit file, and we can access it using the global GetConfigEntry() function (all global functions are covered below in the plug-in script function reference): def RenderExecutable( self): return GetConfigEntry("MyPluginRenderExecutable")

Another important (but optional) function to override is the RenderArgument() function. This function should return the arguments you want to pass to the render executable. If this function is not overridden, then no arguments will be passed to the executable. Some of these arguments may be hardcoded, some may be pulled from the job properties (like the data/scene file name, start and end frame), and others may be pulled from the plug-in info file that was submitted with the job using the global GetPluginInfoEntry() function: def RenderArgument( self): arguments=" -continueOnError -verbose"+ GetPluginInfoEntry("Verbose") arguments+=" -start"+ str(GetStartFrame())+" -end"+ str(GetEndFrame()) arguments+=" -scene \""+ GetDataFilename()+" \"" return arguments

At this point, if you’re creating a Python.NET plugin, your __init__ function will now look like this: def __init__( self): # Set up the event handlers because this is a Python.NET plugin self.InitializeProcessEvent+= self.InitializeProcess

6.2. Plug-in Scripting 247 Deadline User Manual, Release 5.2.49424

self.RenderExecutableEvent+= self.RenderExecutable self.RenderArgumentEvent+= self.RenderArgument

The full list of simple plug-in functions you can override is as follows: Function Description void CheckExitCode( int exitCode ) Optional - Allows you to explicitly check the return code of the executable and handle it as necessary. If not overridden, the job will succeed on a return code of 0, and fail on any other return code. void PostRenderTasks() Optional - Allows you to perform some tasks after the render executable has exited. This can be used to clean up temporary files, perform operations on the rendered output, etc. void PreRenderTasks() Optional - Allows you to perform some tasks before the render executable is launched. This can be used to set environment variables, copy over some dependencies, etc. Within this function, you can use the SetUpdateTimeout( int seconds ) function to set a timeout. If no stdout is received from the application within this amount of time, the TimeoutTasks() function is called (see below). string RenderArgument() Optional - Returns the arguments you want to pass to the render executable. If not overridden, then no arguments are passed to the render executable. string RenderExecutable() Required - Returns the full path to the executable to be used for rendering. string StartupDirectory() Optional - Returns the working folder that the render executable should launch in. If not overridden, then the folder that the executable resides in will be used. void TimeoutTasks() Optional - Allows you to perform some action when an update timeout occurs. This task timeout is set up using the global SetUpdateTimeout() function. If not overridden, the job will simply fail if an update timeout occurs. The best place to find examples of simple plug-ins is to look at some of the plug-ins that are shipped with Deadline. These range from the very basic (Blender), to the more complex (MayaCmd).

6.2.4 Advanced Plug-ins

Advanced plug-ins are a little more complicated, as they control all three job stages mentioned above. They are commonly used to render with applications that support some sort of slave/server mode that Deadline can interact with. Usually, this requires the application to be started during the StartJob phase, fed commands during the RenderTasks stage(s), and finally shut down during the EndJob stage. For example, the 3ds Max plug-in starts up 3dsmax in slave mode and forces it to load our Lightning plug-in. The Lightning plug-in listens for commands from Deadline and executes them as necessary. After rendering is complete, 3ds Max is shut down. To tell Deadline that you’re creating an advanced plug-in, add the following line to the InitializeProcess() function: self.PluginType= PluginType.Advanced

248 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

There are a few other functions you can override, but the only required one is RenderTasks(). This contains the code to be executed for each task that a slave dequeues. This could involve launching applications, communicating with already running applications, or simply running a script to automate a particular task (like backup a group of files). def RenderTasks( self ):

# Do stuff...

At this point, if you’re creating a Python.NET plugin, your __init__ function will now look like this: def __init__( self): # Set up the event handlers because this is a Python.NET plugin self.RenderTasksEvent+= self.RenderTasks

The full list of advanced plug-in functions you can override is as follows: Function Description void EndJob() Optional - Contains the code to be executed when a slave finishes with a job. This can include shutting down the application or cleaning up some temporary files. If not overridden, than nothing is done during the EndJob phase. void RenderTasks() Required - Contains the code to be executed for each task that a slave dequeues. void StartJob() Optional - Contains the code to be executed when a slave first picks up a job for rendering. This can include starting up the application or setting up the environment for rendering. If not overridden, than nothing is done during the StartJob phase. As mentioned above, a common use for advanced plug-ins is to start up some sort of server application during the StartJob stage and feed it render commands during the RenderTasks stage(s). The benefit to this is that you only have to deal with the overhead of loading the application for the first task the slave dequeues for the job. This is a big deal if the scene file you’re rendering is large, and needs to load a lot of plug-ins and external references. More often than not, this involves launching and monitoring a Managed Process. In your python file, you can create another class that extends the abstract ManagedProcess class. To continue our example, we’ll call this class MyPluginProcess: class MyPluginProcess (ManagedProcess):

# TODO: Place code here

This managed process class will define the render executable, command line arguments, etc for the process we will be monitoring. If this sounds familiar, that’s because we do the same thing for a simple plug-in. In fact, the abstract DeadlinePlugin class we talked about near the beginning is just a specialized ManagedProcess class. So you would define your RenderExecutable(), RenderArgument(), etc, functions here like you would for a simple plug-in. After you’ve created your managed process class, you can create an instance of it in the StartJob() function and use the global StartMonitoredManagedProcess() function to launch the process. def StartJob( self): # Do some initialization...

myProcess= MyPluginProcess() StartMonitoredManagedProcess("My Process", myProcess )

Then in the EndJob() function, you can use the global ShutdownMonitoredManagedProcess() function to shut down the process:

6.2. Plug-in Scripting 249 Deadline User Manual, Release 5.2.49424

def EndJob( self): # Do some cleanup...

ShutdownMonitoredManagedProcess("My Process")

At this point, if you’re creating a Python.NET plugin, your __init__ function will now look like this: def __init__( self): # Set up the event handlers because this is a Python.NET plugin self.StartJobEvent+= self.StartJob self.RenderTasksEvent+= self.RenderTasks self.EndJobEvent+= self.EndJob

There are other global managed process functions you can use to control and monitor the process, which are explained in the scripting reference below. Because the advanced plug-ins are much more involved than the simple plug-ins, we suggest you take a look at the following plug-ins that are shipped with Deadline for examples: 3dsmax, Combustion, Fusion, Lightwave, MayaBatch, Modo, Rhino, VNS, and XSIBatch.

6.2.5 Global Function Reference

All these functions can be called from your plug-in python script file.

Job Functions

Function Description Job GetJob() Returns the current job object. string GetJobInfoEntry( string Key ) Returns the value for the given Key from the job’s submission info file. Throws an error if the Key does not exist. string GetJobInfoEntryElement( int Index, string Key ) Returns the value from job’s submission info file for the specified Key at the specified Index. Causes an error if the Index is out of range, or the Key does not exist. This is only valid if the Key stores its values as an array. int GetJobInfoEntryElementCount( string Key ) Returns the number of values in the job’s submission info file for the specified Key. This is only valid if the Key stores its values as an array.

Plugin Configuration Functions

Function Description bool GetBooleanConfigEntry( string Key ) Returns the value for the given Key from the plug-in dlinit file. Throws an error if the Key does not exist. bool GetBooleanConfigEntryWithDefault( string Key, bool Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist.

250 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

string GetConfigEntry( string Key ) Returns the value for the given Key from the plug-in dlinit file. Throws an error if the Key does not exist. string GetConfigEntryWithDefault( string Key, string Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. float GetFloatConfigEntry( string Key ) Returns the value for the given Key from the plug-in dlinit file. Throws an error if the Key does not exist. float GetFloatConfigEntryWithDefault( string Key, float Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. int GetIntegerConfigEntry( string Key ) Returns the value for the given Key from the plug-in dlinit file. Throws an error if the Key does not exist. int GetIntegerConfigEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. long GetLongConfigEntry( string Key ) Returns the value for the given Key from the plug-in dlinit file. Throws an error if the Key does not exist. long GetLongConfigEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist.

Plugin Info File Functions

Function Description bool GetBooleanPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. bool GetBooleanPluginInfoEntryWithDefault( string Key, bool Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. float GetFloatPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. float GetFloatPluginInfoEntryWithDefault( string Key, float Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. int GetIntegerPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. int GetIntegerPluginInfoEntryWithDefault( string Key, int Default )

6.2. Plug-in Scripting 251 Deadline User Manual, Release 5.2.49424

Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. long GetLongPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. long GetLongPluginInfoEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. string GetPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. string GetPluginInfoEntryWithDefault( string Key, string Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist.

Rendering Information Functions

Function Description string[] GetAuxiliaryFilenames() Returns the list of files that were submitted with the job. string GetCurrentTaskId() Returns the ID of the task currently being rendered. string GetDataFilename() Returns the path of the scene file that was submitted with the job. int GetEndFrame() Returns the last frame of the task currently being rendered. string GetJobsDataDirectory() Returns the local jobs data directory path of the current slave. string GetPluginDirectory() Returns the local plug-in directory path of the current slave. string GetPluginInfoFilename() Returns the path of the plugin-info file that was submitted with the job. string GetSlaveDirectory() Returns the root local path of the current slave, where things like job and plugin files get copied to. int GetStartFrame() Returns the first frame of the task currently being rendered. int GetThreadNumber() Returns the number of the thread currently rendering this task.

252 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Logging and Control Funtions

Function Description void ExitWithSuccess() Exits the render immediately, reporting success. void FailRender( string Message ) Fails the render, returning the given message as the error. bool IsCanceled() Returns true if the current render has been canceled. void LogInfo( string Message ) Prints an info message to the log. void LogWarning( string Message ) Prints a warning message to the log. void SetProgress( float Percentage ) Sets the progress of the render. void SetStatusMessage( string Message ) Sets the render status message.

General Process Functions

Function Description void ClearProcessEnvironmentVariables() Clears the extra environment variables that will be passed on to any process launched by the plugin for the duration of the current job. string GetProcessEnvironmentVariable( string key ) Gets an extra environment variable that will be passed on to any process launched by the plugin for the duration of the current job. int RunProcess( string Executable, string Arguments, string StartupDir, int TimeoutMilliseconds ) Launches a program and waits for the specified TimeoutMilliseconds for it to complete (specify -1 for no timeout). The program’s stdout is redirected to the slave. Returns the process’ return code (1 is returned for a timeout). void SetProcessEnvironmentVariable( string key, string value ) Sets an extra environment variable that will be passed on to any process launched by the plugin for the duration of the current job. The Slave’s environment will be left unchanged. Note that this does not work if used in the PreRenderTasks() function for a simple plugin, because when this function is called, the environment has already been set.

6.2. Plug-in Scripting 253 Deadline User Manual, Release 5.2.49424

Managed Process Functions

Function Description string CheckForMonitoredManagedProcessPopups( string Name ) Checks for any popups shown by the managed process. If a popup is found, the dump of the popup is returned, otherwise an empty string is returned. void DetachMonitoredManagedProcess( string Name ) This allows the managed process to continue running after the slave has finished the current job. void FlushMonitoredManagedProcessStdout( string Name ) Flushes the managed process’s stdout buffer to the slave. int GetMonitoredManagedProcessExitCode( string Name ) Gets the exit code for the managed process. If the process hasn’t exited yet, an error will occur. int[] GetMonitoredManagedProcessIDs( string Name ) Gets the list of the parent process and any child process PIDs for the managed process. bool MonitoredManagedProcessIsRunning( string Name ) Returns True if the managed process is still running. void RedirectStdOutToFileForMonitoredManagedProcess( string Name, string Filename ) Writes the contents of the given Filename to the given managed process’s stdin. void RunManagedProcess( ManagedProcess process ) Runs a managed process, and returns when the process has exited. void SetMonitoredManagedProcessExitCheckingFlag( string Name, bool Value ) Sets the managed process’s exit checking flag to the given Value. void ShutdownMonitoredManagedProcess( string Name ) Stops the managed process by sending a close message. If that fails, the process is terminated. void StartMonitoredManagedProcess( string Name, ManagedProcess process ) Starts a managed process, and tracks it with the given Name as its id. Use FlushMonitoredManagedProcessStdout() to redirect the program’s stdout to the slave. void VerifyMonitoredManagedProcess( string Name ) Throws an error if the given managed process is no longer running. bool WaitForMonitoredManagedProcessToExit( string Name, int timeoutMilliseconds ) Waits for the managed process to exit, and returns True if it does so in the given amount of time. Specify -1 for no timeout. void WriteStdinToMonitoredManagedProcess( string Name, string Stdin ) Writes the given Stdin string to the given managed process’s stdin.

254 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Monitored Program Functions

Function Description void DetachMonitoredProgram( string Name ) This allows the program to continue running after the slave has finished the current job. bool MonitoredProgramIsRunning( string Name ) Returns True if the specified managed program is running, False otherwise. void SetMonitoredProgramExitCheckingFlag( string Name, bool Value ) Sets the program’s exit checking flag to the given Value. void ShutdownMonitoredProgram( string Name ) Stops the program by sending a windows close message. If that fails, the process is terminated. void StartMonitoredProgram( string Name, string Executable, string Arguments, string StartupDir ) Starts a program, and tracks it with the given Name as its id. The program’s stdout is not redirected to the slave. void VerifyMonitoredProgram() Throws an error if the managed program is no longer running. bool WaitForMonitoredProgramToExit( string Name, int TimeoutSeconds ) Waits for the specified managed program to exit. Returns True if the program exited before the specified TimeoutSec- onds„ False otherwise.

File/Path/Directory Functions

Function Description string CheckPathMapping( string Path ) Maps the given path to a different path if necessary. If no path mapping is required, the original path is returned. Path Mappings can be set up in the Repository Options in the Monitor. string CheckPathMappingInFile( string InFileName, string OutFileName ) Checks each line of the given input file to see if a path mapping is required. The new file with any paths that may have been swapped is saved to the output file defined. Path Mappings can be set up in the Repository Options in the Monitor. string CheckPathMappingInFileAndReplaceSeparator( string InFileName, string OutFileName, string Separator- ToReplace, string NewSeparator ) This is identical to CheckPathMappingInFile above, except that lines that are swapped out will replace the given SeparatorToReplace with the given NewSeparator. void CreateCommandFile( string FilePath, string Command ) Writes the Command to the given file. string CreateTempDirectory( string Tag ) Uses the Tag specified to create a unique output directory in local jobs data folder and returns the path. bool PathMappingRequired( string Path )

6.2. Plug-in Scripting 255 Deadline User Manual, Release 5.2.49424

Checks if the given Path needs to be mapped to a different path. Path Mappings can be set up in the Repository Options in the Monitor. void VerifyAndMoveDirectory( string SrcFolderPath, string DestFolderPath, bool failIfEmpty, int fileSize ) Same as above, but it moves an entire folder and its contents to DestFolderPath after it has verified the file(s) within the folder. void VerifyAndMoveFile( string SrcFilePath, string DestFilePath, int fileSize ) Same as above, but it moves the frame to DestFilePath after it has verified the file. void VerifyFile( string FilePath, int fileSize ) Verifies that a given file exists and has size greater than the given file size. Throws an error otherwise. string WaitForCommandFile( string FilePath, int DeleteFile, int TimeoutMilliseconds ) Waits for the specified file to appear, and returns the command that was written to that file. Specify 1 for DeleteFile to delete the command file afterwards. Returns “” if a timeout occurs (specify -1 as the timeout to disable it).

6.3 Event Plug-in Scripting

6.3.1 Overview

Event plug-ins can be created to execute specific tasks in response to specific events in Deadline (like when a job is submitted or when it finishes). For example, event plug-ins can be used to communicate with in-house pipeline tools to update the state of shots or tasks, or they can be used to submit a post-processing job when another job finishes. These event plug-ins are completely scripted, which means that it’s easy to create your own event plug-ins or customize the existing ones (providing you have some experience with the Python scripting language). Because Deadline can use IronPython or Python for .NET to execute scripts„ not only can you access all of the Python modules, you can import all of the .NET libraries as well, which means the level of customization is nearly endless. By default, all jobs will trigger these events. However, there is a job property that can be enabled to suppress events. In the Monitor, you can set the Suppress Events property under the Advanced tab in the Job Properties dialog. If you have a custom submission tool or script, you can specify the following in the job info file: SuppressEvents=True

Note that events will be executed by different Deadline applications, depending on the context of the event. For example, the OnJobSubmitted event is processed by Deadline Command after the job has been submitted, while the OnJobFinished event is normally processed by the Slave that finishes the last task for the job. However, OnJobFinished could also be processed by the Monitor if manually marking a job as complete.

6.3.2 Creating Event Plug-in

To create a new event plug-in, you start by creating a folder in the Repository’s events folder and give it the name of your event plug-in. For the sake of this document, we will call our new event plug-in MyEvent. All relative script and configuration files for this event plug-in are to be placed in this folder (some are required and some are optional).

The dlinit File - Required

The first file is MyEvent.dlinit, which is the main configuration file for this event plug-in. It is a plain text file that defines a few general key=value event plug-in properties, which include:

256 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Key Name Description Enabled If the event plug-in is enabled (True/False). Only enabled event plug-ins will respond to Deadline events. It can also define key=value custom settings to be used by the event plug-in. For example, if you are connecting to an in-house pipeline tool, you may want the URL and credentials to be configurable, in which case our MyEvent.dlinit file might look like this: Enabled=True PipelineURL=http://[myserver]/pipeline PipelineUserName=myuser PipelinePassword=mypassword

The py File - Required

The other required file is MyEvent.py, which is the main event plug-in script file. It defines the main DeadlineEventLis- tener class that contains the necessary tasks to perform in response to specific events. The template for this script file might look like this:

from Deadline.Events import *

###################################################################### ## This is the function that Deadline calls to get an instance of the ## main DeadlineEventListener class. ###################################################################### def GetDeadlineEventListener(): return MyEvent()

###################################################################### ## This is the main DeadlineEventListener class for MyEvent. ###################################################################### class MyEvent (DeadlineEventListener):

# TODO: Place code here

The GetDeadlineEventListener() function is important, as it allows Deadline to get an instance of our MyEvent class (which is extending the abstract DeadlineEventListener class). If this function isn’t defined, Deadline will report an error when it tries to load the event plug-in. Notice that we’re importing the Deadline.Events namespace so that we can access the DeadlineEventListener class. In fact, because we’re using IronPython, you can import any .NET namespace, like System, System.IO, etc:

from System import * from System.Diagnostics import * from System.IO import *

The MyEvent class will need to override certain functions based on the types of events you want to respond to. All functions are optional, so make sure to include at least one so that your event plug-in actually does something: Function Description void OnJobArchived( Job job ) Override this function to respond to a job that has been archived. The job is passed as an argument. void OnJobFailed( Job job )

6.3. Event Plug-in Scripting 257 Deadline User Manual, Release 5.2.49424

Override this function to respond to a job that has failed. The job is passed as an argument. void OnJobFinished( Job job ) Override this function to respond to a job being marked as complete when its last task finishes rendering. The job is passed as an argument. void OnJobPended( Job job ) Override this function to respond to a job that has been placed in the Pending state (because it’s a dependent job or it has been scheduled to run at a later time). The job is passed as an argument. void OnJobReleased( Job job ) Override this function to respond to a job that has been released from the Pending state (because a dependent job became active or it was time for a scheduled job to start). The job is passed as an argument. void OnJobRequeued( Job job ) Override this function to respond to a job being requeued. The job is passed as an argument. void OnJobResumed( Job job ) Override this function to respond to a job being resumed from the suspended, failed, or pending state. The job is passed as an argument. void OnJobStarted( Job job ) Override this function to respond to a job being picked up by a Slave for the first time. The job is passed as an argument. void OnJobSubmitted( Job job ) Override this function to respond to a job being submitted. The job is passed as an argument. void OnJobSuspended( Job job ) Override this function to respond to a job being suspended. The job is passed as an argument. void OnJobUnarchived( Job job ) Override this function to respond to a job that has been unarchived. The job is passed as an argument. After overriding a few functions, your MyEvent.py script file might look something like this:

from Deadline.Events import *

###################################################################### ## This is the function that Deadline calls to get an instance of the ## main DeadlineEventListener class. ###################################################################### def GetDeadlineEventListener(): return MyEvent()

###################################################################### ## This is the main DeadlineEventListener class for MyEvent. ###################################################################### class MyEvent (DeadlineEventListener):

def OnJobSubmitted( self, job ): #TODO: Connect to pipeline site to notify it that a job has been submitted for a particular shot or task.

def OnJobFinished( self, job ): #TODO: Connect to pipeline site to notify it that the job for a particular shot or task is complete.

258 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Remember that by default, Deadline will execute scripts using the IronPython engine. If you want to use Python for .NET, the first line of your MyEvent.py must look like the following. This tells Deadline that the event plugin is a Python.NET event plugin: #Python.NET

In addition, the way you override functions is slightly different for Python.NET event plugins. For example, in an IronPython event plugin, you just need to define the function in the plugin class (see the code for OnJobSubmitted() and OnJobFinished() above). In Python.NET event plugins, you also need to add a corresponding event handler in the __init__ constructor for the event plugin class. For example: ###################################################################### ## This is the main DeadlineEventListener class for MyEvent. ###################################################################### class MyEvent (DeadlineEventListener): def __init__( self ): # Set up the event handlers because this is a Python.NET event plugin self.OnJobSubmittedEvent += self.OnJobSubmitted self.OnJobFinishedEvent += self.OnJobFinished

def OnJobSubmitted( self, job ): #TODO: Connect to pipeline site to notify it that a job has been submitted for a particular shot or task.

def OnJobFinished( self, job ): #TODO: Connect to pipeline site to notify it that the job for a particular shot or task is complete.

The param File - Optional

The MyEvent.param is used to declare properties which are used by the Event Configuration dialog in the Monitor to dynamically generate a UI for modifying custom settings as they appear in the MyEvent.dlinit file. After you’ve created this file, open the Monitor and enter Super User mode. Then select Tools -> Configure Events and look for your event plug-in in the list on the left.

The file might look something like: [Enabled] Type=boolean Label=Enabled

6.3. Event Plug-in Scripting 259 Deadline User Manual, Release 5.2.49424

Default=True Description=If this event plug-in should respond to events.

[PipelineURL] Type=string Label=Pipeline URL Default=http://[myserver]/pipeline Description=The URL for our pipeline website.

[PipelineUserName] Type=string Label=Pipeline User Name Default= Description=The user name for our pipeline website.

[PipelinePassword] Type=string Label=Pipeline Password Default= Description=The password for our pipeline website.

You’ll notice that the property names between the square brackets matches the custom keys we defined in our MyEvent.dlinit file. This means that these control will change the corresponding settings. The available key=value pairs for the properties defined here are: Key Name Description Category The category the control should go under. CategoryIndex This determines the control’s order under its category. This does the same thing as Index. CategoryOrder This determines the category’s order among other categories. If more than one CategoryOrder is defined for the same category, the lowest value is used. Default The default value to be used if this property is not defined in the dlinit file. This does the same thing as DefaultValue. DefaultValue The default value to be used if this property is not defined in the dlinit file. This does the same thing as Default. Description A short description of the property the control is for (displayed as a tooltip in the UI). DisableIfBlank If True, a control will not be shown if this property is not defined in the dinit file (True/False). This does the same thing as IgnoreIfBlank. IgnoreIfBlank If True, a control will not be shown if this property is not defined in the dinit file (True/False). This does the same thing as DisableIfBlank. Index

260 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

This determines the control’s order under its category. This does the same thing as CategoryIndex. Label The control label. Required If True, a control will be shown for this property even if it’s not defined in the dlinit file (True/False). Type The type of control (Boolean/Enum/Filename/FilenameSave/Float/Folder/Integer/Label/MultiFilename/String). There are also key/value pairs for specific controls: Key Name Description DecimalPlaces The number of decimal places for the Float controls. Filter The filter string for the Filename, FilenameSave, or MultiFilename controls. Increment The value to increment the Integer or Float controls by. Items The semicolon separated list of items for the Enum control. This does the same thing as Values. Maximum The maximum value for the Integer or Float controls. Minimum The minimum value for the Integer or Float controls. Values The semicolon separated list of items for the Enum control. This does the same thing as Items.

The ico File - Optional

You can add a MyEvent.ico file, which is an 16x16 icon file for identifying the event plug-in in the Event Plugin Configuration dialog. After all of your files have been created, your event plug-in folder should look something like this:

6.3. Event Plug-in Scripting 261 Deadline User Manual, Release 5.2.49424

6.3.3 Event Plug-in Logs and Error Reports

When an event plug-in that uses the LogInfo or LogWarning functions finishes executing, its log will be stored with the job’s other render logs, which you can view in the Monitor by right-clicking on the job in the Monitor and selecting Job Reports -> View Log Reports. When an error occurs in an event-plugin, an error report will also be stored with the job’s other render errors, which you can view in the Monitor by right-clicking on the job in the Monitor and selecting Job Reports -> View Error Reports.

6.3.4 Global Function Reference

All these functions can be called from your event plug-in python script file.

Event Plugin Configuration Functions

Function Description bool GetBooleanConfigEntry( string Key ) Returns the value for the given Key from the event plug-in dlinit file. Throws an error if the Key does not exist. bool GetBooleanConfigEntryWithDefault( string Key, bool Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. string GetConfigEntry( string Key ) Returns the value for the given Key from the event plug-in dlinit file. Throws an error if the Key does not exist. string GetConfigEntryWithDefault( string Key, string Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. float GetFloatConfigEntry( string Key ) Returns the value for the given Key from the event plug-in dlinit file. Throws an error if the Key does not exist. float GetFloatConfigEntryWithDefault( string Key, float Default )

262 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. int GetIntegerConfigEntry( string Key ) Returns the value for the given Key from the event plug-in dlinit file. Throws an error if the Key does not exist. int GetIntegerConfigEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. long GetLongConfigEntry( string Key ) Returns the value for the given Key from the event plug-in dlinit file. Throws an error if the Key does not exist. long GetLongConfigEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist.

Job Plugin Info File Functions

Function Description bool GetBooleanPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. bool GetBooleanPluginInfoEntryWithDefault( string Key, bool Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. float GetFloatPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. float GetFloatPluginInfoEntryWithDefault( string Key, float Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. int GetIntegerPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. int GetIntegerPluginInfoEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. long GetLongPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist. long GetLongPluginInfoEntryWithDefault( string Key, int Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist. string GetPluginInfoEntry( string Key ) Returns the value for the given Key from the job’s plug-in info file. Throws an error if the Key does not exist.

6.3. Event Plug-in Scripting 263 Deadline User Manual, Release 5.2.49424

string GetPluginInfoEntryWithDefault( string Key, string Default ) Same as above but with a Default value to be returned if the Key does not exist. Useful for backwards-compatibility, because it will not throw an error if the Key does not exist.

Job Information Functions

Function Description string[] GetAuxiliaryFilenames() Returns the list of files that were submitted with the job. string GetDataFilename() Returns the path of the scene file that was submitted with the job. string GetPluginInfoFilename() Returns the path of the plugin-info file that was submitted with the job.

Logging and Control Funtions

Function Description void LogInfo( string Message ) Prints an info message to the log of the application that is currently executing the event plug-in. void LogWarning( string Message ) Prints a warning message to the log of the application that is currently executing the event plug-in.

General Process Functions

Function Description int RunProcess( string Executable, string Arguments, string StartupDir, int TimeoutMilliseconds ) Launches a program and waits for the specified TimeoutMilliseconds for it to complete (specify -1 for no timeout). The program’s stdout is redirected to the log of the application that is running it. Returns the process’ return code (1 is returned for a timeout).

File/Path/Directory Functions

Function Description string CheckPathMapping( string Path ) Maps the given path to a different path if necessary. If no path mapping is required, the original path is returned. Path Mappings can be set up in the Repository Options in the Monitor. string CheckPathMappingInFile( string InFileName, string OutFileName )

264 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Checks each line of the given input file to see if a path mapping is required. The new file with any paths that may have been swapped is saved to the output file defined. Path Mappings can be set up in the Repository Options in the Monitor. string CheckPathMappingInFileAndReplaceSeparator( string InFileName, string OutFileName, string Separator- ToReplace, string NewSeparator ) This is identical to CheckPathMappingInFile above, except that lines that are swapped out will replace the given SeparatorToReplace with the given NewSeparator. bool PathMappingRequired( string Path ) Checks if the given Path needs to be mapped to a different path. Path Mappings can be set up in the Repository Options in the Monitor.

6.3.5 Quicktime Generation Example

An event plugin can be used to automatically submit a Quicktime job to create a movie from the rendered images of a job that just finished. An example of an event plugin like this can be downloaded from the Miscellaneous Deadline Downloads Page. To install the event plugin, just unzip the downloaded file to [Repository]\events. Configuration Files The QuicktimeGen.dlinit and QuicktimeGen.param files define a couple of settings that can be configured from the Deadline Monitor. Here you can specify a path to the Quicktime settings XML file you want to use. This settings file can be generated from the Submit Quicktime Job To Deadline submitter in the Monitor. The QuicktimeGen.dlinit file: Enabled=True QTSettings=\\ws-wpg-026\share\quicktime_export_settings.xml

The QuicktimeGen.param file: [Enabled] Type=boolean Label=Enabled Default=True Description=If this event plug-in should respond to events.

[QTSettings] Type=filename Label=QT Settings XML File Default= Description=The QT settings xml file.

Script File The QuicktimeGen.py file only overrides the OnJobFinished function, since we only want to submit a Quicktime job when a job finishes. import re from System.IO import * from System.Text import * from Deadline.Events import * from Deadline.Scripting import *

######################################################################

6.3. Event Plug-in Scripting 265 Deadline User Manual, Release 5.2.49424

## This is the function that Deadline calls to get an instance of the ## main DeadlineEventListener class. ###################################################################### def GetDeadlineEventListener(): return MyEvent()

###################################################################### ## This is the main DeadlineEventListener class for MyEvent. ###################################################################### class MyEvent (DeadlineEventListener):

def OnJobFinished( self, job ):

In this example, there are only two checks in place to see if we should submit a Quicktime job. The first is that a movie settings file has been set in the event plugin configuration, and the second is that a Nuke job has finished. The script can be edited to add additional checks as required. movieSettings = GetConfigEntryWithDefault( "QTSettings", "" ).strip()

# Only submit a QT job for finished Nuke jobs, and only if a QT settings file has been set. if movieSettings == "" or job.JobPlugin != "Nuke": return

Once those checks have passed, we need to get the output path(s) from the job that just finished. We do this using the JobOutputDirectories and JobOutputFileNames properties. Then we loop through each file name because we want to submit a Quicktime job for each output sequence. Finally, we replace the padding characters in the current output file name with an actual frame number from the job. outputDirectories = job.JobOutputDirectories outputFilenames = job.JobOutputFileNames paddingRegex = re.compile("[^\\?#]*([\\?#]+).*")

# Submit a QT job for each output sequence. for i in range( 0, len(outputFilenames) ):

outputDirectory = outputDirectories[i] outputFilename = outputFilenames[i] outputPath = Path.Combine(outputDirectory,outputFilename).replace("//","/")

# Swap out the padding character for an actual frame. m = re.match(paddingRegex,outputPath) if( m != None): padding = m.group(1) frame = StringUtils.ToZeroPaddedString(job.JobFramesList[0],len(padding),False) outputPath = outputPath.replace( padding, frame )

With the padding replaced, we now have an input image for the Quicktime job, which we can use this to figure out the output movie file name. Now that we have all the Quicktime properties that we need, we can create the submission files and submit the job to Deadline. inputFilename = outputPath movieFilename = Path.ChangeExtension( FrameUtils.GetFilenameWithoutPadding( inputFilename ), ".mov" ) movieName = Path.GetFileNameWithoutExtension( movieFilename ) movieFrames = job.JobFrames

# Create job info file. jobInfoFilename = Path.Combine( ClientUtils.GetDeadlineTempPath(), "quicktime_job_info.job" ) writer = StreamWriter( jobInfoFilename, False, Encoding.Unicode ) writer.WriteLine( "Plugin=Quicktime" )

266 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

writer.WriteLine( "Name=%s" % movieName ) writer.WriteLine( "Comment=Auto-submitted QT" ) writer.WriteLine( "Department=%s" % job.JobDepartment ) writer.WriteLine( "Pool=%s" % job.JobPool ) writer.WriteLine( "Group=%s" % job.JobGroup ) writer.WriteLine( "Priority=%s" % job.JobPriority ) writer.WriteLine( "MachineLimit=1" ) writer.WriteLine( "Frames=%s" % movieFrames ) writer.WriteLine( "ChunkSize=100000" ) writer.WriteLine( "OutputFilename0=%s" % movieFilename ) writer.Close()

# Create plugin info file. pluginInfoFilename = Path.Combine( ClientUtils.GetDeadlineTempPath(), "quicktime_plugin_info.job" ) writer = StreamWriter( pluginInfoFilename, False, Encoding.Unicode ) writer.WriteLine( "InputImages=%s" % inputFilename ) writer.WriteLine( "OutputFile=%s" % movieFilename ) writer.WriteLine( "FrameRate=24" ) writer.WriteLine( "Codec=QuickTime Movie" ) writer.Close()

# Now submit the job. ClientUtils.ExecuteCommand( (jobInfoFilename,pluginInfoFilename,movieSettings) )

Note that the settings file used by the Quicktime will only work on the operating system it was created on (ie: a settings file created on Mac OSX will not work on Windows, and vice versa).

6.4 Monitor Scripting

6.4.1 Overview

Monitor scripts fall into four categories: Submission Scripts, General Scripts, Job Scripts, and Slave Scripts. While Submission and General scripts don’t differ in the context in which they are used, they fall under different menu items in the Monitor to keep them separate. Job and Slave scripts, on the other hand, have access to special functions that the other scripts don’t. Note that the Launcher has access to the same Submission and General scripts that the Monitor has access to.

6.4.2 Submission Scripts

Submission scripts are used to create custom submission dialogs in the Monitor’s Submit menu. Creating your custom dialogs is quite simple, just follow the steps below. Once your script has been installed, simply restart the Monitor and you’ll see your script in the Submit menu. Examples of submission scripts can be found in \\your\repository\scripts\Submission. Installing Monitor Submission Scripts • Navigate to your \\your\repository\scripts\Submission folder. • Create a new folder to store your submission script. The name of the folder doesn’t matter, but it will be consistent with the names of the files the folder will contain. • Open the new folder, and create an ini file using the new folder’s name as the filename prefix. For example, if your folder name is MySubmissionScript, the ini file’s name will be MySubmissionScript.ini. This ini file can contain the following information:

6.4. Monitor Scripting 267 Deadline User Manual, Release 5.2.49424

– Label: This specifies the display name of the Script that you will see in the Monitory. – UserPermissions: This specifies what type of users can use the script. Valid values are ‘AllUsers’, ‘PowerUsers’, and ‘SuperUsers’. Label=My Submission Script UserPermissions=AllUsers

• Create a Python file, again using the new folder’s name as the filename prefix. If we’re continuing off the example above, this file will be called MySubmissionScript.py. • As an option, you can create a 16x16 icon file that will appear next to the menu item, and place it in the new script folder. Again, use the new folder’s name as the filename prefix. • Now if you restart the monitor, you should see a menu item in the Submit menu for your submission script, even if the script file is empty. Of course, clicking the menu item for your script will do nothing at this point other than throw an error. Creating Monitor Submission Scripts We follow a specific template when building the submission scripts that are included with Deadline. The Monitor submission script template is as follows. • Define your __main__ function: This is the main function called when you click on the script’s menu item. It must be defined. def __main__( *args ): ... ''do something'' ...

• Build The Submission Dialog: You build your submission dialog in the __main__ function by getting a reference to a ScriptDialog object and adding controls to it. Each control’s name must be unique, so that each control can be identified properly. You can also set the dialog’s size, title, and a few other settings. See the User Interface Scripting section of the Scripting Overview documentation for a complete list of dialog functions and controls. – Define And Load Your Sticky Settings: Sticky settings are settings that persist after the dialog has been closed. They are defined by creating a string array which contains the names of the controls you wish to save settings for. After defining them, you can load them by calling the ScriptDialog function LoadSet- tings. – Show The Dialog: Show the dialog to the user using the ScriptDialog function ShowDialog. • Specify Your Functions: Specify any functions that may be used by the script. These could be helper functions, or event handlers that do stuff when values of controls are modified.

6.4.3 General Scripts

General scripts are used to perform any sort of custom action you want by selecting them from the Monitor’s Scripts menu. Underneath the hood, there isn’t anything different between General and Submission scripts except that you can limit which users can execute the script. We just added the extra menu item keep them separated. Installing General Monitor Scripts • Navigate to your \\your\repository\scripts\General folder. • Create a new folder to store your script. The name of the folder doesn’t matter, but should be consistent with the names of the files the folder will contain.

268 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

• Open the new folder, and create an ini file using the new folder’s name as the filename prefix. For example, if your folder name is MyScript, the ini file’s name will be MyScript.ini. This ini file can contain the following information: Label=My Script UserPermissions=AllUsers/PowerUsers/SuperUsers

• Create a Python file, again using the new folder’s name as the filename prefix. If we’re continuing off the example above, this file will be called MyScript.py. • As an option, you can create a 16x16 icon file that will appear next to the menu item, and place it in the new script folder. Again, use the new folder’s name as the filename prefix. • Now if you restart the monitor, you should see a menu item in the Scripts menu for your script, even if the script file is empty. Of course, clicking the menu item for your script will do nothing at this point other than throw an error. Creating General Monitor Scripts The general Monitor script template is as follows. • Define your __main__ function: This is the main function called when you click on the script’s menu item. It must be defined. def __main__( *args ): ... ''do something'' ...

• Build the Script Dialog if applicable: If you plan on using a dialog for your script, you build your script dialog in the __main__ function by getting a reference to a ScriptDialog object and adding controls to it. Each control’s name must be unique, so that each control can be identified properly. You can also set the dialog’s size, title, and a few other settings. See the User Interface Scripting section of the Scripting Overview documentation for a complete list of dialog functions and controls. – Define And Load Your Sticky Settings: Sticky settings are settings that persist after the dialog has been closed. They are defined by creating a string array which contains the names of the controls you wish to save settings for. After defining them, you can load them by calling the ScriptDialog function LoadSet- tings. – Show The Dialog: Show the dialog to the user using the ScriptDialog function ShowDialog. • Specify Your Functions: Specify any functions that may be used by the script. These could be helper functions, or event handlers that do stuff when values of controls are modified.

6.4.4 Job Scripts

Job scripts are used to perform custom actions on one or more selected jobs in the job list. You can access these scripts by right-clicking on the job and selecting the Scripts menu. Job scripts have access to some additional functions so you can get information about the selected job(s). Installing Monitor Job Scripts • Navigate to your \\your\repository\scripts\Jobs folder. • Create a new folder to store your script. The name of the folder doesn’t matter, but it will be consistent with the names of the files the folder will contain. • Open the new folder, and create an ini file using the new folder’s name as the filename prefix. For example, if your folder name is MyJobScript, the ini file’s name will be MyJobScript.ini. This ini file can contain the following information:

6.4. Monitor Scripting 269 Deadline User Manual, Release 5.2.49424

Label=My Script UserPermissions=AllUsers/JobUsers/PowerUsers/SuperUsers Multiselect=True/False ShowIfArchived=True/False

• Create a Python file, again using the new folder’s name as the filename prefix. If we’re continuing off the example above, this file will be called MyJobScript.py. • As an option, you can create a 16x16 icon file that will appear next to the menu item, and place it in the new script folder. Again, use the new folder’s name as the filename prefix. • Now if you restart the monitor, you should see a menu item under the Scripts menu in the job’s right-click menu for your job script, even if the script file is empty. Of course, clicking the menu item for your script will do nothing at this point other than throw an error. Creating Monitor Job Scripts The job Monitor script template is as follows. • Define your __main__ function: This is the main function called when you click on the script’s menu item. It must be defined. def __main__( *args ): ... ''do something'' ...

• Build a Script Dialog if applicable: If you plan on using a dialog for your script, you build your script dialog in the __main__ function by getting a reference to a ScriptDialog object and adding controls to it. Each control’s name must be unique, so that each control can be identified properly. You can also set the dialog’s size, title, and a few other settings. See the User Interface Scripting section of the Scripting Overview documentation for a complete list of dialog functions and controls. – Define And Load Your Sticky Settings: Sticky settings are settings that persist after the dialog has been closed. They are defined by creating a string array which contains the names of the controls you wish to save settings for. After defining them, you can load them by calling the ScriptDialog function LoadSet- tings. – Show The Dialog: Show the dialog to the user using the ScriptDialog function ShowDialog. • Specify Your Functions: Specify any functions that may be used by the script. These could be helper functions, or event handlers that do stuff when values of controls are modified.

6.4.5 Slave Scripts

Slave scripts are used to perform custom actions on one or more selected slaves in the slave list. You can access these scripts by right-clicking on the slave and selecting the Scripts menu. Slave scripts have access to some additional functions so you can get information about the selected slave(s). Installing Monitor Slave Scripts • Navigate to your \\your\repository\scripts\Slaves folder. • Create a new folder to store your script. The name of the folder doesn’t matter, but it will be consistent with the names of the files the folder will contain. • Open the new folder, and create an ini file using the new folder’s name as the filename prefix. For example, if your folder name is MySlaveScript, the ini file’s name will be MySlaveScript.ini. This ini file can contain the following information:

270 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

Label=My Script UserPermissions=AllUsers/PowerUsers/SuperUsers Multiselect=True/False

• Create a Python file, again using the new folder’s name as the filename prefix. If we’re continuing off the example above, this file will be called MySlaveScript.py. • As an option, you can create a 16x16 icon file that will appear next to the menu item, and place it in the new script folder. Again, use the new folder’s name as the filename prefix. • Now if you restart the monitor, you should see a menu item under the Scripts menu in the slave’s right-click menu for your slave script, even if the script file is empty. Of course, clicking the menu item for your script will do nothing at this point other than throw an error. Creating Monitor Slave Scripts The slave Monitor script template is as follows. • Define your __main__ function: This is the main function called when you click on the script’s menu item. It must be defined. def __main__( *args ): ... ''do something'' ...

• Build a Script Dialog if applicable: If you plan on using a dialog for your script, you build your script dialog in the __main__ function by getting a reference to a ScriptDialog object and adding controls to it. Each control’s name must be unique, so that each control can be identified properly. You can also set the dialog’s size, title, and a few other settings. See the User Interface Scripting section of the Scripting Overview documentation for a complete list of dialog functions and controls. – Define And Load Your Sticky Settings: Sticky settings are settings that persist after the dialog has been closed. They are defined by creating a string array which contains the names of the controls you wish to save settings for. After defining them, you can load them by calling the ScriptDialog function LoadSet- tings. – Show The Dialog: Show the dialog to the user using the ScriptDialog function ShowDialog. • Specify Your Functions: Specify any functions that may be used by the script. These could be helper functions, or event handlers that do stuff when values of controls are modified.

6.4.6 Monitor Script Specific Functions

These are functions that can only be called from Monitor Scripts, and can be used to get information about list items that are currently selected in the Monitor.

Monitor Utilities

All functions are called by using MonitorUtils.function. Function Description tuple GetSelectedJobs() Gets the list of selected jobs. tuple GetSelectedLimitGroups()

6.4. Monitor Scripting 271 Deadline User Manual, Release 5.2.49424

Gets the list of selected limits. tuple GetSelectedPulseInfos() Gets the list of selected pulse infos. tuple GetSelectedPulseNames() Gets the list of names of selected pulses. tuple GetSelectedTasks() Gets the list of selected tasks. tuple GetSelectedSlaveInfos() Gets the list of selected slave infos. tuple GetSelectedSlaveNames() Gets the list of names of selected slaves.

Job Utilities

All functions are called by using JobUtils.function. Function Description object GetCurrentJobValue( int index, string property ) Gets the specified property for the selected job at the specified index, if it exists. object GetCurrentPluginValue( int index, string property ) Gets the specified plug-in property for the selected job at the specified index, if it exists. string GetDataFilename( int index ) Gets the scene file for the selected job at the specified index. string GetDepartment( int index ) Gets the department for the selected job at the specified index. int GetFirstFrame( int index ) Gets the first frame for the selected job at the specified index. string GetFirstOutputFilename( int index ) Gets the first output file name for the selected job at the specified index. string GetGroup( int index ) Gets the group for the selected job at the specified index. int GetLastFrame( int index ) Gets the last frame for the selected job at the specified index. string GetJobId( int index ) Gets the job ID for the selected job at the specified index. string GetName( int index ) Gets the job name for the selected job at the specified index.

272 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

string GetOutputFilename( int index, int fileIndex ) Gets the output file name at fileIndex for the selected job at the specified index. So if a job has 2 output file names, you can use 0 and 1 as the values for fileIndex to get the corresponding file name. int GetOutputFilenameCount( int index ) Gets the number of output file names for the selected job at the specified index. string GetPool( int index ) Gets the pool for the selected job at the specified index. int GetPriority( int index ) Gets the priority for the selected job at the specified index. tuple GetSelectedJobIds() Gets the list of selected job ids. tuple GetSelectedJobNames() Gets the list of selected job names. tuple GetSelectedJobs() Gets the list of selected jobs. void RefreshSelectedJobs() Refreshes the selected jobs in the Monitor. void SetCurrentJobValue( int index, string property, object value ) Sets the specified property for the selected job at the specified index, if it exists. void SetCurrentPluginValue( int index, string property, object value ) Sets the specified plug-in property for the selected job at the specified index, if it exists.

Slave Utilities

All functions are called by using SlaveUtils.function. Function Description tuple GetAssignedGroups( string slaveName ) Gets the list of assigned groups for the specified slave. tuple GetAssignedPools( string slaveName ) Gets the list of assigned pools for the specified slave. string GetComment( string slaveName ) Gets the comment for the specified slave. string GetDescription( string slaveName ) Gets the description for the specified slave. bool GetEnabled( string slaveName ) Gets if the specified slave is enabled.

6.4. Monitor Scripting 273 Deadline User Manual, Release 5.2.49424 tuple GetSelectedSlaveInfos() Gets the selected slave infos. string GetSelectedSlaveName( int index ) Gets the selected slave name at the specified index. tuple GetSelectedSlaveNames() Gets the list of selected slave names. object GetSlaveInfoValue( string slaveName, string property ) Gets a property value from the specified slave’s SlaveInfo file. object GetSlaveSettingValue( string slaveName, string property ) Gets a property value from the specified slave’s settings. void RefreshSelectedSlaves() Refreshes the selected slaves in the Monitor. void SendRemoteCommand( string slaveName, string command ) Sends the specified command to the specified slave and waits for it to respond. void SendRemoteCommandNoWait( string slaveName, string command ) Sends the specified command to the specified slave and does not wait for it to respond.

6.5 Job Scripting

6.5.1 Overview

Job scripts can be assigned to jobs to automate certain tasks before a job starts rendering (Pre Job Script), after a job finishes rendering (Post Job Script), or before and after each individual job task renders (Pre and Post Task Scripts). After you create your scripts, you can assign them to your job by right-clicking on it in the Monitor and selecting Modify Properties. The script options can be found under the Advanced tab in the Job Properties. In addition, job scripts can be specified by custom job submitters by including them in the Job Info File. Note that a full path to the script is required, so it is recommended that the script file be stored in a location that is accessible by all slaves.

6.5.2 Creating Job Scripts

The only requirement for a job script is that you define a __main__ function. This is the function called by Deadline when it executes the script. def __main__( *args ): ... ''do something'' ...

A common use for post task scripts is to do some processing with the output image files. Here is a script that demon- strates how to get the output file names for the current task and print them out to the render log:

274 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

import re from System.IO import * from Deadline.Scripting import * def __main__(): outputDirectories = SlaveUtils.GetCurrentJobValue( "OutputDirectories" ) outputFilenames = SlaveUtils.GetCurrentJobValue( "OutputFileNames" ) paddingRegex = re.compile("[^\\?#]*([\\?#]+).*")

for i in range( 0, len(outputDirectories) ): outputDirectory = outputDirectories[i] outputFilename = outputFilenames[i]

for frameNum in range(GetStartFrame(),GetEndFrame()+1): outputPath = Path.Combine(outputDirectory,outputFilename).replace("//","/")

m = re.match(paddingRegex,outputPath) if( m != None): padding = m.group(1) frame = StringUtils.ToZeroPaddedString(frameNum,len(padding),False) outputPath = outputPath.replace( padding, frame )

LogInfo( "Output file: " + outputPath )

6.5.3 Job Script Specific Functions

These are functions that can only be called from Job Scripts. Their main purpose is to get information about the slave and its current job. In addition to these functions, job scripts can also access all of the global functions that the Plug-ins have access too. See the Global Function Reference section in the Plug-in Scripting documentation for more information.

Global Functions

Function Description string GetCurrentTaskId() This can be used by Pre Task and Post Task scripts to get the ID of the task that is currently being rendered.

Slave Utilities

All functions are called by using SlaveUtils.*function* Function Description object GetCurrentJobValue( string property ) Returns the value for the given job property. A list of these properties can be obtained by exploring a job’s directory and opening the file with the name that has this format: a_000_x_1234ABCD.job. object GetCurrentPluginValue( string property )

6.5. Job Scripting 275 Deadline User Manual, Release 5.2.49424

Returns the value for the given plugin property. A list of these properties can be obtained by exploring the job’s directory and opening the plugin info file. object GetCurrentSlaveInfoValue( string property ) Returns the value for the given slave info property. A list of these properties can be obtained by exploring the slaves directory in the repository and opening any file with a .slaveInfo extension. object GetCurrentSlaveSettingValue( string property ) Returns the value for the given slave setting property. A list of these properties can be obtained by exploring the slaves directory in the repository and opening any file with a .slaveSettings extension.

6.6 Web Service Scripting

6.6.1 Overview

Web service scripts allow you to retrieve cached data from Pulse and display them in any way you see fit. See the Pulse Documentation for more information on Pulse’s web service feature and how you can use it to call scripts and commands.

6.6.2 Creating Pulse Scripts

Pulse scripts can be created in the \\your\repository\scripts\Pulse folder in your repository. Pulse scripts aren’t con- tained within sub-folders like the other types of scripts. Instead, just place the script file directly in the Pulse folder. Script file names should not contain any spaces, and should end in a .py extension (ie: MyPulseScript.py).

The __main__ Function

The Pulse script must define a __main__ function that accepts *args (a tuple with 2 items). This is the main function called when Deadline executes the script. Note that if you decide not to accept args and an argument string is passed to your script in the URL, it will result in an exception being thrown. The function should also return a string value, which is used to displays the results. The string can be HTML, XML, plain text, etc. def __main__( *args ): results = ""

... ''append data to results'' ...

return results

Supporting Arguments

Arguments are passed to Pulse Web Scripts as a tuple with 2 items and can be accepted in two ways. The first way is to simply accept args, which will be an array of length 2. The other way is to accept the tuple as two variables, for

276 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

instance (dlArgs, qsArgs) for Deadline arguments and query string arguments. In the first case, args[0] will be dlArgs (Deadline Arguments) and args[1] will be qsArgs (Query String Arguments). Deadline Arguments The Pulse Web Service will automatically pass your script a dictionary as the first item in the args tuple. This Dictio- nary will contain at least one key (“Authenticated”), but may contain more if the user authenticated with the Pulse Web Service. Currently, if the user has not authenticated the Dictionary will only contain the “Authenticated” key, however if the user has authenticated it will also contain the “UserName” and “UserLevel” of the user executing the script. Query String Arguments Arguments are passed to your script by a query string defined in the URL, and can be in one of the following forms: • Key/Value Pairs: This is the preferred method of passing arguments. Arguments in this form will look something like: ?key0=value0&key1=value1

• List of Values: Arguments in this form will look something like: ?value0&value1

The querystring will be passed to the Python script as a NameValueCollection and it will be the second item of the tuple passed to your script’s __main__ function.

Pulse Script Specific Functions

These are functions that can only be called from Pulse Scripts. Their main purpose is to get cached information from Deadline Pulse. All functions are called by using PulseUtils.*function* Function Description tuple GetCachedUserNames() Returns a string array of user names cached by Pulse. tuple GetJobTasks( string jobID ) Returns an array of dictionary of all Tasks for the given job. string GetLastPulseRefreshTime() Returns Pulse’s last refresh time in the format “MM/dd/yyyy HH:mm:ss”. tuple GetPulseGroupNames() Returns a string array of group names cached by Pulse. tuple GetPulseJobIds() Returns an array of job Ids currently in the repository. dictionary GetPulseJobInfo( string jobID ) Returns a dictionary of all the given job’s properties. tuple GetPulseJobs() Returns an array of dictionary of all job’s properties. dictionary GetPulseLimitGroupInfo( string limitGroupName )

6.6. Web Service Scripting 277 Deadline User Manual, Release 5.2.49424

Returns a dictionaryof the given limit group’s properties. tuple GetPulseLimitGroupNames() Returns a string array of limit group names cached by Pulse. tuple GetPulseLimitGroups() Returns an array of dictionaryof all cached limit group’s properties. string GetPulseMacAddress() Returns Pulse’s MAC Address. tuple GetPulsePoolNames() Returns a string array of pool names cached by Pulse. dictionary GetPulseSlaveInfo( string slaveName ) Returns a dictionaryof the given slave’s properties cached by Pulse. tuple GetPulseSlaveNames() Returns a string array of slave names cached by Pulse. tuple GetPulseSlaves() Returns an array of dictionaryof all slaves’ properties. string GetUserLevel( string userName ) Returns the user’s power level within Deadline.

6.6.3 Calling Pulse Scripts

Once the script has been created, you can call it using Pulse’s web service feature. See the Pulse documentation for more information on its web service feature. For example, if you have a Pulse script called GetFarmStatistics.py, you would call it using: http://[myhost]:8080/GetFarmStatistics

Some scripts can take arguments. To include arguments, you need to place a ‘?’ between the command name and the first argument, and then a ‘&’ between additional arguments. Here is an example of how you would pass arg1, arg2, and arg3 as a comma-separated string of arguments to the GetFarmStatistics.py script: http://[myhost]:8080/GetFarmStatistics?arg1&arg2&arg3

Here is an example of how you would pass values for arg1, arg2, and arg3 as an array of arguments to the GetFarm- Statistics.py script: http://[myhost]:8080/GetFarmStatistics?arg1=value1&arg2=value2&arg3=value3

The way the results are displayed depends on the format in which they are returned.

6.6.4 Examples

Getting Farm Statistics

Here is an example script that we’ll call GetFarmStatistics.py. It gets some general stats and job information and displays it to the user. Assuming this script is in the Pulse scripts folder in the repository, you can call it using the following URL:

278 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

http://[myhost]:8080/GetFarmStatistics from System.IO import * from System.Text import * from Deadline.Scripting import *

######################################################################## ## Main Function Called By Deadline ######################################################################## def __main__(): returnVal = ""

try: jobids = PulseUtils.GetPulseJobIds() slaves = PulseUtils.GetPulseSlaves() jobs = PulseUtils.GetPulseJobs()

sb = StringBuilder()

archivedJobs = 0 renderingJobs = 0 queuedJobs = 0 suspendedJobs = 0 completedJobs = 0 deletedJobs = 0 failedJobs = 0 pendingJobs = 0 erroredJobs = 0

for index in range(len(jobs)): if( jobs[index]["Archived"] == "True" ): archivedJobs += 1 else: status = jobs[index]["Status"] if( status == "Active" ): if( int(jobs[index]["RenderingChunks"]) > 0 ): renderingJobs += 1 else: queuedJobs += 1 elif( status == "Completed" ): completedJobs += 1 elif( status == "Deleted" ): deletedJobs += 1 elif( status == "Failed" ): failedJobs += 1 elif( status == "Suspended" ): suspendedJobs += 1 elif( status == "Pending" ): pendingJobs += 1

if( int(jobs[index]["ErrorReports"]) > 0 ): erroredJobs += 1

sb.AppendLine( "\n[%s]" % jobs[index]["JobId"] )

for key in jobs[index].Keys: sb.AppendLine( "%s=%s" % (key, jobs[index][key]) )

6.6. Web Service Scripting 279 Deadline User Manual, Release 5.2.49424

renderingMachines = 0 idleMachines = 0 stalledMachines = 0 offlineMachines = 0 disabledMachines = 0

for index in range(len(slaves)): status = slaves[index]["SlaveStatus"] if( status == "Idle" ): idleMachines += 1 elif( status == "Stalled" ): stalledMachines += 1 elif( status == "Offline" ): offlineMachines += 1 elif( status == "Rendering" ): renderingMachines += 1 elif( status == "Disabled" ): disabledMachines += 1

sb.AppendLine("\n[%s]" % slaves[index]["MachineName"]) for key in slaves[index].Keys: sb.AppendLine("%s=%s" % (key, slaves[index][key]))

sb.Insert( 0, "Disabled Machines: %d\n" % disabledMachines ) sb.Insert( 0, "Offline Machines: %d\n" % offlineMachines ) sb.Insert( 0, "Stalled Machines: %d\n" % stalledMachines ) sb.Insert( 0, "Idle Machines: %d\n" % idleMachines ) sb.Insert( 0, "Rendering Machines: %d\n" % renderingMachines ) sb.Insert( 0, "Archived Jobs: %d\n" % archivedJobs ) sb.Insert( 0, "Failed Jobs: %d\n" % failedJobs ) sb.Insert( 0, "Deleted Jobs: %d\n" % deletedJobs ) sb.Insert( 0, "Completed Jobs: %d\n" % completedJobs ) sb.Insert( 0, "Pending Jobs: %d\n" % pendingJobs ) sb.Insert( 0, "Suspended Jobs: %d\n" % suspendedJobs ) sb.Insert( 0, "Errored Jobs: %d\n" % erroredJobs ) sb.Insert( 0, "Rendering Jobs: %d\n" % renderingJobs ) sb.Insert( 0, "Queued Jobs: %d\n" % queuedJobs ) sb.Insert( 0, "Repository time: %s\n" % PulseUtils.GetLastPulseRefreshTime() )

returnVal = sb.ToString()

except Exception, detail: returnVal = "ERROR: %s" % detail

return returnVal

Getting Specific Job Information

This example script will take a job ID as a query string argument and display information about the job based on the whether or not the user has authenticated and the user’s level. Assuming this script is in the Pulse scripts folder in the repository, you can call it using the following URL: http://[myhost]:8080/PrintJobDetails?jobid=[jobid]

280 Chapter 6. Scripting Deadline User Manual, Release 5.2.49424

from System.Text import * from Deadline.Scripting import * def __main__( (dlArgs, qsArgs) ): retString = "" sb = StringBuilder()

try: if ( dlArgs["Authenticated"] ): if ( qsArgs["jobid"] != None ): job = PulseUtils.GetPulseJobInfo( qsArgs["jobid"] ) # or # job = PulseUtils.GetPulseJobInfo( qsArgs[0] )

sb.AppendLine( "Name: " + job["Name"] ) sb.AppendLine( "Plugin: " + job["PluginName"] ) if ( dlArgs["UserLevel"] == "Power" ): sb.AppendLine( "User: " + job["UserName"] ) sb.AppendLine( "Status: " + job["Status"] ) else: sb.AppendLine( "You must provide a job id to get information about." )

else: sb.AppendLine( "You must be authenticated to access job information." )

retString = sb.ToString()

except Exception, detail: retString = "ERROR: %s" % detail

return retString

Example output for an authenticated power user: Name: Blender Test Plugin: Blender User: iheartdeadline Status: Active

Example output for an authenticated normal user: Name: Blender Test Plugin: Blender

Example output without authentication: You must be authenticated to access job information.

6.6. Web Service Scripting 281 Deadline User Manual, Release 5.2.49424

282 Chapter 6. Scripting CHAPTER SEVEN

EVENT PLUG-INS

7.1 Draft Event Plug-in Guide

7.1.1 Overview

Draft is a tool that provides simple compositing functionality. It is implemented as a Python library, which exposes functionality for use in python scripts. Draft is designed to be tightly integrated with Deadline, but it can also be used as a standalone tool. Using Deadline’s Draft plugin, artists can automatically perform simple compositing operations on rendered frames after a render job finishes. They can also convert them to a different image format, or generate Quicktimes for dailies.

7.1.2 Submitting Dependent Draft Jobs

When submitting jobs to Deadline through any of our integrated submitters, you now have the option to have Deadline create a dependent Draft Job once the submitted job is done rendering; this is where the Draft Event Plugin comes into play.

The options available here are similar to those discussed in the Draft Plugin section. Although it might appear as though there are less options here than in the Monitor submitter, all the same information will get passed to the Draft template. This approach just allows us to automatically pull a lot of the needed info directly from the scene file and from information filled in elsewhere in the submitter.

7.1.3 Setup

Since Draft is being shipped alongside Deadline, there is not a whole lot of configuration that is needed for this Event Plugin to work (beyond simply Enabling it). There are, however, options that allow you to select the priority, group and pool to which the Draft Event Plugin will submit Draft Jobs. To access these settings, simply enter Super User mode and select Tools -> Configure Event Plugins form the Monitor’s menu. From there, select the Draft entry from the list on the left.

283 Deadline User Manual, Release 5.2.49424

7.2 Shotgun Event Plug-in Guide

7.2.1 Overview

Shotgun is a customizable web-based Production Tracking system for digital studios, and is developed by Shotgun Software. Using Deadline’s Shotgun event plug-in, artists can automatically create new Versions for Shots or Tasks in Shotgun when they submit a render job to the farm. When the job finishes, Deadline can automatically update the Version by uploading a thumbnail and marking it as complete or pending for review.

7.2.2 Creating Versions

Versions can be created automatically at submission time or manually after a job has finished.

284 Chapter 7. Event Plug-ins Deadline User Manual, Release 5.2.49424

Automatic Version Creation

When you submit a new job to Deadline, you can have Deadline automatically create a new Version in Shotgun. This is done by connecting to Shotgun prior to submitting the job and choosing the Task that the job is for. The majority of the submission scripts that ship with Deadline include the Shotgun connection option. For this example, we will use Nuke, but the process is basically the same for each submission script. First, find the tab or panel with the Shotgun settings. For Nuke, this is under the Shotgun/Draft tab.

Press the Connect To Shotgun button to bring up Deadline’s Shotgun browser. Enter your Shotgun Login Name and press Connect. If the connection is successful, Deadline will collect the list of Tasks you are assigned to. If there are problems connecting, Deadline will try to display the appropriate error message to help you diagnose the problem.

7.2. Shotgun Event Plug-in Guide 285 Deadline User Manual, Release 5.2.49424

After you have selected a Task, you must specify a Version name and a description. If you have configured Version name templates in the Shotgun event plugin configuration, you can select one from the drop down. You can also manually type in the version name instead.

After you have configured the Version information, press OK to return to the Nuke submitter. The Shotgun settings will now contain the Version information you just specified. To include this information with the job, leave the Submit Shotgun Info With Job option enabled. If you want to change the Version name or description before submitting, you can do so without reconnecting to Shotgun.

286 Chapter 7. Event Plug-ins Deadline User Manual, Release 5.2.49424

You can now press OK to submit the job. If the Shotgun event plugin is configured to create the new version during Submission, the submission results will show the Version’s ID. Otherwise, the Version won’t be created in Shotgun until the job completes.

Manual Version Creation

To manually create a Version from a completed job, right-click on the job in the Deadline Monitor and select Scripts -> Create Shotgun Version. This will bring up the Shotgun browser so that you can connect, pick the appropriate Task, and specify a Version name and description. After specifying the appropriate information, press OK to create the new version.

7.2. Shotgun Event Plug-in Guide 287 Deadline User Manual, Release 5.2.49424

7.2.3 Selecting An Existing Version

Some of our submission scripts can edit an existing Shotgun version. For example, our Quicktime submitter allows you to select an existing Shotgun Version to upload the movie to when the job completes.

Press the Connect To Shotgun button to bring up Deadline’s Shotgun browser. Enter your Shotgun Login Name and press Connect. If the connection is successful, Deadline will collect the list of Tasks you are assigned to. If there are problems connecting, Deadline will try to display the appropriate error message to help you diagnose the problem.

288 Chapter 7. Event Plug-ins Deadline User Manual, Release 5.2.49424

After you have selected a Task, you can select a Version for that Task. Then press OK to return to the Quicktime submitter. The Shotgun settings will now contain the Version information you just specified. To upload the movie file to the selected Version, leave the Upload Movie File To Shotgun On Completion option enabled.

You can now press OK to submit the job. When the job finishes, the rendered movie will automatically be uploaded to the selected Version.

7.2.4 Advanced Workflow Mode

When setting up the Shotgun event plugin, you can enable an Advanced Workflow Mode. This mode allows you to create Versions by selecting a Task, or by selecting a Project and Entity. Studios that don’t use the Task-centric approach will probably find the Advanced Workflow Mode more suitable to their needs.

7.2. Shotgun Event Plug-in Guide 289 Deadline User Manual, Release 5.2.49424

7.2.5 Setup

Follow these steps to setup Deadline’s connection to Shotgun.

Create the API Script in Shotgun

In Shotgun, you must first create a new API script so that Deadline can communicate with Shotgun. This can by done from the Admin menu.

After the Scripts page is displayed, press the [+] button to create a new script, and enter the following information in the window that appears. If you can’t see one or more of the following fields, use the More Fields drop down to show them. • Script Name: deadline_integration • Description: Script for Deadline integration • Version: 1.0 • Permission Group: API Admin

290 Chapter 7. Event Plug-ins Deadline User Manual, Release 5.2.49424

After you have created the new script, click on the deadline_integration link in the Scripts list and note the value in Application Key field (it’s a long key consisting of alphanumeric characters). You’ll need this key when configuring Deadline’s Shotgun connection in the next step.

Configure the Shotgun Connection

After you have created the Deadline API Script in Shotgun, you can now configure the Shotgun event plug-in from the Deadline Monitor. Enter Super User Mode from the Tools menu, and then select Tools -> Configure Event Plugins.

7.2. Shotgun Event Plug-in Guide 291 Deadline User Manual, Release 5.2.49424

The event plugin settings are split up into a few sections. The most important sections are the Options and Connection Settings, as these control how Deadline connects to Shotgun. In most cases, the Field and Value Mapping sections can be left alone because they map to fields that exist in the default Shotgun installation. Only studios that have deeply customized their Shotgun installations might have to worry about changing the Field and Value Mapping settings. Options • Enabled: The Shotgun event plugin must be enabled before Deadline can connect to Shotgun. • Create Version On Submission: If enabled, Deadline will create the Shotgun Version at time of submission and update its status as the job progresses. Otherwise, the Version will only be created once the job completes. • Enable Advanced Workflow: If enabled, the user can select a Project and Entity instead of just a Task. • Thumbnail Frame: The frame to upload to Shotgun as a thumbnail. • Convert Thumbnails with Draft: Whether or not to attempt to use Draft to convert the Thumbnail frame prior to upload. • Thumbnail Conversion Format: The format to convert the Thumbnail to prior to upload (see above). • Version Templates: Presets for Version names that uses can select from (one per line). Available tokens include ${project}, ${shot}, ${task}, ${user}, and ${jobid}. For example: – ${project} - ${shot} - ${task} – ${project}_${shot}_${task} (${jobid}) • Enable Verbose Errors: Whether or not detailed (technical) error information should be displayed when errors occur while connecting to Shotgun. Connection Settings • Shotgun URL: Your Shotgun URL.

292 Chapter 7. Event Plug-ins Deadline User Manual, Release 5.2.49424

• Shotgun Proxy: Your proxy (if you use one). • API Script Name: The name of the API script you created in Shotgun earlier (deadline_integration). • API Application Key: The key from the script you created in Shotgun earlier (it’s a long key consisting of alphanumeric characters). Shotgun Field Mappings • These are the Version fields that Deadline is expecting to exist in Shotgun. The default values match those from a default Shotgun installation, so you will only have to edit these settings if you have customized the Version Field names in your Shotgun installation. • Note that some of the Fields you can specify aren’t created by default in Shotgun. You will have to manually create those fields in Shotgun and specify their names here, if you wish to use them. An example of such fields would be Deadline Job ID, and Average/Total Render Time. Status Value Mappings • These are the Version status values that Deadline is expecting to exist in Shotgun. The default values match those from a default Shotgun installation, so you will only have to edit these settings if you have customized the Version Status values in your Shotgun installation. Draft Field Mappings • Draft Template Field: The field code for a Task field that contains a Draft Template relevant to the Task. If this is specified, Deadline can automatically pull in the specified template at submission time.

Test the Shotgun Connection

After you have configured the Shotgun connection, you can test it from the Deadline Monitor by selecting Scripts -> Test Shotgun Connection. This will bring up Deadline’s Shotgun browser. Enter your Shotgun Login Name and press Connect. If the connection is successful, Deadline will collect the list of Tasks you are assigned to. If there are problems connecting, Deadline will try to display the appropriate error message to help you diagnose the problem.

Set up Shotgun Columns in the Deadline Monitor

Deadline uses the job Extra Info properties 0 to 5 for Shotgun specific settings, and you can configure the columns in the Job List in the Monitor to properly represent these settings. In the Monitor, enter Super User mode from the Tools

7.2. Shotgun Event Plug-in Guide 293 Deadline User Manual, Release 5.2.49424 menu, and then select Tools -> Configure Repository Options. Find the Job Settings section and click on the Extra Properties tab. It will show the following:

Rename the Extra Info properties as shown in the following image. After committing these changes, you will now be able to see these Shotgun specific columns in the Job List in the Monitor.

294 Chapter 7. Event Plug-ins Deadline User Manual, Release 5.2.49424

7.2.6 FAQ

Which editions of Shotgun does Deadline support? Deadline supports the Studio and Partner editions of Shotgun, because those editions include the necessary API access. Which versions of Shotgun does Deadline support? Deadline supports Shotgun 2.3 and later (including version 3.x). Which version of the Shotgun API does Deadline use? Deadline 5.1 ships with version 3.0.6 of the Python Shotgun API, whereas Deadline 5.2 ships with version 3.0.9.

7.2. Shotgun Event Plug-in Guide 295 Deadline User Manual, Release 5.2.49424

296 Chapter 7. Event Plug-ins CHAPTER EIGHT

APPLICATION PLUG-INS

8.1 3ds Command Plug-in Guide

8.1.1 Job Submission

You can submit jobs from within 3ds Max and 3ds VIZ by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within 3ds Max or VIZ, select the Deadline (3dsCmd) menu item that you created during the integrated submission script setup.

297 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The 3ds Command specific options are: • Force Build: If rendering with Max 9 or later, you can force 32 bit or 64 bit rendering. This setting will be ignored if rendering with VIZ, or with Max 8 or lower. • Path Config: Allows you to specify an alternate path file in the MXP format that the slaves can use to find bitmaps that are not found on the primary map paths. • Show Virtual Frame Buffer: Enable the virtual frame buffer during rendering. • Apply VideoPost To Scene: Whether or not to use VideoPost during rendering. • Continue On Errors: Enable to have the 3ds command line renderer ignore errors during rendering. • Enable Local Rendering: If enabled, the frames will be rendered locally, and then copied to their final network location. • Gamma Correction: Enable to apply gamma correction during rendering. • Split Rendering: Enable split rendering. Specify the number of strips to split the frame into, as well as the overlap you want to use. • Run Sanity Check On Submission: Check for scene problems during submission.

Sanity Check

The 3ds Command Sanity Check script defines a set of functions to be called to ensure that the scene submission does not contain typical errors like wrong render view and frame range settings, incorrect output path, etc. The Sanity Check is enabled by the Run Sanity Check Automatically Before Submission checkbox in the User Options group of controls in the Submit To Deadline (3dsmaxCmd) dialog. You can also run the Sanity Check automatically by clicking the Run Now! button.

The dialog contains the following elements:

298 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• The upper area (Error Report) lists the problems found in the current scene. • The lower area (Feedback Messages) lists the actions the Sanity Check performs and gives feedback to the user. The latest message is always on top. • Between the two areas, there is a summary text line listing the total number of errors and a color indicator of the current Sanity Check state. When red, the Sanity Check will not allow a job sumbission to be performed. The Error Report The left column of the Error Report displays a checkbox and the type of the error. The checkbox determines whether the error will be taken into account by the final result of the check. Currently, there are 3 types of errors: • FATAL: The error cannot be fixed automatically and requires manual changes to the scene itself. A job submis- sion with such error would be pointless. The state of the checkbox is ignored and assumed always checked. • Can Be Fixed: The error can be fixed automatically or manually. If the checkbox is active, the error contributes to the final result. If unchecked, the error is ignored and handled as a warning. • Warning: The problem might not require fixing, but could be of importance to the user. It is not taken into account by the final result (the state of the checkbox is ignored and assumed always unchecked). Repairing Errors In 3ds Max 8 and earlier, double-clicking an Error Message in the Error Report window will cause an associated repair function to be executed and/or a Report Message to be output in the Feedback Messages window. In 3ds Max 9 and higher, right-clicking an Error Message in the Error Report window will cause an associated repair function to be executed and/or a Report Message to be output in the Feedback Messages window. This difference was caused by the switch to DotNet controls which handle double-clicks as checked events, changing the checkbox state in front of the error instead. Updating the Error Report You can rerun/update the Sanity Check in one of the following ways: • Clicking the dialog anywhere outside of the two message areas will rerun the Sanity Check and update all messages. • Double-clicking any Message in the Feedback Messages window will rerun the Sanity Check and update all messages. • Reparing an error by double-clicking will also automatically rerun the Sanity Check • Pressing the Run Now! button in the Submit To Deadline dialog will update the Sanity Check.

8.1.2 Plug-in Configuration

You can configure the 3ds Command plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the 3ds Command plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.1. 3ds Command Plug-in Guide 299 Deadline User Manual, Release 5.2.49424

8.1.3 Integrated Submission Script Setup

The following procedure describes how to install the integrated Autodesk 3ds Command submission script. The integrated submission script allows for submitting 3ds Command Line render jobs to Deadline directly from within the VIZ or Max editing GUI. The integrated render job submission script and the following installation procedure has been tested with VIZ versions 2006, 2007, and 2008, and Max versions 6, 7, 8, 9, 2008, 2009, 2010, and 2011 (including Design editions). Note that due to a bug in 3ds Max 2012, the integrated submitter will not work. This bug should be fixed in the first Hotfix release for 3ds Max 2012, but until then, jobs must be submitted from the Deadline Monitor. The steps involved in the installing and configuring the submission scripts are: Installation of the Submission Script • Copy [Repository]/ClientSetup/3dsCmd/Deadline-3dsCmd2Deadline.mcr to [3ds Install Direc- tory]/UI/MacroScripts Add Submit To Deadline (3dsCmd) Command to 3dsmax Menu • While in VIZ or Max, select MAXScript -> Run Script, then find the directory [3ds Install Direc- tory]/UI/MacroScripts, select the file Deadline-3dsCmd2Deadline.mcr, and click Open.

300 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Then select Customize -> Customize User Interface, select the Menus tab, and make sure that the Main Menu Bar is selected in the combo box at the top-right of the dialog.

• In the Menus list box at the bottom-left, right-click and select New Menu, and create a menu called Deadline.

• Drag-and-drop the Deadline menu from the Menus list box to the desired location in the list box on the right.

8.1. 3ds Command Plug-in Guide 301 Deadline User Manual, Release 5.2.49424

• In the Group combo box in the top-left, select Main UI, and in the Category combo box below, select Deadline.

• Drag-and-drop the Submit To Deadline (3dsCmd) item that appears in the Action list box to the Deadline menu on the right.

302 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Close the dialog, and the new menu should appear in the main tool bar.

8.1. 3ds Command Plug-in Guide 303 Deadline User Manual, Release 5.2.49424

8.1.4 FAQ

Which versions of VIZ are supported? The 3dsCommand plugin has been tested with Viz 2006 and later. Which versions of Max are supported? The 3dsCommand plugin has been tested with 3ds Max 7 and later (including Design editions). Note: Due to a maxscript bug in the initial release of 3ds Max 2012, the integrated submission scripts will not work. However, this bug has been addressed in 3ds Max 2012 Hotfix 1. If you cannot apply this patch, it means that you must submit your 3ds Max 2012 jobs from the Deadline Monitor. When should I use the 3dsCommand plugin to render Max jobs instead of the original? This plugin should only be used when a particular feature doesn’t work with our normal 3dsmax plugin. For example, there was a time when using the 3dsCommand plugin was the only way to render scenes that made use of Vray’s Frame Buffer features. Note that the 3dsCommand plugin has less features in the submission dialog, and the error handling isn’t as robust. In addition, using 3dsCommand causes Max to take extra time to start up because 3dsmaxcmd.exe needs to be launched for each task, so renders might take a little extra time to complete. When using split rendering with 3ds Max 9, the strips aren’t assembled at the end. Ensure that you have SP1 for Max 9 installed. It fixes a problem with stitch rendering that was causing the strips to be saved incorrectly.

8.1.5 Error Messages And Meanings

This is a collection of known 3ds Command error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.2 3ds Max Plug-in Guide

8.2.1 Job Submission

You can submit jobs from within 3ds Max and installing the integrated Submit Max To Deadline (SMTD) script, or you can submit them from the Monitor. The instructions for installing the integrated SMTD script can be found further down this page. To submit from within 3ds Max, select the Deadline menu item that you created during the integrated submission script setup.

304 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The 3ds Max specific options are as follows. Scene File Submission Options • SAVE and Submit Current Scene File with the Job to the REPOSITORY: The current scene will be saved to a temporary file which will be sent with the job and will be stored in the Job’s folder in the Repository. • SAVE and Submit Current Scene File to GLOBAL NETWORK PATH: The current scene will be saved to a tem- porary file which will be copied to a Globally-Defined Alternative Network Location (e.g. dedicated file server). It is specified in [Repository]\submission\3dsmax\SubmitMaxToDeadline_Defaults.ini under [GlobalSettings] as the SubmitSceneGlobalBasePath key. It will be referenced by the Job via its path only. This will reduce the load on the Repository server. • SAVE and Submit Current Scene File to USER-DEFINED NETWORK PATH: The current scene will be saved to a temporary file which will be copied to a User-Defined Alternative Network Location (e.g. dedicated file server) stored as a local setting. It will be referenced by the Job via its path only. This will reduce the load on the Repository server. • DO NOT SAVE And Use Current Scene’s ORIGINAL NETWORK PATH: The current scene will NOT be saved, but the original file it was opened from will be referenced by the job. Assuming the file resides on a dedicated file server, this will speed up submission and rendering significantly, but current changes to the scene objects will be ignored. Sanity Check

8.2. 3ds Max Plug-in Guide 305 Deadline User Manual, Release 5.2.49424

• Run Sanity Check Automatically Before Submission: This options forces Submit To Deadline to perform a Sanity Check before submitting the scene to Deadline. The Sanity Check is implemented as a separate set of scripted functions which can be enhanced by 3rd parties to meet specific studio needs. For more information, please refer to the Sanity Check section. • Run Now: This button performs a Sanity Check without submitting a job to Deadline. Any potential problems will be reported and can be fixed before actually submitting the job. Job Options

• Out-Of-Order Rendering Every Nth Frame: Deadline will render every Nth frame based on the order selected in the drop down box. This option can be very useful when rendering long test animations - you can render a rough animation containing evey Nth frame early enough to detect any major issues before all frames have been rendered, or in cases where the major action happens in the end of the sequence, reverse the rendering order. • Render Preview Job First: When the checkbox is checked, two jobs will be submitted. The first job will have [PREVIEW FRAMES] added to its name, have a priority of 100, and will render only N frames based on the spinner’s value. The step will be calculated internally. If the spinner is set to 2, the first and the last frame will be rendered. With a value of 3, the first, middle and last frames will be rendered and so on. The second job will have [REST OF FRAMES] added to its name, and will be DEPENDENT on the first job and will start rendering once the preview frames job has finished. It will have the priority specified in the dialog, and render all frames not included in the preview job. • Enforce Sequential Rendering: Recommended for particle rendering. • Submit Visible Objects Only: This option should be used at your own risk, as it is heavily dependent on the content of your scene. In most cases, it can be used to submit only a subset of the current scene to Deadline, skipping all hidden objects that would not render anyway. This feature will be automatically disabled if the current scene contains any Scene XRefs. The feature will create an incorrect file if any of the scene objects depend INDIRECTLY on hidden objects. • Force 3ds Max Build: This drop-down list allows you to specify which build of 3ds Max (32 bit vs. 64 bit) to use when rendering the job. The list will be greyed out when running in 3ds Max 8 or earlier. • Make Force 3ds Max Build Sticky: When the checkbox is unchecked, the “Force 3ds Max Build” drop-down list selection will NOT persist between sessions and will behave as documented above in the “Default” sec- tion. When the checkbox is checked, the “Force 3ds Max Build” drop-down list selection will persist between sessions. For example, if you are submitting from a 64 bit build of 3ds Max 9 or higher to an older network consisting of only 32 bit builds, you can set the drop-down list to “32bit” once and lock that setting by checking “Make Force 3ds Max Build Sticky”. Job Dependencies When the checkbox is checked and one or more jobs have been selected from the multi-list box, the job will be set to Pending state and will start rendering when all jobs it depends on have finished rendering. Use the Get Jobs List button to populate the Job List and the Filter options with job data from the Repository.

306 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Job Scheduling Enable job scheduling. See the Scheduling section of the Modifying Job Properties documentation for more informa- tion on the available options.

3ds Max Rendering

• Use Alternate Plugin.ini file: By default, 3ds Max will launch using the default plugin.ini file in the local installation. You can use this option to select an alternative plugin.ini file to use instead. Alternative plugin.ini files can be added to [Repository]\plugins\3dsmax, and then they will appear in the drop down box in the submitter (see the Custom Plugin.ini File Creation section for more information). If you have the [Default] option selected, it’s the equivalent to having this feature disabled. • Fail On Black Frames: This option can be used to fail the render if a certain portion of the output image or its render elemeents is black. The Black Pixel % defines the minimum percentage of the image’s pixels that must be black in order for the image to be considered black. If each of RGB are all less than or equal to the Threshold, and the alpha is not between the Threshold and (1.0 - threshold), then the pixel is considered black. If the Threshold is greater than or equal to 0.5, then the alpha value has no effect. • Override Bitmap Pager Setting While Rendering: You can specify if you want the 3dsmax Bitmap Pager setting to be enabled or disabled. • Submit External Files With Scene: Whether the external files (bitmaps, xrefs etc.) will be submitted with the scene or not.

8.2. 3ds Max Plug-in Guide 307 Deadline User Manual, Release 5.2.49424

• Merge Object XRefs: If object XRefs will be merged during submission. • Merge Scene XRefs: If scene XRefs will be merged during submission. • Force 3dsmax Workstation Mode (Uses up a 3dsmax License): Used mainly for testing and debugging purposes and should be left unchecked. When this option is unchecked, 3ds max will be started in Slave mode without the User Interface, which does not require a 3ds Max license. When checked, 3ds max will be launched in full Interactive mode and will require a license. Note that Workstation mode is set automatically when submitting MAXScripts to Deadline. • Enabled Silent Mode: This option is only available when Force Workstation Mode is checked. It can help suppress some popups that 3ds Max displays (although some popups like to ignore this setting). • Ignore Missing External File Errors: Missing external files could mean that the 3ds Max scene will render incorrectly (with textures missing etc). In some cases though, missing external files could be ignored- for example if the job is meant for test rendering only. If you want the job to fail if a missing external resource is detected, uncheck this checkbox. • Ignore Missing UVW Errors: Missing UVWs could mean that some 3ds Max object would render incorrectly (with wrong etc). In some cases though, missing UVWs could be ignored (for example if the job is meant for test rendering). • Ignore Missing XREF Errors: Missing XFEFs could mean that the 3ds Max scene cannot be loaded correctly. In some cases though, missing XFEFs could be ignored. If you want the job to fail if a missing XFEF message is detected at startup, keep this checkbox unchecked. • Ignore Missing DLL Errors: Missing DLLs could mean that the 3ds Max scene cannot be loaded or rendered correctly. In some cases though, missing DLLs could be ignored. If you want the job to fail if a missing DLL message is detected at startup, keep this checkbox unchecked. • Do Not Save Render Element Files: Enable this option to have Deadline skip the saving of Render Element image files during rendering (the elements themselves are still rendered). • Show Virtual Frame Buffer: If checked, the 3ds Max frame buffer will be displayed on the slave during render- ing. • Disable Progress Update Timeout: Enable this option to disable progress update checking. This is useful for renders like Fume FX sims that don’t constantly supply progress to 3dsmax. • Disable Multipass Effects: Enable this option to skip over multipass effects if they are enabled for the camera to be rendered. • Restart Renderer Between Frames: This option can be used to force Deadline to restart the renderer after each frame to avoid some potential problems with specific renderers. Enabling this option has little to no impact on the actual render times. • Job Is Interruptible: If enabled, this job will be canceled if a job with higher priority is submitted to the queue. • Apply Custom Material To Scene: If checked, all geometry objects in the scene will be assigned one of the user-defined materials available in the drop down box. 3ds Max Pathing Options

308 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Remove Filename Padding: If checked, the output filename will be (for example) “output.tga” instead of “out- put0000.tga”. This feature should only be used when rendering single frames. If you render a range of frames with this option checked, each frame will overwrite the previous existing frame. • Force Strict Output Naming: If checked, the output image filename is automatically modified to include the scene’s name. For example, if the scene name was myScene.max and the out- put image path was \\myServer\images\output.tga, the output image path would be changed to \\my- Server\images\myScene\myScene.tga. If the new output image path doesn’t exist, it is created by the 3dsmax plugin before rendering begins. • Update Render Elements’ Paths: Each Render Element has its own output path which is independent from the render output path. When this option is unchecked, changing the output path will NOT update the Render Elements’ paths and the Elements could be written to the wrong path, possibly overwriting existing passes from a previous render. When checked, the paths will be updated to point at sub-folders of the current Render Output path with names based on the name and class of the Render Element. The actual file name will be left unchanged. • Also Update RE’s Filenames: If enabled, the Render Elements’ file names will also be updated along with their paths. • Permanent RE Path Changes: When this checkbox is checked and the above option is also enabled, changes to the Render Elements paths will be permanent (in other words after the submission, all paths will point at the new locations created for the job). When unchecked, the changes will be performed temporarily during the submission, but the old path names will be restored right after the submission. • Use Alternate Path: Allows you to specify an alternate path file in the MXP format that the slaves can use to find bitmaps that are not found on the primary map paths. Render Output Autodesk ME Image Sequence (IMSQ) Creation

• Save File: Specify the render output. Note that this updates the 3ds Max Render Output dialog, and is meant as a convenience to update the output file. • Create Image Sequence (IMSQ) File: If checked, an Autodesk IMSQ file will be created from the output files at the output location. • Copy IMSQ File On Completion: If checked, the IMSQ file will be copied to the location specified in the text field. User Options

• Enable Local Rendering: If checked, Deadline will render the frames locally before copying them over to the final network location.

8.2. 3ds Max Plug-in Guide 309 Deadline User Manual, Release 5.2.49424

• One Cpu Per Task: Forces each task of the job to only use a single CPU. This can be useful when doing single threaded renders and the Concurrent Tasks setting is greater than 1. • Automatically Update Job Name When Scene File Name Changes: If checked, the Job Name setting in the submission dialog will automatically match the file name of the scene loaded. So if you load a new scene, the Job Name will change accordingly. • Override Renderer’s Low Priority Thread Option (Brazil r/s, V-Ray): When checked, the Low Priority Thread option of the renderers supporting this feature will be forced to false during the submission. Both Brazil r/s and V-Ray provide the feature to launch the renderer in a low priority thread mode. This is useful when working with multiple applications on a workstation and the rendering should continue in the background without eating all CPU resources. When submitting a job to Deadline though, this should be generally disabled since we want all slaves to work at 100% CPU load. • Clear Material Editor In The Submitted File: Clears the material editor in the submitted file during submission. • Warn about Missing External Files on Submission: When checked, a warning will be issued if the scene being submitted contains any missing external files (bitmaps etc.). Depending on the state of the’Ignore Missing External File Errors checkbox under the Render tab, such files might not cause the job to fail but could cause the result to look wrong. When unchecked, scenes with missing external files will be submitted without any warnings. Export Renderer-Specific Advanced Settings

If this option is enabled for a specific renderer, you will be able to modify a variety of settings for that renderer after submission from the Deadline Monitor. To modify these settings from the Monitor, right-click on the job and select Modify Properties, then select the 3dsmax tab. Submission Timeouts

• Job Submission Timeout in seconds: This value spinner defines how many seconds to wait for the external Submitter application to return from the Job submission before stopping the attempt with a timeout message. • Quicktime Submission Timeout in seconds: This value spinner defines how many seconds to wait for the external Submitter application to return from the Quicktime submission before stopping the attempt with a timeout message. • Data Collection Timeout in seconds: This value spinner defines how many seconds to wait for the external Submitter application to return from data collecting before stopping the attempt with a timeout message. Data collecting includes collecting Pools, Categories, Limit Groups, Slave Lists, Slave Info, Jobs etc. State Sets

310 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Select the State Sets you want to submit to Deadline. This option is only available in 3ds Max 2012 (Subscription Advantage Pack 1) and later. Run Python Scripts

• Run Pre-Job Script: Specify the path to a Python script to execute when the job initially starts rendering. • Run Post-Job Script: Specify the path to a Python script to execute when the job finishes rendering. • Run Pre-Task Script: Specify the path to a Python script to execute before each task starts rendering. • Run Post-Task Script: Specify the path to a Python script to execute after each task finishes rendering. Run Maxscript Scripts

• Submit Script Job: This checkbox lets you turn the submission into a MAXScript job. When checked, the scene will NOT be rendered, instead the specified MAXScript code will be executed for the specified frames. Options that collide with the submission of a MAXScript Job like “Tile Rendering” and “Render Preview Job First” will be disabled or ignored. • Single Task: This checkbox lets you run the MAXScript Job on one slave only. When checked, the job will be submitted with a single task specified for frame 1. This is useful when the script itself will perform some

8.2. 3ds Max Plug-in Guide 311 Deadline User Manual, Release 5.2.49424

operations on ALL frames in the scene, or when per-frame operations are not needed at all. When unchecked, the frame range specified in the Render Scene Dialog of 3ds Max will be used to create the corresponding number of Tasks. In this case, all related controls in the Job tab will also be taken into account. • Workstation Mode: This checkbox is a duplicate of the one under the Render tab (checking one will affect the other). MAXScript Jobs that require file I/O (loading and saving of 3ds Max files) or commands that require the 3ds Max UI to be present, such as manipulating the modifier stack, HAVE TO be run in Workstation mode (using up a 3ds Max license on the Slave). MAXScript Jobs that do not require file I/O or 3ds Max UI functionality can be run in Slave mode on any number of machines without using up 3ds Max licenses. • New Script From Template: This button creates a new MAXScript without any execution code, but with all the necessary template code to run a MAXScript Job on Deadline. • Pick Script: This button lets you select an existing script from disk to use for the MAXScript Job. It is advisable to use scripts created from the Template file using the “New Script From Template” button. • Edit MAXScript File: This button lets you open the current script file (if any) for editing. • Run Pre-Load Script: This checkbox lets you run a MAXScript specified in the text field below it BEFORE the 3ds Max scene is loaded for rendering by the Slave. • Run Post-Load Script: This checkbox lets you run a MAXScript specified in the text field below it AFTER the 3ds Max scene is loaded for rendering by the Slave. • Run Pre-Frame Script: This checkbox lets you run a MAXScript specified in the text field below it BEFORE the Slave renders a frame. • Run Post-Frame Script: This checkbox lets you run a MAXScript specified in the text field below it AFTER the Slave renders a frame. • Post-Submission Function Call: This field can be used by TDs to enter an arbitrary user-defined MAXScript Expression (NOT a path to a script!) which will be executed after the submission has finished. This can be used to trigger the execution of user-defined functions or to press a button in a 3rd party script. In the screenshot, the expression presses a button in a globally defined rollout which is part of an in-house scene management script. If you want to execute a multi-line script after each submission, you could enter fileIn \”c:\temp\somescript.ms\” in this field and the content of the specified file will be evaluated. The content of this field is sticky and saved in the local INI file - it will persist between sessions until replaced or removed manually. The MAXScript Job Template file is located in the Repository under \submission\3dsmax\MAXScriptJobTemplate.ms. When the button is pressed, a copy of the template file with a name pattern “MAXScrip- tJob_TheSceneName_XXXX.ms” will be created in the \3dsmax#\scripts\SubmitMaxToDeadline folder where XXXX is a random ID and 3dsmax# is the name of the 3ds Max root folder. The script file will open in 3ds Max for editing. You can add the code to be executed in the marked area and save to disk. The file name of the new template will be set as the current MAXScript Job file automatically. If a file name is already selected in the UI, you will be prompted about replacing it first. Deadline exposes an interface to MAXScript, which allows you to gather information about the job being rendered. See the Deadline Maxscript Interface documentation for the available functions and properties. Tile Rendering

312 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Enable Tiles Rendering: This checkbox enables the tile rendering option. • Tiles In X / Tiles In Y: These values specify the number of tiles horizontally and vertically. The total number of tiles (and jobs) to be rendered is calculated as X*Y and is displayed in the UI. • Show Tiles In Viewport: Enables the tile display gizmo. • Tile Pixel Padding: This value defines the number of pixels to overlap between tiles. By default it is set to 0, but when rendering , it might be necessary to render tiles with significant overlapping to avoid artifacts. • Re-Render User-Defined Tiles: When checked, only user-defined tiles will be submitted for re-rendering. Use the [Specify Tiles To Re-render...] check-button to open a dialog and select the tiles to be rendered. • Specify Tiles To Re-render: When checked, a dialog to select the tiles to be re-rendered will open. To close the dialog, either uncheck the button or press the [X] button on the dialog’s title bar. – Enable Blowup Mode: If enabled, tile rendering will work by zooming in on the region and rendering it at a smaller resolution. Then that region is blown up to bring it to the correct resolution. This has been known to help save memory when rendering large high resolution images. • Submit All Tiles As A Single Job: By default, a separate job is submitted for each tile (this allows for tile rendering of a sequence of frames). For easier management of single frame tile rendering, you can choose to submit all the tiles as a single job. • Submit Dependent Assembly Job: When rendering a single tile job, you can also submit a dependent assembly job to assemble the image when the main tile job completes. • Cleanup Tiles After Assembly: If rendering an assembly job, this will delete the original tiles after the main image has been assembled. • Split Machine Limit Between Tile Jobs: For Multiple Tile Job rendering only. When checked, the limit specified in the Job tab will be divided equally between the Tile Jobs. If no limit is specified in the Job tab, each Job will render with a limit of ONE! If unchecked and a Machine Limit is specified in the Job tab, each Tile job will get that limit. If unchecked and no Machine Limit is enforced in the Job tab, all Tile Jobs will be rendered without any limits. Region Rendering

8.2. 3ds Max Plug-in Guide 313 Deadline User Manual, Release 5.2.49424

When enabled, only the specified region will be rendered and depending on the region type selected, it can be cropped or blown up as well. If the Enable Distributed Tiles Rendering checkbox is checked, it will be unchecked. This option REPLACES the “Crop” option in the Render mode drop-down list in the 3ds Max UI. In other words, the 3ds Max option does not have to be selected for Region Rendering to be performed on Deadline. The region can be specified either using the CornerX, CornerY, Width and Height spinners, or by getting the current region from the active viewport. To do so, set the Render mode drop-down list to either Region or Crop, press the Render icon and drag the region marker to specify the desired size. Then press ESC to cancel and press the Get Region From Active View to capture the new values. Quicktime Generation From Rendered Frame Sequence Create a Quicktime movie from the frames rendered by a 3ds Max job. You can create a Quicktime using an Apple Quicktime installation or by using Fusion. See the Deadline Quicktime documentation for more information on the available options.

Render To Texture This option enables texture baking through Deadline. Use the Add, Remove, and Clear All buttons to add and remove objects from the list of objects to bake.

Batch Submission

• Use Data from 3ds Max Batch Render: This checkbox enables Batch Submission using the 3ds Max Batch Render dialog settings. If checked, a single MASTER job will be sent to Deadline which in turn will “spawn” all necessary BATCH jobs.

314 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Open Dialog: This button opens the 3ds Max Batch Render dialog in Version 8 and higher. • Update Info: This button reads the 3ds Max Batch Render dialog settings and displays the number of enabled vs. defined Views. Remote Submission (For Internal Use Only) • Repository: Select the repository you would like to submit the job to. Leaving this at the DISABLED setting disables remote submission. • Suspend Job After Transfer: The job will be transfered to the remote repository in the suspended state. • Jpeg Output Path: Check this box to specify an alternative output path where Jpegs of each output image are copied to after the frame is rendered. Note that the render doesn’t fail if saving the Jpeg failed. While this feature was designed for internal use only, it is possible to make use of the feature in the public version of Deadline. To show the Remote tab on submission, do the following: • Create a file called RemoteSubmissionRepositories.ini on a network share that can be accessed by all machines you plan to remote submit from. This file is used by Deadline to show a meaningful name that represents the network path to the repository you wish to submit to. Each line in this file should contain the user friendly location name, followed by a comma, followed by the network path to the repository at that location. For example, the file contents could look like: Main Repository,\\main_repository_machine\DeadlineRepository Secondary Repository,\\another_machine\DeadlineRepository ...

• Open the file [Repository]\submission\3dsmax\SubmitMaxToDeadline.ms in a text editor and find this line: local ShowRemoteTab = doesFileExist "V:\\deadline_synch\\RemoteSubmissionRepositories.ini"

Simply replace the path in quotes with the path to the RemoteSubmissionRepositories.ini you created on the network, then save the file. You will also have to replace the path in the SubmitMaxToDeadline_Functions.ms file as well. • The next time you launch the 3ds Max submission dialog, the Remote tab should be visible.

Sanity Check

The 3ds Command Sanity Check script defines a set of functions to be called to ensure that the scene submission does not contain typical errors like wrong render view and frame range settings, incorrect output path, etc. The Sanity Check is enabled by the Run Sanity Check Automatically Before Submission checkbox in the User Options group of controls in the Submit To Deadline (3dsmaxCmd) dialog. You can also run the Sanity Check automatically by clicking the Run Now! button.

8.2. 3ds Max Plug-in Guide 315 Deadline User Manual, Release 5.2.49424

The dialog contains the following elements: • The upper area (Error Report) lists the problems found in the current scene. • The lower area (Feedback Messages) lists the actions the Sanity Check performs and gives feedback to the user. The latest message is always on top. • Between the two areas, there is a summary text line listing the total number of errors and a color indicator of the current Sanity Check state. When red, the Sanity Check will not allow a job submission to be performed. The Error Report The left column of the Error Report displays a checkbox and the type of the error. The checkbox determines whether the error will be taken into account by the final result of the check. Currently, there are 3 types of errors: • FATAL: The error cannot be fixed automatically and requires manual changes to the scene itself. A job sub- mission with such an error would be pointless. The state of the checkbox is ignored and considered always checked. • Can Be Fixed: The error can be fixed automatically or manually. If the checkbox is active, the error contributes to the final result. If unchecked, the error is ignored and handled as a warning. • Warning: The problem might not require fixing, but could be of importance to the user. It is not taken into account by the final result (the state of the checkbox is ignored and considered always unchecked). Repairing Errors In 3ds Max 8 and earlier, double-clicking an Error Message in the Error Report window will cause an associated repair function to be executed and/or a Report Message to be output in the Feedback Messages window. In 3ds Max 9 and higher, right-clicking an Error Message in the Error Report window will cause an associated repair function to be executed and/or a Report Message to be output in the Feedback Messages window. This difference was caused by the switch to DotNet controls which handle double-clicks as checked events, changing the checkbox state in front of the error instead. Updating the Error Report You can rerun/update the Sanity Check in one of the following ways:

316 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Clicking the dialog anywhere outside of the two message areas will rerun the Sanity Check and update all messages. • Double-clicking any Message in the Feedback Messages window will rerun the Sanity Check and update all messages. • Reparing an error by double-clicking will also automatically rerun the Sanity Check • Pressing the Run Now! button in the Submit To Deadline dialog will update the Sanity Check.

8.2.2 Plug-in Configuration

You can configure the 3dsmax plugin settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the 3dsmax plugin from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tooltip will be displayed.

8.2.3 Integrated Submission Script Setup

The following procedure describes how to install the integrated submission script. The integrated submission script allows for submitting 3ds Max render jobs to Deadline directly from within the 3ds Max editing GUI. The integrated render job submission script and the following installation procedure has been tested with 3ds Max versions 9, 2008, 2009, and 2010 (including Design editions). Installation of the Submission Script • Copy [Repository]/ClientSetup/3dsmax/Deadline-SubmitMaxToDeadline.mcr to [3ds Max Install Direc- tory]/UI/MacroScripts Add Max2Deadline Command to 3dsmax Menu • Select MAXScript -> Run Script, then find the directory [3ds Max Install Directory]/UI/MacroScripts, select the file Deadline-SubmitMaxToDeadline.mcr, and click Open.

8.2. 3ds Max Plug-in Guide 317 Deadline User Manual, Release 5.2.49424

• Then select Customize -> Customize User Interface, select the Menus tab, and make sure that the Main Menu Bar is selected in the combo box at the top-right of the dialog.

• In the Menus list box at the bottom-left, right-click and select New Menu..., and create a menu called Deadline.

• Drag-and-drop the Deadline menu from the Menus list box to the desired location in the list box on the right

318 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• In the Group combo box in the top-left, select Main UI, and in the Category combo box below, select Deadline

• Drag-and-drop the Submit To Deadline item that appears in the Action list box to the Deadline menu on the right.

8.2. 3ds Max Plug-in Guide 319 Deadline User Manual, Release 5.2.49424

• Close the dialog, and the new menu should appear in the main tool bar.

320 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.2.4 Advanced Features For Technical Directors

Deadline MAXScript Interface

When running a MAXScript job through Deadline, there is an interface that Deadline exposes called DeadlineUtil which you can use to get information about the job being rendered. The API for the interface between MAXScript and Deadline is as follows: Functions Function Description string GetAuxFilename( int index ) Gets the file with the given index that was submitted with the job.

8.2. 3ds Max Plug-in Guide 321 Deadline User Manual, Release 5.2.49424

string GetJobInfoEntry( string key ) Gets a value from the plugin info file that was submitted with the job, and returns an empty string if the key doesn’t exist. string GetOutputFilename( int index ) Gets the output file name for the job at the given index. string GetSubmitInfoEntry( string key ) Gets a value from the job info file that was submitted with the job, and returns an empty string if the key doesn’t exist. int GetSubmitInfoEntryElementCount( string key ) If the job info entry is an array, this gets the number of elements in that array. string GetSubmitInfoEntryElement( int index, string key ) If the job info entry is an array, this gets the element at the given index. void FailRender( string message ) Fails the render with the given error message. void LogMessage( string message ) Logs the message to the slave log. void SetProgress( float percent ) Sets the progress of the render in the slave UI. void SetTitle( string title ) Sets the render status message in the slave UI. Properties Property Description int CurrentFrame Gets the current frame. int CurrentTask Gets the current task ID. string JobsDataFolder Gets the local folder on the slave where the Deadline job files are copied to. string PluginsFolder Gets the local folder on the slave where the Deadline plugin files are copied to. string SceneFileName Gets the file name of the loaded 3ds Max scene. string SceneFilePath Gets the file path of the loaded 3ds Max scene.

322 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submitter’s Sticky Settings and Factory Defaults

The latest version of the Submit Max To Deadline script allows the user to control the stickiness of most User Interface controls and, in the case of non-sticky settings, the defaults to be used. In previous versions of SMTD, both the stickiness and the defaults were hard-coded. Overview Two INI files located in the Repository in the folder \submission\3dsmax control the stickiness and the defaults: • SubmitMaxToDeadline_StickySettings.ini - this file can be used to define which controls in the SMTD UI will be stored locally in an INI file (“sticky”) and which will be reset to defaults after a restart of the Submitter. • SubmitMaxToDeadline_Defaults.ini - this file can be used to define the default settings of those controls set to non-sticky in the other file. In addition, a local copy of the SubmitMaxToDeadline_StickySettings.ini file can be saved in a user’s application data folder. This file will OVERRIDE the stickiness settings in the Repository and can contain a sub-set of the definitions in the global file. Details When SMTD is initializing, it will perform the following operations: 1. The SMTDSettings Struct will be initialized to the factory defaults of all settings. 2. Each UI setting will be initially assumed to be sticky. 3. The global Stickiness definition file is searched for a key matching the current UI setting’s name. • If the key is set to “false”, the setting is not sticky. • If the key is set to anything but “false”, the setting is sticky. • If the key does not exist, the stickiness still defaults to the initial value of true. 4. A local Stickiness definition file is searched for a key matching the current UI setting’s name. • If the key is set to “false”, the setting is not sticky and overrides whatever was found in the global file. • If the key is set to anything but “false”, the setting is sticky, overriding whatever was found in the global file. • If the key does not exist in the local file, the last known value (initial or from the global file) remains in power. 5. At this point, SMTD knows whether the setting is sticky or not. Now it gets the global default value: • If a matching key exists in the file SubmitMaxToDeadline_Defaults.ini, the setting is initialized to its value. • If no matching key exists in the global defaults file, the original factory default defined in the SMTDStruct definition will remain in power. • If the setting is sticky, SMTD loads the last known value from the local INI file. If the value turns out to be invalid or not set, it uses the default instead. • If the setting is not sticky, the default loaded from the global defaults file or, if no such default was loaded, the factory default, will be assigned to the setting. When the User Interface is created, the stickiness info from the local and global files will determine whether a * star character will be added to the control’s name, reflecting the current stickiness settings. Using this new feature, a facility can customize the submitter globally to default to the preferred settings and keep certain settings sticky so their values can be determined by the artists. In addition, single users can override the company-wide stickiness settings using a local file if they feel their workflow require a different setup.

8.2. 3ds Max Plug-in Guide 323 Deadline User Manual, Release 5.2.49424

Custom Job Name Controls

There are two ways to customize the job name. You can use keys in the job name that are replaced with actual values (like $scene), or you can have the job name be generated from a list of shows, shots, etc. You will then be able to use the [>>] button to the right of the Job Name field to select these custom job names. Generate Job Name From Keys There is a file in the ..\submission\3dsmax\ folder in your Deadline Repository called SubmitMaxToDead- line_NameFormats.ini. In addition, a local copy of the SubmitMaxToDeadline_NameFormats.ini file can be saved in a user’s application data folder. This file will OVERRIDE the name formats in the Repository and can contain a sub-set of the definitions in the global file. This file will contain some key-value pairs such as: $scene=(getfilenamefile(maxfilename)) $date=((filterstring (localtime) " ")[1]) $username=(sysInfo.username) $camera=(local theCam = viewport.getCamera() if (isValidNode theCam) then theCam.name else "") $outputfilename=(if (rendOutputFilename != "") then (filenameFromPath rendOutputFilename) else "") $outputfile=(if (rendOutputFilename != "") then (getFilenameFile rendOutputFilename) else "") $outputtype=(if (rendOutputFilename != "") then (getFilenameType rendOutputFilename) else "") $maxversion=(((maxVersion())[1]/1000) as string)

The key to the left of = is the string that will be replaced in the job name. The value to the right of the = is the maxscript code that is executed to return the replacement string (note that the value returned must be returned as a string). So if you use $scene in your job name, it will be swapped out for the scene file name. You can append additional key-value pairs or modify the existing ones as you see fit. By default, the [>>] button will already have $scene or $outputfilename as selectable options. You can then create an optional JobNames.ini file in the 3dsmax submission folder, with each line representing an option. For example: $scene $outputfilename $scene_$camera_$username $maxversion_$date

These options will then be available for selection in the submission dialog. This allows for all sorts of customization with regards to the job name. Generate Job Name For Shows This advanced feature allows the addition of custom project, sequence, shot and pass names to the [>>] list to the right of the Job Name field. Producers in larger facilities could provide full shot lists via a central set of files in the Repository to allow users to pick existing shot names and ensuring consistent naming conventions independent from the 3ds Max scene naming. To create a new set of files, go to the ..\submission\3dsmax\ folder in your Deadline Repository and create the following files: Projects.ini - This file describes the projects currently available for Custom Job Naming. Each Project is defined as a Category inside this file, with two keys: Name and ShortName. For example: [SomeProject] Name=Some Project in 3D ShortName=SP [AnotherProject] Name=Another Project ShortName=AP

324 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

SomeProject.ini - This is a file whose name should match exactly the Category name inside the file Projects.ini and contains the actual sequence, shot and pass description of the particular project. One file is expected for each project definition inside the Projects.ini file. For example: [SP_SS_010] Beauty=true Diffuse=true Normals=true ZDepth=true Utility=true [SP_SS_150] Beauty=true Diffuse=true Utility=true [SP_SO_020] Beauty=true [SP_SO_030] Beauty=true

The Submitter will parse this file and try to collect the Sequences by matching the prefix of the shot names, for example in the above file, it will collect two sequences - SP_SS and SP_SO - and build a list of shots within each sequence, then also build a list of passes within each shot. Then, when the [>>] button is pressed, the context menu will contain the name of each project and will provide a cascade of sub-menus for its sequences, shots and passes.

If you selected the entry SomeProject>SP_SS>SP_SS_150>Diffuse, the resulting Job Name will be “SP_SS_150_Diffuse”:

You can enter as many projects into your Projects.ini file as you want and provide one INI file for each project describing all its shots and passes. If an INI file is missing, no data will be displayed for that project.

8.2. 3ds Max Plug-in Guide 325 Deadline User Manual, Release 5.2.49424

Custom Comment Controls

Just like job names, you can use keys in the comment field that are replaced with actual values (like $scene). There is a file in the ..\submission\3dsmax\ folder in your Deadline Repository called SubmitMaxToDead- line_CommentFormats.ini. In addition, a local copy of the SubmitMaxToDeadline_CommentFormats.ini file can be saved in a user’s application data folder. This file will OVERRIDE the comment formats in the Repository and can contain a sub-set of the definitions in the global file. This file will contain some key-value pairs such as: $default=("3ds Max " + SMTDFunctions.getMaxVersion() + " Scene Submission") $scene=(getfilenamefile(maxfilename)) $date=((filterstring (localtime) " ")[1]) $deadlineusername=(SMTDFunctions.GetDeadlineUser()) $username=(sysInfo.username) $camera=(local theCam = viewport.getCamera() if (isValidNode theCam) then theCam.name else "") $outputfilename=(if (rendOutputFilename != "") then (filenameFromPath rendOutputFilename) else "") $outputfile=(if (rendOutputFilename != "") then (getFilenameFile rendOutputFilename) else "") $outputtype=(if (rendOutputFilename != "") then (getFilenameType rendOutputFilename) else "") $maxversion=(((maxVersion())[1]/1000) as string)

The key to the left of = is the string that will be replaced in the comment. The value to the right of the = is the maxscript code that is executed to return the replacement string (note that the value returned must be returned as a string). So if you use $scene in your comment, it will be swapped out for the scene file name. You can append additional key-value pairs or modify the existing ones as you see fit. By default, the [>>] button will already have $default. You can then create an optional Comments.ini file in the 3dsmax submission folder, with each line representing an option. For example: $default $scene $outputfilename $scene_$camera_$username $maxversion_$date

These options will then be available for selection in the submission dialog. This allows for all sorts of customization with regards to the comment field.

Auto-Suggest Category and Priority Mechanism

This feature has been implemented to help Producers suggest categories and priorities based on Shots and Sequence signatures which are part of the 3ds Max Scene Name. This feature DOES NOT ENFORCE the Category and Priority for the job, it only suggests a value based on project guidelines - the Category and Priority can be changed manually after the suggestion. To use this feature, you have to edit the file called “SubmitMaxToDeadline_CategoryPatterns.ms” located in the Repos- itory in the \submission\3dsmax folder. As a shortcut, you can press the button Edit Patterns... in the Options tab of the Submitter - the file will open in the built-in MAXScript Editor. The file defines a global array variable called SMTD_CategoryPatterns which will be used by the Submitter to perform pattern matching on the Job Name and try to find a corresponding Category and optionally a priority value in the array. The array can contain one or more sub-arrays, each one representing a separate pattern definition. Every pattern sub-array consists of four array elements: 1. The first element is an array containing zero, one or more string patterns using * wildcards. These strings will be used to pattern match the Job Name. If it matches, it will be considered for adding to the Category and for changing the Priority. If the subarray is empty, all jobs will be considered matching the pattern.

326 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

2. The second element is also an array containing similar pattern strings. These strings will be used to EXCLUDE jobs matching these patterns from being considered for this Category and Priority. If the subarray is empty, no exclusion matching will be performed. 3. The third element contains the EXACT name (Case Sensitive!) of the category to be set if the Job Name matches the patterns. If the category specified here does not match any of the categories defined via the Deadline Monitor, no action will be performed. 4. The fourth element specifies the Priority to give the job if it matches the patterns. If the value is -1, the existing priority will NOT be changed. The pattern array can contain any number of pattern definitions. The higher a definition is on the list, the higher its priority - if a Job Name matches multiple pattern definitions, only the first one will be used. The pattern matching will be performed only if the checkbox Auto-Suggest Job Category and Priority in the Options Tab is checked. It will be performed when the dialog first opens or when the the Job Name is changed. An example: • Let’s assume that a VFX facility is working on a project called “SomeProject” with multiple sequences labelled “AB”, “CD” and “EF”. • The network manager has created categories called “SomeProject”, “AB_Sequence”, “CD_Sequence”, “EF_Sequence” and “High_Priority” via the Monitor. • The Producers have instructed the Artists to name their 3ds Max files “SP_AB_XXX_YYY_” where SP stands for “SomeProject”, “AB” is the label of the sequence followed by the scene and shot numbers. • Now we want to set up the Submitter to suggest the right Categories for all Max files sent to Deadline based on these naming conventions. • We want jobs from the CD sequence to be set to Priority of 60 unless they are from the scene with number “007”. • We want jobs from the AB sequence to be set to Priority of 50 • We don’t want to enforce any priority to jobs for sequence EF. • Also we want shots from the “AB” sequence with scene number “123” and “EF” sequence with scene shot number “038” to be sent at highest priority and added to the special “High Priority” category for easier filtering in the Monitor. • Finally we want to make sure that any SP project files that do not contain a sequence label are added to the general “SomeProject” category with lower priority. To implement these rules, we could create the following definitions in the “SubmitMaxToDead- line_CategoryPatterns.ms” - press the Edit Patterns... button in the Options tab to open the file: SMTD_CategoryPatterns = #( #(#("*AB_123*","*EF_*_038*"),#(),"High_Priority",100), #(#("*AB_*"),#(),"AB_Sequence",50), #(#("*CD_*"),#("*CD_007_*"),"CD_Sequence",60), #(#("*EF_*"),#(),"EF_Sequence",-1), #(#("SP_*"),#(),"SomeProject",30), )

1. The first pattern specifies that files from the “AB” sequence, scene “123” and “EF” sequence, shot “038” (re- gardless of scene number) will be suggested as Category “High_Priority” and set Priority to 100. 2. The second pattern specifies all AB jobs to have priority of 50 and be added to Category “AB_Sequence”. Since the special case of AB_123 has been handled in the previous pattern, this will not apply to it. 3. The third pattern sets jobs that contain “CD_” in their name but NOT the signature “CD_007_” to the “CD_Sequence” Category and sets the Priority to 60.

8.2. 3ds Max Plug-in Guide 327 Deadline User Manual, Release 5.2.49424

4. The fourth pattern sets jobs that contain “EF_” in their name to the “EF_Sequence” Category but does not change the priority (-1). 5. The fifth pattern specifies that any jobs that have not matched the above rules but still start with the “SP_” signature should be added to the “SomeProject” Category and set to low priority of 30. Note that since we used “*” instead of “SP_” in the beginning of the first 4 patterns, even if the job is not named correctly with the project prefix “SP_”, the pattern will correctly match the job name.

Custom Plugin.ini File Creation

This section covers the Alternate Plugin.ini feature in the 3ds Max Rendering rollout (under the Render tab). Alternate Plugin.ini File The plugin.ini list will show a list of alternative plug-in configuration files located in the Deadline repository. By default, there will be no alternative plugin.ini files defined in the repository. The list will show only one entry called [Default], which will cause all slaves to render using their own local plugin.ini configuration and is equivalent to having the Use Custom Plugin.ini file unchecked. To define an alternative plugin.ini, copy a local configuration file from one of the slaves to [Reposi- tory]\plugins\3dsmax in the repository. Edit the name of the file by adding a description of it. For example, plu- gin_brazil.ini, plugin_vray.ini, plugin_fr.ini, plugin_mentalray.ini, etc. Open the file and edit its content to include the plug-ins you want and exclude the ones you don’t want to use in the specific case. The next time you launch Submit To Deadline, the list will show all alternative files whose names start with “plugin” and end with ”.ini”. The list will be alphabetically sorted, with [Default] always on top. You can then select an alternative plugin.ini file manually from the list. Pressing the Edit Plugin.ini File button will open the currently selected alternative configuration file in a MAXScript Editor window for quick browsing and editing, except when [Default] is selected. Pressing the Browse Directory button will open Windows Explorer, taking you directly to the plug-ins directory containing the alternative plugin.ini files. Note that if you create a new plugin.ini file, you will have to restart the Submit To Deadline script to update the list. Since the alternative plug-in configuration file is located in the Deadline Repository and will be used by all slave machines, the plug-in paths specified inside the alternative plugin.ini will be used as LOCAL paths by each slave. There are two possible installation configurations that would work with alternative plug-ins (you could mix the two methods, but it’s not recommended): 1. Centralized Plug-ins Repository: In this case, all 3dsmax plug-ins used in the network are located at a centralized location, with all Slaves mapping a drive letter to the central plug-in location and loading the SAME copy of the plug-in. In this case, the alternative plugin.ini should also specify the common drive letter of the plug-in repository. 2. Local Plug-in: To avoid slow 3dsmax booting in networks with heavy traffic, some studios (including ones we used to work for) deploy local versions of the plug-ins. Every slave’s 3dsmax installation contains a full set of all necessary plug-ins (which could potentially be automatically synchronized to a central repository to keep all machines up-to-date). In this case, the alternative plugin.ini files should use the LOCAL drive letter of the 3dsmax installation, and all Slaves’ 3dsmax copies MUST be installed on the same partition, or at least have the plug-ins directory on the same drive, for example, “C:”. Auto-Detect Plugin.ini For Current Renderer When enabled, the following operations will be performed: 1. When you check the checkbox, the current renderer assigned to the scene will be queried. 2. The first 3 characters of the renderer’s name will be compared to a list of known renderers. 3. If the renderer is not on the list, the alternative list will be reset to [Default].

328 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

4. If the renderer is the Default Scanline Renderer of 3dsmax, the alternative list will be reset to [Default]. 5. If the renderer is a known renderer, the plugin*.ini file that matches its name will be selected. Supported renderers for auto-suggesting an alternative configuration are: • Brazil plugin*.ini should contain “brazil” in its name (i.e.: plugin_brazil.ini, plugin-brazil.ini, plugin- brazil_1_2.ini etc). • Entropy plugin*.ini should contain “entropy” in its name (i.e.: plugin_entropy.ini, plugin-entropy.ini, pluginen- tropy.ini, etc). • finalRender plugin*.ini should contain “fr” or “final” in its name (i.e.: plugin_fr.ini, plugin-finalrender.ini, plu- gin_finalRender_Stage1.ini etc). • MaxMan plugin*.ini should contain “maxman” in its name (i.e.: plugin_maxman.ini, plugin-maxman.ini, plug- inmaxman001.ini etc). • mentalRay plugin*.ini should contain “mr” or “mental” in its name (i.e.: plugin_mr.ini, plugin-mentalray.ini, plugin_mental33.ini etc). • VRay plugin*.ini should contain “vray” in its name (i.e.: plugin_vray.ini, plugin-vray.ini, pluginvray109.ini etc). Notes: • In 3dsmax 5 and higher, opening a MAX file while the Auto-Detect option is checked will trigger a callback which will perform the above check automatically and switch the plugin.ini to match the renderer used by the scene. • In 3dsmax 6 and higher, changing the renderer via the “Current Renderers” rollout of the Render dialog will also trigger the auto-suggesting mechanism. • You can override the automatic settings anytime by disabling the Auto-Detect option and selecting from the list manually.

8.2.5 FAQ

Which versions of 3ds Max are supported? 3ds Max versions 9 and later are all supported by Deadline (including Design editions). 3ds Max 7 and 8 users can still render with Deadline using the 3dsCommand plugin. Note: Due to a maxscript bug in the initial release of 3ds Max 2012, the integrated submission scripts will not work. However, this bug has been addressed in 3ds Max 2012 Hotfix 1. If you cannot apply this patch, it means that you must submit your 3ds Max 2012 jobs from the Deadline Monitor. Which 3ds Max renderers does Deadline support? Deadline should already be compatible with all 3ds Max renderers, but it has been explicitly tested with Scanline, mentalRay, Brazil, VRay, finalRender, and Maxwell. If you have successfully used a 3ds Max renderer that is not on this list, please email Deadline Support. Does the 3ds Max plugin support Tile Rendering? Yes. See the Tile Rendering section of the submission dialog documentation for more details. Does the 3ds Max plugin support Batch Rendering? Yes. See the Batch Rendering section of the submission dialog documentation for more details. When I submit a render with a locked viewport, Deadline sometimes renders a different viewport.

8.2. 3ds Max Plug-in Guide 329 Deadline User Manual, Release 5.2.49424

Prior to the release of 3ds Max 2009, the locked viewport feature wasn’t exposed to the 3ds Max SDK, so it was impossible for Deadline to know whether a viewport is locked or not. Now that the feature has been exposed, we are working to improve Deadline’s locked viewport support. However, in the 3ds Max 2009 and 2010 SDK, there is a bug that prevents us from supporting it completely (Autodesk is aware of this bug). Until this bug is resolved, we can only continue to recommend that users avoid relying on the locked viewport feature, and instead ensure that the viewport they want to render is selected before submitting to Deadline. When I submit a render job that uses more than one default light, only one default light gets rendered. The workaround for this problem is to add the default lights to the scene before submitting the job to Deadline. This can be done from within 3ds Max by selecting Create Menu -> Lights -> Standard Lights -> Add Default Lights to Scene. Is it possible to submit MAXscripts to Deadline instead of just a *.max scene? Yes. Deadline supports MAXscript jobs from the Scripts tab in the submission dialog. Does Deadline’s custom interface for rendering with 3ds Max use workstation licenses? No. Deadline’s custom interface for rendering with 3ds max does not use any workstation licenses when running on slaves unless you have the Force Workstation Mode option checked in the submission dialog, a workstation license will be used. Slaves are rendering their first frame/tile correctly, but subsequent frames and render elements have problems or are rendered black. Try enabling the option to Restart Renderer Between Frames in the submission dialog before submission, or in the job properties dialog after submission. We have found that this works 99% of the time in these cases. When rendering with VRay/Brazil, it appears as if some maps are not being displayed properly. Try enabling the option to Restart Renderer Between Frames in the submission dialog before submission, or in the job properties dialog after submission. We have found that this works 99% of the time in these cases. Tile rendering with a Mental Ray camera known as “wraparound” results in an incorrect final image. How can I fix this? This is another situation where enabling the option to Restart Renderer Between Frames in the submission dialog seems to fix the problem. When tile rendering with VRay, I get bucket stamps on the final image. Try rendering the irradiance map first in 1 pass at full resolution. Then perform your tile render on a scene that reads the irradiance map created at full resolution. If creating the map at full resolution is impossible then you can make it in the tile, but you need to make sure the tiles are overlapping each other and make sure to use the irrandiance map method that appends to the map. In short: you create the map first then do the final render in tiles. Can I Perform Fume FX Simulations With Deadline? Yes. To do so, follow these steps: 1. Your render nodes need to have Fume FX licensed properly, either with a “full” or “simulation” licenses. This requirement is the same if you were rendering with Backburner. 2. Before you launch the 3dsmax submission script, make sure that the Fume FX NetRender toggle button is “ON” in the Fume FX options in 3dsmax. 3. Before you submit the job, make sure the “Disable Progress Update Timeout” option is enabled under the Render in the 3dsmax submission window.

330 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.2.6 Error Messages And Meanings

This is a collection of known 3ds Max error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Note that when an error occurs in a Max render, we parse the Max render log (Max.log) for any messages that might explain the problem and include them in the error message. Some examples are: • ERR: An unexpected exception has occurred in the network renderer and it is terminating. • ERR: Missing dll: BrMaxPluginMgr.dlu • ERR: [V-Ray] UNHANDLED EXCEPTION: Preparing ray server Last marker is at .\src\vrayrenderer.cpp

3dsmax startup: Error getting connection from 3dsmax: 3dsmax startup: Deadline/3dsmax startup error: lightningMax*.dlx does not appear to have loaded on 3dsmax startup, check that it is the right version and installed to the right place. You likely need to install the appropriate Visual C++ Redistributable package, which can be done as part of the Deadline Client installation.

Could not delete old lightning.dlx... This file may be locked by a copy of 3ds max Usually this is because a 3dsmax.exe process didn’t quit or get killed properly. Looking in task manager on the slaves reporting the message for a 3dsmax.exe process and killing it is the solution. 3dsmax crashed in GetCoreInterFace()->LoadFromFile() There are a number of things that can be tried to diagnose the issue: • Try opening the file on a machine where it crashed. You may already have done this. • Try rendering a frame of it on a machine where it crashed, using the 3dsmaxcmd.exe renderer. This will make it open the file in slave mode and possibly give an idea of what’s failing. • Submit the job to run in workstation mode. In workstation mode there’s often more diagnostic output. There’s a checkbox in the submission script for this. • If you’re comfortable sending us the .max file which is crashing, we’d be happy to diagnose the issue here. • Try stripping down the max file by deleting objects and seeing if it still crashes then.

8.2. 3ds Max Plug-in Guide 331 Deadline User Manual, Release 5.2.49424

Trapped SEH Exception in CurRendererRenderFrame(): Access Violation An Access Violation means that when rendering the frame, Max either ran out of memory, or memory became cor- rupted. The stack trace in the error message usually shows which plugin the error occurred in. If that doesn’t help track down the issue, try stripping down the max file by deleting objects and seeing if the error still ocurs. 3dsmax: Trapped SEH Exception in LoadFromFile(): Access Violation An Access Violation means that when loading the scene, Max either ran out of memory, or memory became corrupted. The stack trace in the error message usually shows which plugin the error occurred in. If that doesn’t help track down the issue, try stripping down the max file by deleting objects and seeing if the error still ocurs. RenderTask: 3dsmax exited unexpectedly (it may have crashed, or someone may have terminated) This generic error message means that max crashed and exited before the actual error could be propagated up to Deadline. Often when you see this error, it helps to look through the rest of the error reports for that job to see if they contain any information that’s more specific. RenderTask: 3dsmax may have crashed (recv: socket error trying to receive data: WSAError code 10054) This generic error message means that max crashed and exited before the actual error could be propagated up to Deadline. Often when you see this error, it helps to look through the rest of the error reports for that job to see if they contain any information that’s more specific. 3dsmax startup: Error getting connection from 3dsmax: 3dsmax startup: Deadline/3dsmax startup error: lightningMax*.dlx does not appear to have loaded on 3dsmax startup, check that it is the right version and installed to the right place. This error is likely the side effect of another error, but the original error wasn’t propagated to Deadline properly. Often when you see this error, it helps to look through the rest of the error reports for that job to see if they contain any information that’s more specific. 3dsmax startup: Max exited unexpectedly. Check that 1) max starts up with no dialog messages and in the case of 3dsmax 6, 2) 3dsmaxcmd.exe produces the message ‘Error opening scene file: “”’ when run with no command line arguments This message is often the result of an issue with the way Max starts up. Try starting 3ds Max on the slave machine that produced the error to see if it starts up properly. Also try running 3dsmaxcmd.exe from the command line prompt to see if it produces the message ‘Error opening scene file: “”’ when run with no command line arguments. If it doesn’t produce this message, there may be a problem with the Max install or how its configured. Sometimes reinstalling Max is the best solution. The 3dsmax command line renderer, ...\3dsmaxcmd.exe, hung during the verification of the 3ds max install Try running 3dsmaxcmd.exe from the command line prompt to see if it pops up an error dialog or crashes, which is often the cause of this error message. If this is the case, there may be a problem with the Max install or with how it is configured. Sometimes reinstalling Max is the best solution. 3dsmax: Failed to load max file: ”...” There could be many reasons my Max would fail to load the scene file. Check for ERR or WRN messages included in the error message for information that might explain the problem. Often, this error is the result of a missing plugin or dll. Exception: Failed to render the frame. There could be many reasons my Max would fail to render the frame. Check for ERR or WRN messages included in the error message for information that might explain the problem. An error occurred in StartJob(): 3dsmax: Trapped SEH Exception in LoadFromFile(): Integer Divide By Zero Process: C:\Program Files\Autodesk\3ds Max 2009\3dsmax.exe Module: C:\Program Files\Autodesk\3ds Max 2009\stdplugs\AutoCamMax.gup

332 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

There are known issues with the new steering wheel plugin (AutoCamMax.gup) in 3ds Max 2009. Upgrading to the latest 3ds Max 2009 service pack or disabling the plugin has been known to fix this problem. This is from Autodesk: The AutoCam feature (Autodesk® ViewCube® and SteeringWheels) can cause noticeable performance degradation. If you are working with complex scenes that cause your machine to run out of resources, it is strongly recommended that you fully disable the AutoCam plug-in. To disable the AutoCam plug-in 1. Close Autodesk 3ds Max 2009. 2. In Windows® Explorer, navigate to the Autodesk 3ds Max 2009 root folder. The default location of this directory is C:\Program Files\Autodesk\3ds Max 2009. 3. Open the \stdplugs folder. 4. Locate the AutoCamMax.gup file. 5. Right-click the file. On the shortcut menu, click Rename. 6. Rename the file, AutoCamMax.gup.bak. 7. Restart Autodesk 3ds Max 2009. Note: To enable this feature rename the file, AutoCamMax.gup.

8.3 After Effects Plug-in Guide

8.3.1 Job Submission

You can submit jobs from within After Effects by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within After Effects, select File -> Run Script -> SubmitToDeadline.jsx.

8.3. After Effects Plug-in Guide 333 Deadline User Manual, Release 5.2.49424

Project Configuration

In After Effects, place the comps you want to render in the Render Queue (CTRL+ALT+0). Due to an issue with the Render Queue, if you have more than one comp with the same name, only the settings from the first one will be used (whether they are checked or not). It is important that all comps in the Render Queue have unique names, and our submission script will notify you if they do not. Each comp that is in the Render Queue and that has a check mark next to it will be submitted as separate job to Deadline.

Note that under the comp’s Output Module settings, the Use Comp Frame Number check box must be checked. If this is not done, every frame in the submitted comp will try to write to the same file.

334 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. Note that the Draft/Shotgun options are only available in After Effects CS4 and later. The After Effects specific options are: • Use Frame List From The Comp: Check this option to use the frame range defined for the comp. • Render The First And Last Frames Of The First: Enable this option to render the first and last frames first, followed by the the remaining frames in the comp’s frame list. Note that this ignores the Frame List setting in the submission dialog. • Comps Are Dependent On Previous Comps: If enabled, the job for each comp in the render queue will be dependent on the job for the comp ahead of it. This is useful if a comp in the render queue uses footage rendered by a comp ahead of it. • Submit The Entire Render Queue As One Job With A Single Task: Use this option when the entire render queue needs to be rendered all at once because some queue items are dependent on others or use proxies. Note though that only one machine will be able to work on this job. • Ignore Missing Layer Dependencies: If enabled, Deadline will ignore errors due to missing layer dependencies. • Ignore Missing Effects References: If enabled, Deadline will ignore errors due to missing effect references. • Fail On Warning Messages: If enabled, Deadline will fail the job whenever After Effects prints out a warning message. • Export XML Project File: Enable to export the project file as an XML file for Deadline to render (After Effects CS4 and later). The original project file will be restored after submission. If the current project file is already an XML file, this will do nothing. • Continue On Missing Footage: If enabled, rendering will not stop when missing footage is detected. • Enable Local Rendering: If enabled, Deadline will render the frames locally before copying them over to the final network location.

8.3. After Effects Plug-in Guide 335 Deadline User Manual, Release 5.2.49424

• Multi-Process Rendering: Enable multi-process rendering (for After Effects 8 and later). The following After Effects specific options are only available in After Effects CS4 and later: • Multi-Machine Rendering: This mode submits a special job where each task represents the full frame range. The slaves will all work on the same frame range, but if “Skip existing frames” is enabled for the comps, they will skip frames that other slaves are already rendering. – This mode requires “Skip existing frames” to be enabled for each comp in the Render Queue. – Set the number of tasks to be the number of slaves you want working simultaneously on the render. – This mode ignores the Frame List, Machine Limit, and Frames Per Task settings. – This mode does not support Local Rendering or Output File Checking. • Minimum Output File Size: If an output image’s file size is less than what’s specified, the task is requeued (specify 0 for no limit). • Enable Memory Management: Whether or not to use the memory management options. • Image Cache %: The maximum amount of memory after effects will use to cache frames. • Max Memory %: The maximum amount of memory After Effects can use overall.

Layer Submission

In addition to normal job submission, you also have the option to submit layers in your After Effects project as separate jobs. To do so, first select the layers you want to submit. Then run the submission script, set the submission options mentioned above as usual, and press the Submit Selected Layers button. This will bring up the layers window.

The layer submission options are: • Render With Unselected Layers: Specify the unselected layers that will render with each of the selected layers. • Layer Name Parsing: Allows you to specify how the layer names should be formatted. You can then grab parts of the formatting and stick them in either the output name or the subfolder format box with square brackets. So, for example, if you’re naming your layers something like “ops024_a_diff”,

336 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

you could put “__” in this box. Then in the subfoler box, you could put “[graphic]\[layer]\v001\[pass]”, which would give you “ops024\a\v001\diff” as the subfolder structure. • Render Settings: Which render settings to use. • Output Module: Which output module to use. • Output Format: How the output file name should be formatted. • Output Folder: Where the output files should be rendered to. • Use Subfolders: Enable this to render each layer to its own subfolder. If this is enabled, you must also specify the subfolder format.

8.3.2 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with After Effects, you must setup Mapped Paths so that Deadline can swap out the Project and Output file paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left. You then have two options on how to set up your After Effects project file. The traditional way is to ensure that your After Effects project file is on a network shared location, and that any footage or assets that the project uses is in the same folder or in sub-folders. Then when you submit the job to Deadline, you must make sure that the option to submit the project file with the job is disabled. If you leave it enabled, the project file will be copied to and loaded from the Slave’s local machine, and thus won’t be able to find the footage. The new option in Deadline 5.1 and later is to save your After Effects project as an AEPX file, which is just an XML file. Deadline will automatically detect that an AEPX file has been submitted, and will swap out paths within the file itself (because it is just plain text). This way, you don’t have to worry about setting up the project structure described in the first option. Note though that all the asset paths still need to be network accessible.

8.3.3 Plug-in Configuration

You can configure the After Effects plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the After Effects plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.3. After Effects Plug-in Guide 337 Deadline User Manual, Release 5.2.49424

Font Synchronization

You can configure the After Effects plug-in to synchronize fonts from a central location whenever a new After Effects job is picked up by a Slave. You can have Deadline synchronize the fonts to one or more local directories.

8.3.4 Integrated Submission Script Setup

The following procedure describes how to install the integrated After Effects submission script. This script allows for submitting After Effects render jobs to Deadline directly from within the After Effects editing GUI. The script and the following installation procedure has been tested with with After Effects 7.0 and later.

338 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Copy [Repository]\ClientSetup\AfterEffects\SubmitToDeadline.jsx to [After Effects Install Directory]\Support Files\Scripts • After starting up After Effects, make sure that under Edit -> Preferences -> General, the Allow Scripts to Write Files and Access Network option is enabled. This is necessary so that the submission script can create the necessary files to submit to Deadline.

Custom Sanity Check

A CustomSanityChecks.jsx file can be created alongside the main SubmitAEToDeadline.jsx submission script (in [Repository]\submission\AfterEffects), and will be evaluated if it exists. This script will let you set any of the initial properties in the submission script prior to displaying the submission window. You can also use it to run your own checks and display errors or warnings to the user. Here is a very simple example of what this script could look like: { initDepartment = "The Best Department"; initPriority = 33; initConcurrentTasks = 2;

alert( "You are in a custom sanity check!" ); }

8.3.5 FAQ

Which versions of After Effects are supported by Deadline? After Effects (Professional) 6.0 and later are supported by Deadline, although After Effects 6.x jobs must be submitted though the Deadline Monitor. Why is there no Advanced tab in the integrated submission script for After Effects CS3? Tabs are only supported in CS4 and later, so the Advanced tab and its options are not available in CS3 and earlier.

8.3. After Effects Plug-in Guide 339 Deadline User Manual, Release 5.2.49424

Does network rendering with After Effects require a full After Effects license? In After Effects CS5.0 and earlier, a license is not required. In After Effects CS5.5, a full license is required. In After Effects CS6.0 and later, a license isn’t required if you enable “non-royalty-bearing” mode. Rendering through Deadline seems to take longer than rendering through After Effects locally. After Effects needs to be restarted at the beginning of each frame, and this loading time results in the render taking longer than expected. If you know ahead of time that your frames will render quickly, it is recommended to submit your frames in groups of 5 or 10. This way, After Effects will only load at the beginning of each group of frames, instead of at the beginning of every frame. When rendering a job, only the images from the first task are saved, and subsequent tasks just seem to overwrite those initial image files. In the comp’s Output Module Settings, make sure that the “Use Comp Frame Number” checkbox is checked. Check out step 1 here for complete details. I get the error that the specified comp cannot be found when rendering, but it is in the render queue. This can occur for a number of reasons, most of which are related to the name of the comp. Examples are names with two spaces next to each other, or names with apostrophes in them. Try using only alphanumeric characters and underscores in comp names and output paths to see if that resolves the issue. Why do the comps in the After Effects Render Queue require unique names? Due to an issue with the Render Queue, if you have more than one comp with the same name, only the settings from the first one will be used (whether they are checked or not). It is important that all comps in the Render Queue have unique names, and our submission script will notify you if they do not.

8.3.6 Error Messages And Meanings

This is a collection of known After Effects error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Exception during render: Renderer returned non-zero error code, -1073741819 The error code -1073741819 is equivalent to 0xC0000005, which represents a Memory Access Violation error. So After Effects is either running out of memory, or memory has become corrupt. If you find that your frames are still being rendered, you can modify the After Effects plugin in Deadline to ignore this error. Just add the following function to the AfterEffectsPlugin class in AfterEffects.py, which can be found in [Reposi- tory]/plugins/AfterEffects. def CheckExitCode( self, exitCode ): if exitCode != 0: if exitCode == -1073741819: LogInfo( "Ignoring exit code -1073741819" ) else: FailRender( "Renderer returned non-zero error code %d." % exitCode )

You can find another example of the CheckExitCode function in MayaCmd.py, which can be found in [Reposi- tory]/plugins/MayaCmd. aerender ERROR: No comp was found with the given name.

340 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

This can occur for a number of reasons, most of which are related to the name of the comp. Examples are names with to spaces next to each other, or names with apostrophes in them. Try using only alphanumeric characters and underscores in comp names and output paths to see if that resolves the issue. Exception during render: Renderer returned non-zero error code, 1 aerender ERROR: An existing connection was forcibly closed by the remote host. Unable to receive at line 287 aerender ERROR: After Effects can not render for aerender. Another instance of aerender, or another script, may be running; or, AE may be waiting for response from a modal dialog, or for a render to complete. Try running aerender without the -reuse flag to invoke a separate instance of After Effects. It is unknown what the exact cause of this error is, but it is likely that After Effects is simply crashing or running out of memory. If you are rendering with Concurrent Tasks set to a value greater than 1, try reducing the number and see if that helps. The Knoll Light Factory plugin has also been known to cause this error message when it can’t get a license.

8.4 Anime Studio Plug-in Guide

8.4.1 Job Submission

You can submit Anime Studio Standalone jobs from the Monitor.

8.4. Anime Studio Plug-in Guide 341 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Anime Studio specific options are: • Anime Studio File: The scene file (*.anme) to be rendered. • Output File: The path to where the rendered images will be saved. • Antialiased Edges: Normally, Anime Studio renders your shapes with smoothed edges. Uncheck this box to turn this feature off. • Apply Shape Effects: If this box is unchecked, Anime Studio will skip shape effects like shading, texture fills, and gradients. • Apply Layer Effects: If this box is unchecked, Anime Studio will skip layer effects like layer shadows and layer transparency. • Variable Line Widths (SWF): Exports variable line widths to SWF. • Render At Half Dimensions: Check this box to render a smaller version of your movie. This makes rendering faster if you just want a quick preview, and is useful for making smaller movies for the web. • Render At Half Frame Rate: Check this box to skip every other frame in the animation. This makes rendering faster, and results in smaller movie files. • Reduced Particles: Some particle effects require hundreds of particles to achieve their effect. Check this box to render fewer particles. The effect may not look as good, but will render much faster if all you need is a preview. • Extra-smooth Images: Renders image layers with a higher quality level. Exporting takes longer with this option on. • Use NTSC-safe Colors: Automatically limits colors to be NTSC safe. This is only an approximation - you should still do some testing to make sure your animation looks good on a TV monitor. • Do Not Premultiply Alpha Channel: Useful if you plan to composite your Anime Studio animation with other elements in a video editing program.

8.4.2 Plug-in Configuration

You can configure the Anime Studio plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Anime Studio plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

342 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.4.3 FAQ

Is Anime Studio Standalone supported by Deadline? Yes.

8.4.4 Error Messages And Meanings

This is a collection of known Anime Studio error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.5 Arnold Standalone Plug-in Guide

8.5.1 Job Submission

You can submit Arnold Standalone jobs from the Monitor.

8.5. Arnold Standalone Plug-in Guide 343 Deadline User Manual, Release 5.2.49424

Setup your Arnold Files

Before you can submit an Arnold Standalone job, you must export your scene into .ass files.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Arnold specific options are: • Arnold File: The Arnold file(s) to be rendered. – If you are submitting a sequence of .ass files, select one of the numbered frames in the sequence, and the frame range will automatically be detected. The frames you choose to render should correspond to the numbers in the .ass files. • Threads: The number of threads to use for rendering. • Verbosity: The verbosity level for the render output. • Command Line Args: Specify additional command line arguments you would like to pass to the Arnold renderer. • Additional Plugin Folders: Specify up to three additional plugin folders that Arnold should use when rendering.

8.5.2 Plug-in Configuration

You can configure the Arnold plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Arnold plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

344 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.5.3 FAQ

Is Arnold Standalone supported by Deadline? Yes. Can I submit a sequence of Arnold .ass files that each contain one frame? Yes, this is supported.

8.5.4 Error Messages And Meanings

This is a collection of known Arnold error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.6 Blender Plug-in Guide

8.6.1 Job Submission

You can submit jobs from within Blender by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within Blender 2.5 and later, select Render -> Submit To Deadline. For previous versions of Blender, select Help -> Submit To Deadline.

8.6. Blender Plug-in Guide 345 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Blender specific options are: • Threads: The number of threads to use for rendering. • Build To Force: You can force 32 bit or 64 bit rendering.

8.6.2 Plug-in Configuration

You can configure the Blender plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Blender plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

346 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.6.3 Integrated Submission Script Setup

The following procedures describes how to install the integrated Blender submission script. This script allows for submitting Blender render jobs to Deadline directly from within the Blender editing GUI.

Blender 2.5 and Later

This script and the following installation procedure has been tested with with Blender 2.5 and later. • In Blender, select File -> User Preferences, and then select the Add-Ons tab.

8.6. Blender Plug-in Guide 347 Deadline User Manual, Release 5.2.49424

• Click the Install Add-On button at the bottom, browse to [Repository]\ClientSetup\Blender, and select the Submit25ToDeadline.py script. Then press the Install Add-On button to install it. Note that on Win- dows, you may not be able to browse the UNC repository path, in which case you can just copy [Repos- itory]\ClientSetup\Blender\Submit25ToDeadline.py locally to your machine before pointing the Add-On in- staller to it.

• Then click on the Render filter on the left, and check the box next to the Render: Submit To Deadline add-on.

348 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• After closing the User Preferences window, the Submit To Deadline option should now be in your Render menu.

Pre-2.5 Versions of Blender

This script and the following installation procedure has been tested with with versions of Blender 2.x prior to Blender 2.5. • Copy [Repository]\ClientSetup\Blender\SubmitToDeadline.py to [Blender Install Directory]\.blender\scripts. Note that on Linux and OSX, the .blender folder may be hidden. • The next time you start Blender, a Submit To Deadline option will appear in the Help menu.

8.6.4 FAQ

Which versions of Blender are supported by Deadline? Blender 2.x is currently supported by Deadline.

8.6.5 Error Messages And Meanings

This is a collection of known Blender error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.6. Blender Plug-in Guide 349 Deadline User Manual, Release 5.2.49424

8.7 Cinema 4D Plug-in Guide

8.7.1 Job Submission

You can submit jobs from within Cinema 4D by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within Cinema 4D 12 and later, select Python -> Plugins -> Submit To Deadline. To submit from within previous versions of Cinema 4D, select Plugins -> Submit To Deadline.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Cinema 4D specific options are: • Threads To Use: The number of threads to use for rendering. • Build To Force: For Cinema 4D 10 and later, force rendering in 32 bit or 64 bit. • Export Project Before Submission: If your project is local, or you are rendering in a cross-platform environment, you may find it useful to export your project to a network directory before the job is submitted. • Enable Local Rendering: If enabled, the frames will be rendered locally, and then copied to their final network location.

8.7.2 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with Cinema 4D, you must setup Mapped Paths so that Deadline can swap out the Scene and Output file paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left.

350 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

When submitting the Cinema 4D job for rendering, you should enable the Export Project Before Submission option, and choose a network location when prompted for the export path. This will strip any absolute asset paths and make them relative to the scene file, and will also ensure the option to submit the Cinema 4D scene file with the job is disabled. Note that this export feature is only available in Deadline 5.1 and later. If you are using Deadline 5.0 and earlier, you need to manually save the project to a network location. Then, you must submit the exported scene file from the Submit menu in the Deadline Monitor and you need to specify the output and/or multipass output paths in the submitter. Make sure the option to submit the Cinema 4D scene file with the job is disabled. If you leave it enabled, the scene file will be copied to and loaded from the Slave’s local machine, which will break the relative asset paths.

8.7.3 Plug-in Configuration

You can configure the Cinema 4D plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Cinema 4D plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.7.4 Integrated Submission Script Setup

The following procedure describes how to install the integrated Cinema 4D submission script. This script allows for submitting Cinema 4D render jobs to Deadline directly from within the Cinema 4D editing GUI.

Cinema 4D 12 and Later

This script works with both the Windows and OSX version of Cinema 4D 12 and later. • Copy [Repository]/ClientSetup/Cinema4D/SubmitToDeadline.pyp to [Cinema 4D Install Directory]/plugins. • Restart Cinema 4D, and the Submit To Deadline menu should be available from the Python -> Plugins menu.

8.7. Cinema 4D Plug-in Guide 351 Deadline User Manual, Release 5.2.49424

Cinema 4D 11 and Earlier

Note that this script only works on the Windows version of Cinema 4D, and has been tested with Cinema 4D 9.x, 10.x, and 11.x. • Copy [Repository]/ClientSetup/Cinema4D/SubmitToDeadline.cof to [Cinema 4D Install Directory]/plugins. • Restart Cinema 4D, and the Submit To Deadline menu should be available from the Plugins menu.

8.7.5 FAQ

Which versions of Cinema 4D are supported by Deadline? Cinema 4D 9.x and later are supported. Sometimes when I open the submission dialog in Cinema 4D, the pool list or group list are empty. Simply close the submission dialog and reopen it to repopulate the lists. Does rendering with Cinema 4D with Deadline use up a full Cinema 4D license? Starting with Cinema 4D 12, there are separate command line licenses that are required to render with Deadline. Here is Maxon’s explanation on command line licensing: “Beginning with Release 12, customers need to obtain a Command Line license from us (Maxon), which is served via the License Server and enables command-line rendering. Customers can contact their Maxon sales rep or reseller to get a command line license - by default they’ll be provided with a 25-seat capability.” In versions 11 and earlier, Cinema 4D doesn’t use up a full license, but it needs to be able to access the full license so that it can confirm that the installation is valid. Deadline renders using the Cinema 4D command line renderer, which starts up Cinema 4D in -nogui mode. Here is Maxon’s explanation on how licensing works in -nogui mode: “The licensing for command line differs on whether you are using -nogui or not. You can have an infinite number of C4D’s running in -nogui mode using the same license, but if any start up in gui mode you will have a conflict. To enter the license you will need to start up each client once in Gui mode to enter it, but after that just make sure your command line script always has -nogui, and all your clients can use the same single license. DO NOT use the license server with command line clients either, just enter the serial on each manually instead of using command line otherwise they take away from your working licenses.” Can Deadline render with Cinema 4D’s Net Render Client software? No. It isn’t possible for 3rd party software such as Deadline to control Cinema 4D’s Net Render Client, which is why Deadline uses the command line renderer. I have copied over SubmitToDeadline.pyp file but the integrated submission script does not show up under the python menu. This is likely caused by some failure in the script. Check your repository path to ensure the client is able to read and write to that folder. Using the python console within C4D may provide more specific hints. Also note that the pyp file is only for R12 and later. My frames never seem to finish rendering. When I the slave machine, it doesn’t appear to be doing anything. This can occur if Cinema 4D hasn’t been licensed yet. Try starting Cinema 4D normally on the machine and see if you are prompted for a license. If you are, configure everything and then try rendering on that machine again. Cinema 4D jobs fail with a “Failed To Render Document” error, but there is no other information.” This is only a problem in Cinema 4D 11 and earlier because as of Cinema 4D 12, the render log is printed to stdout. Make sure the Cinema 4D install folder (ie: C:\Program Files\MAXON\CINEMA 4D R11) has full read/write per- missions. When it does, Cinema 4D should write to a file called RENDERLOG.txt in this folder. Deadline will check for the existence of this log when an error occurs and should append it to the render log.

352 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.7.6 Error Messages And Meanings

This is a collection of known Cinema 4D error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.8 Cleaner XL Plug-in Guide

8.8.1 Job Submission

You can submit Cleaner XL jobs from the Monitor.

8.8. Cleaner XL Plug-in Guide 353 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Cleaner XL specific options are: • Input File: Select a movie file or a file from an image sequence. If the file is from an image sequence, you must also specify the start frame, end frame, and frame rate you wish to use. If enabled, Deadline can also automatically generate an IMSQ file from the image sequence chosen which will be submitted to Cleaner XL. • Output Directory: The location where your output files will be saved. • Use Input and Output Profiles: Select this option if you want to specify an input and output profile. These will determine the types of input that can be accepted, and will also determine the output you will receive. • Use Job Template: Select this option if you want to specify a Cleaner XL job template file. This will determine the types of input that can be accepted, as well as the output you will receive. The Audio options are: • When selecting the audio source files, if you have a single audio file to include with the project, specify it for the Single Source or Left Channel. If you have multiple audio tracks, they must be provided in order, starting with the Left Channel. After one file has been specified, the next allowed audio track will be available for selection. • To easily clear all the audio files selected, click the Clear Audio Files button.

8.8.2 Plug-in Configuration

You can configure the Cleaner XL plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Cleaner XL plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

354 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.8.3 FAQ

Which versions of Cleaner XL are supported by Deadline? Deadline supports Cleaner XL 1.5.

8.8.4 Error Messages And Meanings

This is a collection of known Cleaner XL error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.9 Combustion Plug-in Guide

8.9.1 Job Submission

You can submit Combustion jobs from the Monitor.

Workspace Configuration

• In Combustion, when you are ready to submit your workspace, open the Render Queue by selecting File -> Render... (CTRL+R). • Select which items you want to render in the box on the left.

8.9. Combustion Plug-in Guide 355 Deadline User Manual, Release 5.2.49424

• Configure your output settings under the tab Output Settings.

• Under the tab Global Settings, specify an Input Folder (a shared folder where all the footage for you workspace can be found) and an Output Folder (a shared folder where the output will be dumped). Note that Combustion will search any subfolders in you Input Folder for footage as well.

• Close the Render Queue and save your workspace.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Combustion specific options are: • Workspace File: The Combustion workspace file to be rendered. • Output Operator: Select the output operator in the workspace file to render. The render will fail if the operator cannot be found.

356 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Version: The version of Combustion to render with. • Skip Existing Frames: Skip over existing frames during rendering (version 4 and later only). • Use Only One CPU To Render: Limit rendering to one CPU (version 4 and later only).

8.9.2 Plug-in Configuration

You can configure the Combustion plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Combustion plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.9.3 FAQ

Which versions of Combustion are supported by Deadline? Combustion 3 and later are supported by Deadline. All my input footage is spread out over the network, so how do I specify a single Input Folder during submis- sion? When Combustion is given an Input Folder, it will search all subfolders for the required footage until the footage is found. So if you have a root folder that all of your footage branches off from, you should specify that root as the Input Folder. Are there any issues with referencing a file in the global input folder when one or more other files exist with the same name? Yes. When there is a file in the scene that has the same name as a file in another subdirectory, the network renderer will reference the first file with that name that it finds. It ignores the direct path to the correct subdirectory. Can Deadline render multiple outputs?

8.9. Combustion Plug-in Guide 357 Deadline User Manual, Release 5.2.49424

No. Only one output can be enabled in your Combustion workspace. If no outputs are enabled, or multiple outputs are enabled, the workspace cannot be submitted to Deadline. When rendering, I receive a pop up error message. Since rendering is supposed to be silent, should I not be getting error messages like this in the first place?

Make sure that you’re using ShellRenderer.exe as the render executable, (combustion.exe starts up Combustion nor- mally, while ShellRenderer.exe is the command line rendering appliation). You can make the switch in the Plugin Configuration (Tools -> Configure Plugins in the Monitor while in super user mode). Why isn’t path mapping working properly between Windows and Mac? On the Mac, the Combustion workspace file saves network paths in the form share:\\folder\..., so you have to set up your Path Mapping settings in the Repository options accordingly.

8.9.4 Error Messages And Meanings

This is a collection of known Combustion error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.10 Command Script Plug-in Guide

8.10.1 Job Submission

You can submit Command Script jobs from the Monitor. Command Script can execute a series of command lines, which can be configured to do anything from rendering to folder synchronization.

358 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Command Script specific options are: • Commands To Execute: Specify a list of commands to execute by either typing them in, or by loading them from a file. You also have the option to save the current list of commands to a file. To insert file or folder paths into the Commands field, use the Insert File Path or Insert Folder Path buttons. • Startup Directory: The directory where each command will startup. This is optional, and if left blank, the executable’s directory will be used as the startup directory. • Commands Per Task: Number of commands that will be executed for each task.

8.10.2 Manual Submission

Submission File Setup

Three files are required for submission: • the Job Info File • the Plugin Info File • the Command file The Job Info file contains the general job options, which are explained in the Job Submission documentation. The Plugin info file contains one line (this is the directory where each command will startup):

8.10. Command Script Plug-in Guide 359 Deadline User Manual, Release 5.2.49424

StartupDirectory=...

The Command file contains the list of commands to run. There should be one command per line, and no lines should be left blank. If you’re executable path has a space in it, make sure to put quotes around the path. The idea is that one frame in the job represents one command in the Command file. For example, let’s say that your Command file contains the following: "C:\Program Files\Executable1.exe" "C:\Program Files\Executable1.exe"-param1 "C:\Program Files\Executable1.exe" "C:\Program Files\Executable1.exe"-param1-param2 "C:\Program Files\Executable1.exe"

Because there are five commands, the Frames specified in the Job Info File should be set to 0-4. If the Chunksize is set to 1, then a separate task will be created for each command. When a slave dequeues a task, it will run the command that is on the corresponding line number in the Command file. Note that the frame range specified must start at 0. If you wish to run the commands in the order that they appear in the Command file, you can do so by setting the MachineLimit in the Job Info File to 1. Only one machine will render the job at a given time, thus dequeuing each task in order. However, if a task throws an error, the slave will move on to dequeue next task. To submit the job to Deadline, run the following command: DeadlineCommand.exe JobInfoFile PluginInfoFile CommandFile

Manual Submission Example

This example demonstrates how you can render a single frame from a Maya scene with different options, and direct the output to a specific location. To get the submission script, download Example Script For Command Script Plugin from the Miscellaneous Deadline Downloads Page. To run the script, run the following command (you must have Perl installed): Perl SubmitMayaCommandScript.pl "SceneFile.mb" FrameNumber "OutputPath"

8.10.3 FAQ

Can I use executables with spaces in the path? Yes, just add quotes around the executable path.

8.11 Composite/Toxik Plug-in Guide

8.11.1 Job Submission

You can submit jobs from within Composite/Toxik by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

360 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

To submit from within Composite/Toxik, select the version you would like to submit, hit render, and choose the Background option when prompted.

8.11. Composite/Toxik Plug-in Guide 361 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Composite/Toxik specific options are: • Project File: The Composite/Toxik .txproject file. • Composition: Path to the composition that is currently opened. In Toxik 2008, this is a relative path inside the project file. In Toxik 2009 and later, this is actually a path to a file. • Composition Version: The version of the current composition selected. • Users ini file: The path to the user.ini file for this composition. • Version: The version of Composite/Toxik to use. • Build to Force: Force 32 bit or 64 bit rendering.

8.11.2 Plug-in Configuration

You can configure the Composite/Toxik plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Toxik plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.11.3 Integrated Submission Script Setup

The following procedure describes how to setup the integrated Composite/Toxik submission script. This script allows for submitting Composite/Toxik render jobs to Deadline directly from within the Composite/Toxik editing GUI.

362 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Composite 2010 and Later

• Copy [Repository]\clientSetup\Toxik\SubmitToDeadline.py to [Composite/Toxik Install Direc- tory]\resources\scripts\ Setup the Custom Render Action. • In Composite/Toxik under the Edit menu select Edit -> Project Preferences • In the opened dialog select the Render Actions tab • Under Render Actions, right click and select New • Name the new action ‘Deadline’ • Enter the following for the Render Command (all on one line): “” “/SubmitToDeadline.py” -d “” -u “” -c “” -v “” -o “” -s “” -e “” • There are two additional options you can add to this line: – -r “TOXIC_VERSION” (where TOXIC_VERSION is the version of Composite/Toxik, like 2010) – -b “TOXIC_BUILD” (where TOXIC_BUILD is the bitness of Composite/Toxik, which can be set to None, 32bit, or 64bit)

• In the Render window, select ‘Deadline’ as the Action and press Start.

8.11. Composite/Toxik Plug-in Guide 363 Deadline User Manual, Release 5.2.49424

Toxik 2008 and 2009

• Copy [Repository]/clientSetup/Toxik/SubmitToDeadline.py to [Toxik Install Directory]/resources/bgTasks/ Setup the Custom Publish Executable. In Toxik under the Edit menu select Edit -> Preferences -> Project In the opened dialog select the Publish Tab Under the list publish modes, right click and select new Name the new mode Deadline Enter the following for the Publish Executable (all on one line): • Toxik 2008: “” “/SubmitToDeadline.py” -d “” -u “” -c “” -v “” -o “” -s “” -e “” • Toxik 2009: “” “/SubmitToDeadline.py” -d “” -u “” -c “” -v “” -o “” -s “” -e “” There are two additional options you can add to this line: • -r “TOXIC_VERSION” (where TOXIC_VERSION is the version of Toxik, like 2009) • -b “TOXIC_BUILD” (where TOXIC_BUILD is the bitness of Toxik, which can be set to None, 32bit, or 64bit) • Set Deadline as the publish mode to use – In the same dialog as step 2, move over to the composition tab – Choose Deadline as the Publish Mode

364 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.11.4 FAQ

Which versions of Composite/Toxik are supported by Deadline? Composite/Toxik 2008 and later are supported.

8.11.5 Error Messages And Meanings

This is a collection of known Composite/Toxik error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.12 DJV Plug-in Guide

8.12.1 Job Submission

You can submit DJV jobs from the Monitor. You can use the Submit menu, or you can right-click on a job and select Scripts -> Submit DJV Quicktime Job To Deadline to automatically populate some fields in the DJV submitter based on the job’s output.

8.12. DJV Plug-in Guide 365 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. You can get more information about the DJV specific options by hovering your mouse over the label for each setting. The Settings buttons can be used to quickly save and load presets, or reset the settings back to their defaults.

8.12.2 Plug-in Configuration

You can configure the DJV plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the DJV plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

366 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.12.3 FAQ

Is DJV supported by Deadline? Yes.

8.12.4 Error Messages And Meanings

This is a collection of known DJV error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.13 Draft Plug-in Guide

8.13.1 Job Submission

There are many ways to submit Draft jobs to Deadline. As always, you can simply submit a Draft job from within the Deadline Monitor from the Submit menu. In addition, we’ve also added a right-click job script to the Monitor, which will allow you to submit a Draft job based on an existing job. This will pull over output information from the original job, and fill in Draft parameters automatically where possible.

On top of the Monitor scripts, you can also get set up to submit Draft jobs directly from Shotgun. This will again pull over as much information as possible, this time from the Shotgun database, in order to pre-fill several of the Draft parameter fields. See the Integrated Submission Script Setup section below for more details on this. We’ve also added a Draft section to all of our other submitters. Submitting a Draft job from any of these uses our Draft Event Plug-in to submit a Draft job based on the job currently being submitted (this is similar in concept to the right-click job script described above). The Draft job will get automatically created upon completion of the original job.

8.13.2 Submission Options

The general Deadline options are available in the Draft submitters, and are explained in the Job Submission documen- tation. Draft-specific options are explained below. It should be noted, however, that given the nature of Draft scripts,

8.13. Draft Plug-in Guide 367 Deadline User Manual, Release 5.2.49424 not all of these parameters will be used by all scripts. They can even feasibly be used for different purposes than listed here. • Draft Script: This is the Draft script (or Template) that you want to run. • Input File: Indicates where the input file(s) for the Draft Script can be found. What kind of file this is will depend entirely on the Draft Script itself. Passed to the Draft script as ‘inFile’. • Output File: Indicates where the output file(s) of the Draft Script will be placed. As above, the type of file this is will depend entirely on the selected Draft Script. Passed to the Draft script as ‘outFile’. • Frame List: The list of Frames that the Draft Script should work with. Passed to the Draft Script as ‘frameList’, ‘firstFrame’, and ‘lastFrame’. • User: The name of the user that is submitting the job. Typically used by the Draft script for frame annotations. Passed to the Draft script as ‘username’. • Entity: The name of the entity being submitted. Typically used by the Draft script for frame annotations. Passed to the Draft script as ‘entity’. • Version: The version of the entity being submitted. Typically used by the Draft script for frame annotations. Passed to the Draft script as ‘version’. • Additional Args: Any additional command line arguments that you wish to pass to the Draft script should be listed here. Appended to arguments listed above.

8.13.3 Plug-in Configuration

Given that Draft is currently shipping alongside Deadline, no configuration is needed on the plug-in level.

8.13.4 Integrated Submission Script Setup

All of our integrated submission scripts have been updated to have a Draft section, in order to submit dependent Draft jobs. In addition to this, we also have created scripts to allow you to submit a Draft job directly from Shotgun.

Shotgun Action Menu Item

The best way to install the Draft Submission menu item in Shotgun is to use the automated setup script included in the Deadline Monitor. To access this, select Scripts -> Install Integration Submission Scripts from the Monitor’s menu. From there, click the ‘Install’ button next to the Draft entry. It should be noted that this functionality is currently only available on the Windows version, and requires administrator privileges to run successfully. It should also be noted that while this script will create the ‘Submit Draft Job’ entry in Shotgun for everyone to see, this must still be done on each machine that will be submitting Draft jobs.

8.14 FFmpeg Plug-in Guide

8.14.1 Job Submission

You can submit FFmpeg jobs from the Monitor.

368 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The FFmpeg specific options are: • Input File: The input file. • Input Arguments: Additional command line arguments for the input file. • Output File: The output file. • Output Arguments: Additional command line arguments for the output file. • Additional Arguments: Additional general command line arguments. • Additional Input Files: Specify up to 9 additional input files. You can give each file their own arguments, or use the same arguments as the main input file.

8.14. FFmpeg Plug-in Guide 369 Deadline User Manual, Release 5.2.49424

• FFmpeg Preset Files: Specify preset files for video, audio, or subtitle.

8.14.2 Plug-in Configuration

You can configure the FFmpeg plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the FFmpeg plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.14.3 FAQ

Is FFmpeg supported by Deadline? Yes.

8.14.4 Error Messages And Meanings

This is a collection of known FFmpeg error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.15 Frame Fixer Plug-in Guide

8.15.1 Job Submission

You can submit Frame Fixer jobs from the Monitor.

370 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Frame Fixer specific options are: • Input Image Sequence: The sequence of image files to check for frames that need to be fixed. • Automatically Determine The Frames To Fix: Select this option to have Frame Fixer automatically determine which frames in the specified sequence need to be fixed. • Manually Specify The Frames: Select this option to specify the frames that Frame Fixer should fix. • Frame List: The list of frames to render, only available if Manually Specify The Frames is selected. Advanced options are: • Threads: The number of threads to use for rendering. • Interpolation Method: The interpolation method to use. • Vector Detail: Controls the density of the optical flow field, or how many positions to track across the neighbor- ing frames. • Smoothing Iterations: Controls how many smoothing passes are run over the flow field’s motion vectors. • Global Smoothness: Controls the amount of smoothing applied to larger areas of movement in the image.

8.15. Frame Fixer Plug-in Guide 371 Deadline User Manual, Release 5.2.49424

• Error Threshold: Differences in pixel values below this threshold are ignored to prevent noise or grain in the images from being interpreted as motion. • Local Smoothness: Controls how the smoothing affects the finer details. • Block Size: Controls how the optical flow algorithm finds features in the image. • Extreme Filtering: Turn on Extreme Filtering for a much sharper result, but this will take a lot longer to compute. • Correct Luminance: Turn on this option to equalize the brightness of the two neighboring images before calcu- lating the optical flow field. • Use Alpha Mattes: Whether to use the alpha channel of the images to help lock on to the edges of objects when calculating the optical flow field.

8.15.2 Plug-in Configuration

You can configure the Frame Fixer plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Frame Fixer plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.15.3 FAQ

Is Frame Fixer supported by Deadline? Yes.

8.15.4 Error Messages And Meanings

This is a collection of known Frame Fixer error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline

372 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Support and let us know. Currently, no error messages have been reported for this plug-in.

8.16 fryrender Plug-in Guide

8.16.1 Job Submission

You can submit fryrender jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The fryrender specific options are:

8.16. fryrender Plug-in Guide 373 Deadline User Manual, Release 5.2.49424

• fryrender File: The fryrender file to be rendered. • Build To Force: Force 32 bit or 64 bit rendering. • Threads: The number of threads to use during rendering. Specify 0 to use the default setting. • Cooperative Rendering: If enabled, multiple jobs will be submitted to Deadline, each with a different seed. You can then use fryrender to combine the resulting output after the rendering has completed. • Output DSI File: Optionally configure the output path for the DSI file. • Output Image File: Optionally configure the output path for the image file. • Additional Arguments: Additional command line arguments to pass to the renderer.

8.16.2 Plug-in Configuration

You can configure the fryrender plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the fryrender plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.16.3 FAQ

Is fryrender supported by Deadline? Yes. Is Co-op Rendering supported? Yes.

374 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.16.4 Error Messages And Meanings

This is a collection of known fryrender error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.17 Fusion Plug-in Guide

8.17.1 Job Submission

You can submit jobs from within Fusion by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within Fusion, select Script -> SubmitToDeadline or SubmitToDeadlineIUP (if you have the IUP script installed).

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Fusion options are: • Render First And Last Frames First: The first and last frame of the flow/comp will be rendered first, followed by the remaining frames in the sequence. Note that the Frame List above is ignored if this box is checked (the frame list is pulled from the flow/comp itself). • Build: Force 32 or 64 bit rendering. • Proxy: The proxy level to use.

8.17. Fusion Plug-in Guide 375 Deadline User Manual, Release 5.2.49424

• High Quality Mode: Whether or not to render with high quality. • Check Saver Output: If checked, Deadline will check all savers to ensure they have saved their image file. • Command Line Mode: Render using separate command line calls instead of keeping the scene loaded in memory between tasks. Using this feature disables the High Quality, Proxy, and Check Saver Output options. This uses the FusionCmd plug-in, instead of the Fusion one.

8.17.2 Plug-in Configuration

You can configure the Fusion and FusionCmd plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Fusion plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.17.3 Integrated Submission Script Setup

The following procedure describes how to install the integrated Fusion submission script. This script allows for submitting Fusion render jobs to Deadline directly from within the Fusion editing GUI.

Fusion 5 or Later

To install the new IUP submitter: • Copy [Repository]/ClientSetup/Fusion/SubmitToDeadlineIUP.eyeonscript to [Fusion Install Direc- tory]/Scripts/Comp • Restart Fusion to find the SubmitToDeadlineIUP option in the Script menu. To install the original submitter: • Copy [Repository]/ClientSetup/Fusion/SubmitToDeadline.eyeonscript to [Fusion Install Direc- tory]/Scripts/Comp • Restart Fusion to find the SubmitToDeadline option in the Script menu.

376 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Digital Fusion 4

• Copy [Repository]/ClientSetup/Fusion/SubmitToDeadline.dfscript to [DF4 Install Directory]/Scripts/Flow • Restart Digital Fusion to find the SubmitToDeadline option in the Script menu.

Custom Sanity Check Setup

In the [Repository]/submission/Fusion5 folder, you can create a file called CustomSanityChecks.eyeonscript. This script will be called by the main Fusion submission script before submission, and can be used to perform sanity checks. Within this script file, you must define this function, which is called by the main script: function CustomDeadlineSanityChecks(comp) local message = ""

...

return message end

All your checks should be placed within this function. This function should return a message that contains the sanity check warnings. If an empty message is returned, then it is assumed the sanity check was a success and no warning is displayed to the user. Here is a simple example that checks if any CineFusion tools are being used in the comp file: function CustomDeadlineSanityChecks(comp) local message = ""

------RULE: Check to make sure Cinefusion is disabled ------cinefusionAttrs = fusion:GetRegAttrs("CineFusion") if not (cinefusionAttrs == nil) then cinefusion_regID = cinefusionAttrs.REGS_ID local i = nil for i, v in comp:GetToolList() do if (v:GetID() == cinefusion_regID) and (v:GetAttrs().TOOLB_PassThrough == false) then message = message .. "CineFusion '" .. v:GetAttrs().TOOLS_Name .. "' should be disabled\n" end end end

return message end

Note that this documentation is for Fusion 5 and later. If you want to set this up for Digital Fusion, just use the Fusion4 submission folder instead of the Fusion5 one, and call your script CustomSanityChecks.dfscript.

8.17.4 FAQ

Which versions of Fusion are supported by Deadline? Fusion 4 and later are supported. What’s the difference between the Fusion and FusionCmd plugins? The Fusion plugin starts the Fusion Render Node in server mode and uses eyeonscript to communicate with the Fusion renderer. Fusion and the comp remain loaded in memory between tasks to reduce overhead. This is usually the preferred way of rendering with Fusion.

8.17. Fusion Plug-in Guide 377 Deadline User Manual, Release 5.2.49424

The FusionCmd plugin renders with Fusion by executing command lines, and can be used by selecting the Command Line mode option in the Fusion submitter. Because Fusion needs to be launched for each task, there is some additional overhead when using this plugin. In addition, the Proxy, High Quality, and Saver Output Checking features are not supported in this mode. However, this mode tends to print out better debugging information when there are problems (especially when the Fusion complains that it can’t load the comp), so we recommend using it to help figure out problems that may be occurring when using the Fusion plugin. Can I use both workstation and render node licenses to render jobs in Deadline? You can use workstation licenses to render, you just need to do a little tweaking to get this to work nicely. In the Plugin Configuration settings, you need to specify two paths for the render executable option. The first path will be the render node path, and the second will be the actual Fusion executable path. You then have to make sure that the render node is not installed on your workstations. Because you have specified two paths, Deadline will only use the second path if the first one doesn’t exist, which is why the render nodes can’t be installed on your workstations. Why is it not possible to have to 2 instances of Fusion running? With Fusion there is only one tcp/ip port to which dfscript/eyeonscript (the scripting language used to run Fusion renders on a slave computer) can connect. If Fusion is open on a slave computer then the port will be in use and the Fusion Render Node will have to wait for the port to become available before rendering of Fusion jobs on that slave can begin. Why do I get lots of Fusion Render Node icons showing up which go away when I move the mouse over them? These are ghosts of the Fusion Render Node processes which Deadline was not able to shut down properly. There are two ways that Deadline can use to shut down the Fusion Render Node, either by running a DFScript which tells the Fusion Render Node to exit, or by sending a Windows message to the application telling it to close. Deadline attempts to do the second option, and generally succeeds at it, but occasionally there are some kinds of flows/comps which tend to prevent the Fusion Render Node from shutting down properly. In these cases, Deadline proceeds to terminate the Fusion Render Node process, and because of that the icon doesn’t get cleaned up properly. Fusion alone renders fine, but with Deadline, the slaves are failing on the last frame. This is usally accompanied by this error message: INFO: Checking file \\path\to\filename####.ext INFO: Saver “SaverName” did not produce output file. INFO: Expected file “\\path\to\filename####.ext” to exist. The issue likely has to do with the processing of fields as opposed to full frames. When processing your output as fields, the frames are rendered in two “halves” (for example, frame 1 would be rendered as 1.0 and 1.5). This error often occurs when the Global Timeline is not set to include the second half of the final frame. Simply adding a “.5” to the Global End Time should resolve this issue. For example, let us assume that you are processing fields and your output range is 0 - 100. If the Global Timeline is set to be 0.0 - 100.0, Fusion will render everything, but Deadline will fail on the last frame. If the Global Timeline is set to be 0.0 - 100.5, Deadline will render everything just fine. Is there a way to increase Deadline’s efficiency when rendering Fusion frames that only take a few seconds to complete? Rendering these frames in groups (groups of 5 for example) tends to reduce the job’s overall rendering time. The group size can be set in the Fusion submission dialog using the Task Group Size option. Does Fusion cache data between frames on the network, in the same way it does when rendering sequences locally? Deadline renders each block of frames using the dfscript flow.render function. The Fusion Render Node is kept running between each block rendered, so when Fusion caches static results, it can be used by the next block of frames to be rendered on the same machine.

378 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Fusion seems to be taking a long time to start up when rendering. What can I do to fix this? If you are running Fusion off a remote share, this can occur when there is a large number of files in the Autosave folder. If this is the case, deleting the files in the Autosave folder should fix the problem. Can I use relative paths in my Fusion comp when rendering with Deadline? If your comp is on a network location, and everything is relative to that network path, you can use relative paths if you choose the option to not submit the comp file with the job. In this case, the slaves will load the comp directly over the network, and there shouldn’t be any problems with the relative paths. Just make sure that your render nodes resolve the paths the same way your workstation does.

8.17.5 Error Messages And Meanings

This is a collection of known Fusion error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Exception during render: Failed to load the flow “[flowname].flw” in startjob.eyeonscript”? This error usually occurs because the render node is missing a plug-in that is referenced by the flow in question. Often this is because there is a plug-in installed on the machine from which the job was submitted that is not in the Fusion Render Node plug-in directory on the slave machine. It is important to remember that the Fusion Render Node has a different plug-in store than Fusion – even on the same machine – thus one should ensure that the needed plug-ins are copied/installed in both locations. Exception during render: The fusion renderer reported that the render failed. Scroll down to the bottom of the log below for more details. This can occur for a number of reasons, but often Fusion will print out the cause for the error. In the error log window, scroll to the end of the Deadline Slave Log capture which is near the bottom of the error message window, and there will be a part which looks something like the following message. This particular message indicates that a font was missing on the machine. INFO: Render started at Wed 8:17PM (Range: 198 to 198) INFO: INFO: Comments: Could not find font “SwitzerlandCondensed” INFO: INFO: Saver 1 failed at time 198 INFO: INFO: Render failed at Wed 8:18PM! Last frame rendered: (none)! INFO: INFO: Render failed We’ve usually found that the problem behind this error was a plug-in that was installed for Fusion, but not for the Fusion Render Node. Try updating your Fusion Render Node plug-ins to match your Fusion plug-ins exactly, and check whether the error still occurs. Exception during render: DFScript failed to make a connection in startjob.dfscript - check that DFScript is set to no login required? In order to connect to the Fusion Render Node and communicate with it, Deadline uses the dfscript/eyeonscript, the scripting language provided for Fusion. The script connects to the Fusion Render Node via a socket connection, which by default requires a login username and password to connect.

8.17. Fusion Plug-in Guide 379 Deadline User Manual, Release 5.2.49424

In order for Deadline to be able to render using a given Fusion Render Node, you must change its settings so that it no longer requires the username and password. This is done by running the Fusion Render Node, right clicking on the icon it creates, and choosing preferences. From there, pick the Script option, and you will see radio buttons, one of which says ‘No login required’. Make sure that that is the option selected, then click Save to save the preferences, and exit Fusion Render Node.

8.18 Gelato Plug-in Guide

8.18.1 Job Submission

You can submit Gelato jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Gelato specific options are: • PYG Files: Select the PYG file(s) that you would like to render using the browse button. If a sequence of PYG files exist in the same folder, Deadline will automatically collect the range of PYG files and will set the Frames field accordingly. Deadline will also display what the output filename is. • Output File: Shows the output filename (read-only).

380 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Use Image View Buffer: If this is enabled a window will open up showing the image as it renders.

8.18.2 Plug-in Configuration

You can configure the Gelato plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Gelato plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.18.3 FAQ

Is Gelato supported by Deadline? Yes.

8.18.4 Error Messages And Meanings

This is a collection of known Gelato error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.18. Gelato Plug-in Guide 381 Deadline User Manual, Release 5.2.49424

8.19 Generation Plug-in Guide

8.19.1 Job Submission

Generation jobs are essentially the same as Fusion jobs. Submission is done using the same Fusion submitter that is used by the Monitor, and rendering is done using the Fusion Plug-in. However, you can conveniently submit these jobs from within Generation.

In Generation, select the thumb(s) you want to submit, and then right-click and select Submit. If this does not bring up the submission window, check out the Integrated Submission Script Setup documentation further down.

382 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Fusion options are: • Use Frame List In Comp: Uses the frame list defined in the comp files instead of the Frame List setting. If you are submitting more than one comp from Generation, you should leave this option enabled unless you want the Frame List setting to be used for each comp. • Proxy: The proxy level to use. • High Quality Mode: Whether or not to render with high quality. • Check Output: If checked, Deadline will check all savers to ensure they have saved their image file. • Version: The version of Fusion to render with. • Build: The build to force.

8.19.2 Integrated Submission Script Setup

The following procedure describes how to install the integrated Generation submission script. This script allows for submitting Generation render jobs to Deadline directly from within the Generation editing GUI. This script will only work with Generation 2 and later. • Copy DeadlineFarmOpenManager.lua and DeadlineFarmSubmit.lua from [Repository]/ClientSetup/Generation/ to [Generation Install Folder]/Scripts/Generation • In the Generation root install folder, you’ll need to edit your Custom.cfg file. If you currently do not have a Custom.cfg file, create an empty one. Open your Custom.cfg file and add these two lines:

8.19. Generation Plug-in Guide 383 Deadline User Manual, Release 5.2.49424

SCRIPT_FARMOPENMANAGER="scripts\generation\DeadlineFarmOpenManager.lua" SCRIPT_FARMSUBMIT="scripts\generation\DeadlineFarmSubmit.lua"

• Save the file. The next time you start up Generation, these scripts will be used when you select the Submit option for the selected thumbs.

8.19.3 FAQ

Which versions of Generation are supported by Deadline? Generation 2 and later are supported.

8.20 Houdini Plug-in Guide

8.20.1 Job Submission

You can submit jobs from within Houdini by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within Houdini, select Render -> Submit To Deadline.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Houdini specific options are:

384 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Houdini File: The Houdini file to be rendered. Note that anything within the hip file that points to an outside file absolutely must have a an absolute address on a shared network location, or the render nodes won’t be able to find the external references. • Output File: The output filename. • Render Node: You must manually enter a renderer (output driver) to use. Note that the full node path must be specified, so if your output driver is ‘mantra1’, it’s likely that the full node path would be ‘/out/mantra1’. • Version: The version of Houdini to use. • Build to Force: Force 32 or 64 bit rendering. • Override Export IFD: Enable this option to export IFD files from the Houdini scene file. Specify the path to the output IFD files here. • Submit Dependent Mantra Standalone Job: Enable this option to submit a dependent Mantra standalone job that will render the resulting IFD files. • Mantra Threads: The number of threads to use for the Mantra stanadlone job.

8.20.2 Plug-in Configuration

You can configure the Houdini plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Houdini plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.20.3 Integrated Submission Script Setup

The following procedure describes how to setup the integrated Houdini submission script for Deadline. This script has been tested with Houdini 9 and later.

8.20. Houdini Plug-in Guide 385 Deadline User Manual, Release 5.2.49424

• Copy the client setup script to the Houdini install dir – If the folder [Houdini Install Directory]\houdini\scripts\deadline\ doesn’t exist, create it. – Copy [Repository]\ClientSetup\Houdini\SubmitToDeadline.py to [Houdini Install Direc- tory]\houdini\scripts\deadline\SubmitToDeadline.py • Add a menu item to execute the script – Open the file [Houdini Install Directory]/houdini/MainMenuCommon in a text editor. – Add the following in between the and tags, and make sure it is added after the closing tag. render_menu $HFS/houdini/scripts/deadline/SubmitToDeadline.py For example, this is what the last few lines of your MainMenuCommon file might look like:

render_menu $HFS/houdini/scripts/deadline/SubmitToDeadline.py

8.20.4 FAQ

Which versions of Houdini are supported by Deadline? Houdini 9 and later are supported. To render with Houdini 7 or 8, use the Mantra Plug-in. Which Houdini license(s) are required to render with Deadline? Deadline uses Hython to render, which uses hbatch licenses. If those are not available, it will try to use a Master License instead.

8.20.5 Error Messages And Meanings

This is a collection of known Houdini error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

386 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.21 Indigo Plug-in Guide

8.21.1 Job Submission

You can submit Indigo jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Indigo specific options are: • Input Xml File(s): Specify the Indogo xml file you want to render. This can be a single file, or part of a sequence. • Output Folder: The folder where the output files will be saved. • Output Prefix: The prefix portion of the output filename. • Frame List: The list of frames to render if rendering an animation. • Render Animation: Should be checked if you are rendering a sequence of Indigo xml files. • Halt Time: The render time, in minutes.

8.21. Indigo Plug-in Guide 387 Deadline User Manual, Release 5.2.49424

• Threads: The number of threads to use for rendering.

8.21.2 Plug-in Configuration

You can configure the Indigo plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Indigo plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.21.3 FAQ

Is Indigo supported by Deadline? Yes. Can I split a single frame across multiple machines? No, this functionality is not supported yet.

8.21.4 Error Messages And Meanings

This is a collection of known Indigo error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

388 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.22 Lightwave Plug-in Guide

8.22.1 Job Submission

You can submit jobs from within Lightwave by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

To submit from within Lightwave, select the Render Tab and click the SubmitToDeadline button on the left.

8.22. Lightwave Plug-in Guide 389 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Lightwave specific options are: • Content Directory: The Lightwave Content directory. Refer to your Lightwave documentation for more infor- mation. • Config Directory: The Lightwave Config directory. Refer to your Lightwave documentation for more informa- tion. • Force Build: For Lightwave 9 and later, force rendering in 32 bit or 64 bit. • Use FPrime Renderer: If you want to use the FPrime renderer instead of the normal Lightwave renderer. • Use ScreamerNet Rendering: ScreamerNet rendering keeps the Lightwave scene loaded in memory between frames, which reduces overhead time when rendering. This has been tested with Lightwave 8 and later. Notes: • At the moment, there is no support for rendering animation (movie) files. Any animation options will be ignored, and an RGB output and/or Alpha output must be specified in order to submit to Deadline. • In the Scene file, some versions of Lightwave use a number to specify the output file type and some use the actual file type extension (.tif, .tga, etc). In the versions that use the actual file type extension, individual rendered images can be viewed from the Deadline Monitor task list by right-clicking on them. • For information on how to properly set up your network for Lightwave rendering, see the ScreamerNet section of your Lightwave documentation. When Lightwave is properly configured for ScreamerNet rendering, it will then render properly through Deadline.

8.22.2 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with Lightwave, you must setup Mapped Paths so that Deadline can swap out file paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by

390 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424 selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left.

8.22.3 Plug-in Configuration

You can configure the Lightwave plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Lightwave plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.22.4 Integrated Submission Script Setup

This section describes how to install the integrated render job submission script for Lightwave. This script allows for submitting Lightwave render jobs to Deadline directly from within the Lightwave editing GUI. Note that on Mac OSX, this script is only supported by the Universal Binary versions of Lightwave.

Lightwave 8 and Later

• Click the Utilities tab. Find the Plugins section on the right and click the Add Plug-ins button. Select the SubmitToDeadline.ls file found in [Repository]\clientSetup\Lightwave.

8.22. Lightwave Plug-in Guide 391 Deadline User Manual, Release 5.2.49424

• Click the Edit menu in the top-left corner and select the Edit Menu Layout... option.

• In the Command list on the left, expand the Plug-ins section in Lightwave 8 or the Additional section in Light- wave 9, and find the SubmitToDeadline plugin. Drag and drop it into the Menus list in the Render section. Click Done.

392 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Click the Render tab. There should be a SubmitToDeadline button on the right. If there is not, check to make sure you placed the SubmitToDeadline plugin in the correct section.

8.22. Lightwave Plug-in Guide 393 Deadline User Manual, Release 5.2.49424

Lightwave 7.5

• Click the Layout menu button on the left side.

• Go to the Plugins section and select the Add Plug-ins option.

• Select the SubmitToDeadline.ls file found in [Repository]\clientSetup\Lightwave.

394 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Click the Layout menu button again. Go to the Interface section and select the Edit Menu Layout... option.

• In the Command list on the left, expand the Plug-ins section and find the SubmitToDeadline plugin. Expand the Rendering option on the right. Drag and drop the SubmitToDeadline plugin into the Menus list in the Rendering section. Click Done.

8.22. Lightwave Plug-in Guide 395 Deadline User Manual, Release 5.2.49424

• Click the Rendering menu button on the left side. There should be a SubmitToDeadline option. If there is not, check to make sure you placed the SubmitToDeadline plugin in the correct section.

Our thanks goes to Paul Hudson, Larry Thomas and Brian Openshaw for supplying details on adding Lightwave 7.5 support to Deadline.

396 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.22.5 FAQ

Which version of Lightwave are supported? Lightwave versions 7.5 and later are supported by Deadline. On Mac OSX, both the PPC and Universal Binary versions work with Deadline. However, the integrated Lightwave submission script only works with the Universal Binary version. Lightwave 10 integrated submitter crashes with Deadline 5.0 and older on Mac OSX. Due to an API change in LightWave, previous integrated submission scripts will not work under LightWave 10 on OSX. This is fixed in Deadline 5.1. Does Deadline support the FPrime renderer? Yes. FPrime has its own net rendering application called wsn.exe, which can be configured in the Lightwave plugin configuration. When you submit your Lightwave job, just make sure to have the Use FPrime Renderer option checked. When rendering with FPrime, I get an error that it can’t create a temporary config directory. This can occur when the job is using a shared Config folder on the network. FPrime tries to create a temporary config directory in this shared folder, and this can fail if many slaves are trying to access that Config folder at the same time. To avoid this problem, we suggest enabling the FPrime Use Local Config option in the Lightwave Plugin Configu- ration, which can be accessed from the Monitor while in Super User mode by selecting Tools -> Configure Plugins. When this option is enabled, Deadline will copy the contents of the shared Config folder to a local folder, and this is the Config folder that FPrime will use. What does the Use ScreamerNet Rendering option in the submission dialog do? When using ScreamerNet rendering, the Lightwave scene is kept loaded in memory between each frame for a job, which greatly reduces the overhead of having to load the scene at the beginning of each frame. This has been tested with Lightwave 8 and later, but is known to cause problems with Lightwave 7.5. Does Deadline work if one renames the Lightwave configuration files in the configuration directory? Currently, Deadline assumes that you have not renamed the Lightwave configuration files in the Lightwave configura- tion directory.

8.22.6 Error Messages And Meanings

This is a collection of known Lightwave error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.23 LuxRender Plug-in Guide

8.23.1 Job Submission

You can submit LuxRender jobs from the Monitor.

8.23. LuxRender Plug-in Guide 397 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The LuxRender specific options are: • LXS File: The file to render. • Threads: The number of threads to use. Specify 0 to use the same number of threads as there are CPUs.

8.23.2 Plug-in Configuration

You can configure the LuxRender plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the LuxRender plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

398 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.23.3 FAQ

Is LuxRender supported by Deadline? Yes.

8.23.4 Error Messages And Meanings

This is a collection of known LuxRender error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.24 Mantra Standalone Plug-in Guide

8.24.1 Job Submission

You can submit Mantra Standalone jobs from the Monitor.

8.24. Mantra Standalone Plug-in Guide 399 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Mantra specific options are: • IFD File: Specify the Mantra IFD file(s) to render. • Output File: The output file path. • Version: The Mantra version to render with. • Threads: The number of threads to use for rendering. • Additional Arguments: Additional command line arguments to pass to the renderer.

8.24.2 Plug-in Configuration

You can configure the Mantra plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Mantra plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

400 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.24.3 FAQ

Which versions of Mantra are supported by Deadline? Mantra for Houdini 7 and later supported by Deadline.

8.24.4 Error Messages And Meanings

This is a collection of known Mantra error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.25 Maxwell Plug-in Guide

8.25.1 Job Submission

You can submit Maxwell jobs from the Monitor.

8.25. Maxwell Plug-in Guide 401 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Maxwell specific options are: • Maxwell File(s): The Maxwell files to be rendered. Can be a single file, or a sequence of files. • Version: The version of Maxwell to render with. • Verbosity: Set the amount of information that Maxwell should output while rendering. • Single Frame Job: This should be checked if you’re submitting a single Maxwell file only. • Build To Force: Force 32 bit or 64 bit rendering. • Render Threads: The number of threads to use during rendering. Specify 0 to use the default setting. • Cooperative Rendering: If enabled, multiple jobs will be submitted to Deadline, each with a different seed. You can then use Maxwell to combine the resulting output after the rendering has completed. • Output MXI File: Optionally configure the output path for the MXI file which can be used to resume the render later. Note that this is required for co-op rendering though. • Resume Rendering From MXI File: If enabled, Maxwell will use the specified MXI file to resume the render if it exists. If you suspend the job in Deadline, it will pick up from where it left off when it resumes. • Output Image File: Optionally configure the output path for the image file. • Override Time: Enable to override the Time setting in the Maxwell file. • Override Sampling: Enable to override the Sampling setting in the Maxwell file. If the Adjust For Cooperative Rendering option is enabled, the sampling level given to each slave will be reduced accordingly to ensure that final merged sampling level will match the requested one. • Enable Local Rendering: If enabled, Deadline will save the output locally and then copy it to the final network location.

402 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Additional Arguments: Additional command line arguments to pass to the renderer.

Resuming a Render

When specifying an MXI file, you now have the option to have Maxwell use it to resume a render job if that MXI file already exists. This means that if you suspend a Maxwell job from the Monitor mid-render, it will resume from where it left off when you resume the job.

8.25.2 Plug-in Configuration

You can configure the Maxwell plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Maxwell plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.25.3 FAQ

Which version of Maxwell is supported by Deadline? Versions 1 and later are supported. Is Co-op Rendering supported? Yes. Can I resume from a previous Maxwell render? If you have the Resume Rendering From MXI File option enabled when submitting the job, Maxwell will use the specified MXI file to resume the render if it exists. If you suspend the job in Deadline, it will pick up from where it left off when it resumes. My frames seem to be rendering forever. Why is this?

8.25. Maxwell Plug-in Guide 403 Deadline User Manual, Release 5.2.49424

It is likely that an error occurred during rendering. Prior to Maxwell 2, the Maxwell command line renderer doesn’t exit when an error occurs, so Deadline cannot detect that something has gone wrong. A common issue is that Deadline does not recognize the Maxwell environment variables. To fix this, restart the slave machine before trying to render again. If the problem persists, try rendering the scene locally from a command prompt to see if any problems occur.

8.25.4 Error Messages And Meanings

This is a collection of known Maxwell error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.26 Maya Plug-in Guide

8.26.1 Job Submission

You can submit jobs from within Maya by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

To submit from within Maya, select the Thinkbox shelf and press the button there.

404 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Maya specific options are: • Camera: Select the camera to render with. Leaving this blank will force Deadline to render using the default camera settings (including multiple camera outputs). • Project Path: The Maya project folder (this should be a shared folder on the network). • Output Path: The folder where your output will be dumped (this should be a shared folder on the network). • Maya Build: For Maya 8 and later, force 32 bit or 64 bit rendering. • Use MayaBatch Plugin: This uses our new MayaBatch plugin that keeps the scene loaded in memory between frames, thus reducing the overhead of rendering the job. This plugin is no longer considered experimental. • Ignore Error Code 211: This allows a Maya task to finish successfully even if the Maya command line renderer returns the non-zero error code 211 (not available when using the MayaBatch plugin). Sometimes Maya will return this error code even after successfully saving the rendered images. • Command Line Args: Specify additional command line arguments to pass to the Maya command line renderer (not available when using the MayaBatch plugin). • Deadline Job Type: Select the type of Maya job you want to submit. The available options are covered in the next few sections.

Maya Render Job

If rendering a normal Maya job, select the Maya Render Job type.

8.26. Maya Plug-in Guide 405 Deadline User Manual, Release 5.2.49424

The following options are available: • Threads: The maximum number of CPUs per machine to render with. • Submit Render Layers As Separate Jobs: In Maya 7 and later, you can submit each layer in your scene as a seperate job. • Override Layer Job Settings: If submitting each layer as a separate job, enable this option override the job name, frame list, and task size for each layer. When enabled, the override dialog will appear after you press Submit.

• Submit Cameras As Separate Jobs: Enable to submit each camera as a separate job. • Ignore Default Cameras: Enable to have Deadline skip over cameras like persp, top, etc, when submitting each camera as a separate job (even if those cameras are set to renderable). • Enable Local Rendering: If enabled, Deadline will render the frames locally before copying them over to the final network location. This has been known to improve the speed of Maya rendering in some cases.

406 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Strict Error Checking: Enable this option to have Deadline fail Maya jobs when Maya prints out any “error” or “warning” messages. If disabled, Deadline will only fail on messages that it knows are fatal. • Render Half Frames: If checked, frames will be split into two using a step of 0.5. Note that frame 0 will save out images 0 and 1, frame 1 will save out images 2 and 3, frame 2 will save out images 4 and 5, etc. • Tile Rendering: Enable tile rendering to split up a frame into multiple tiles that are rendered individually. By default, a separate job is submitted for each tile (this allows for tile rendering of a sequence of frames). For easier management of single frame tile rendering, you can choose to submit all the tiles as a single job. You can also submit a dependent assembly job to assemble the image when the main tile job completes. If rendering with Mental Ray, there is an additional Mental Ray Options section under the Maya Options: • Mental Ray Verbosity: Set the verbosity level for Mental Ray renders. • Auto Memory Limit: If enabled, Mental Ray will automatically detect the optimal memory limit when render- ing. • Memory Limit: Soft limit (in MB) for the memory used by Mental Ray (specify 0 for unlimited memory). If rendering with VRay, there is an additional VRay Options section under the Maya Options: • Auto Memory Limit Detection: If enabled, Deadline will automatically detect the dynamic memory limit for VRay prior to rendering. • Memory Buffer: Deadline subtracts this value from the system’s unused memory to determine the dynamic memory limit for VRay.

Mental Ray Export Job

If rendering a Mental Ray Export job, select the Mental Ray Export Job type.

The following options are available: • Output File: The full filename of the Mental Ray files that will be exported. Padding is handled automatically by the exporter. • Export Settings: This opens up the Mental Ray export settings dialog where you can configure the remaining of the settings. Note that this dialog must be open when you submit the job to Deadline.

8.26. Maya Plug-in Guide 407 Deadline User Manual, Release 5.2.49424

You have the option to submit a dependent Mental Ray Standalone job that will render the exported mi files after the export job finishes. Settings like pool, priority, group, etc, will be the same as the export job, but there are some Mental Ray specific job options that you can specify as well.

VRay Export Job

If rendering a VRay Export job, select the VRay Export Job type.

The following options are available: • Output File: The full file name of the VRay files that will be exported (padding is handled automatically by the exporter). • VRay Render Job: You have the option to submit a dependent VRay Standalone job that will render the exported vrscene files after the export job finishes. Settings like pool, priority, group, etc, will be the same as the export job, but there are some VRay specific job options that you can specify here. • Vrimg2Exr Render Job: If you are submitting a dependent VRay Standalone job, and the output format is vrimg, you have the option to submit a dependent job that will convert the vrimg files to exr files, using VRay’s vrimg2exr application.

408 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Renderman Export Job

If rendering a Renderman Export job, select the Renderman Export Job type.

The following options are available: • Threads: The number of threads to use for exporting. Specify 0 to automatically use the optimal number of threads. • PRMan Render Job: You have the option to submit a dependent PRMan job that will render the exported rib files after the export job finishes. Settings like pool, priority, group, etc, will be the same as the export job, but there are some PRMan specific job options that you can specify here.

Arnold Export Job

If rendering an Arnold Export job, select the Arnold Export Job type.

The following options are available: • Arnold Render Job: You have the option to submit a dependent Arnold Standalone job that will render the exported .ass files after the export job finishes. Settings like pool, priority, group, etc, will be the same as the export job, but there are some Arnold specific job options that you can specify here.

8.26.2 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with Maya, you must setup Mapped Paths so that Deadline can swap out the Project and Output paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left. As long as all paths used in your Maya scene are relative to the Project and Output paths, and those paths are network accessible, you should have no problems performing cross-platform renders.

8.26.3 Plug-in Configuration

You can configure the MayaBatch and MayaCmd plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Maya plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.26. Maya Plug-in Guide 409 Deadline User Manual, Release 5.2.49424

8.26.4 Integrated Submission Script Setup

The following procedure describes how to install the integrated Maya submission script. This script allows for submit- ting Maya render jobs to Deadline directly from within the Maya editing GUI. The script and the following installation procedure has been tested with Maya versions 7.0 and later. On Windows, copy the file [Repository]\ClientSetup\Maya\InitDeadlineSubmitter.mel to [Maya Install Direc- tory]\scripts\startup. If you do not have a userSetup.mel in [My Documents]\maya\scripts, copy the file [Reposi- tory]\ClientSetup\Maya\userSetup.mel to [My Documents]\maya\scripts. If you have a userSetup.mel file, add the following line to the end of this file: source “InitDeadlineSubmitter.mel”; On MacOS, from the “[Repository]\ClientSetup\Maya\” folder, copy “userSetup.mel” to “/Users//Library/Preferences/Autodesk/maya/scripts” where is the name of the user who will be submitting to Deadline, and copy “InitDeadlineSubmitter.mel” to “/Applica- tions/Autodesk/maya/Maya.app/Contents/scripts” where is the currently installed version number. If you have a userSetup.mel file, add the following line to the end of this file as you would on Windows: source “InitDeadlineSubmitter.mel”; The next time Maya is started, a Thinkbox shelf should appear with a single button that can be clicked on to launch the submitter. On Windows, if you don’t see the Thinkbox shelf, it’s likely that Maya is loading another userSetup.mel file from somewhere. Maya can only load one userSetup.mel file, so you either have to configure Maya to point to the file mentioned above, or you have to modify the file that Maya is currently using as explained above. To figure out which userSetup.mel file Maya is using, open up Maya and then open up the Script Editor. Run this command: whatIs userSetup.mel

Custom Sanity Check

You can create a CustomSanityChecks.mel file in the [Repository]\submission\Maya folder which can be used to set defaults in the submission script before it is displayed. For example, here is a script that can set the default Limit Groups based on the renderer:

410 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

AddStringAttribute( "deadlineLimitGroups" ); string $renderer = GetCurrentRenderer(); if( $renderer == "mentalRay" ) setAttr defaultRenderGlobals.deadlineLimitGroups -type "string" "mental_ray_for_maya"; else if( $renderer == "vray" ) setAttr defaultRenderGlobals.deadlineLimitGroups -type "string" "vray_for_maya"; else setAttr defaultRenderGlobals.deadlineLimitGroups -type "string" "";

8.26.5 FAQ

Which versions of Maya are supported? Maya versions 7.0 and later are all supported by Deadline. Which Maya renderers are supported? 3Delight, Arnold, Final Render, Gelato, Maxwell, MayaSoftware, MayaHardware, MayaVector, Mental Ray, Mental Ray Exporter, Renderman, Turtle, and VRay are all supported. Does the Maya plugin support Tile Rendering? Yes. See the Job Submission section above for more details. Which Maya application should I select as the render executable in the MayaCmd plugin configuration? Select the Render.exe application. This is Maya’s command line renderer. Which Maya application should I select as the render executable in the MayaBatch plugin configuration? Select the MayaBatch.exe application. This is Maya’s batch renderer. What is the MayaBatch plugin, and how is it different than the MayaCmd plugin? This plugin keeps the Maya scene loaded in memory between frames, thus reducing the overhead of rendering the job. This is the recommended plugin to use, but if you run into any problems, you can always try using the MayaCmd plugin. Why is each task of my job is rendering the same frame(s)? This happens if you have the Renumber Frames option enabled in your Maya render settings. Each task is a separate batch, and if Renumber Frames is enabled, each batch will start at that frame number. I have a multi-core machine, but when rendering the machine isn’t using 100% of the cpu. What can I do? When submitting the job to Maya, set the Threads option to 0. This will instruct Maya to use the optimal number of threads when rendering based on the machine’s core-count. Does Deadline support Maya render layers? Yes. You can either submit one job that renders all the layers, or you can submit a single job per layer. Can I render scenes that use Maya Fur? A recommended setup for Maya is to have your project folder on a shared location that all of your machines can see (whether it be a Windows folder share or a mapped path), then create your Maya scene in this project folder. This way, when you submit the job to Deadline, you can specify the shared project path in the submission dialog, and all of your slave machines will be able to see it (and therefore see the Maya Fur folders within the project folder). Can I make use of the particle cache during network renders?

8.26. Maya Plug-in Guide 411 Deadline User Manual, Release 5.2.49424

Yes you can. All that is necessary to do this is to make your scene’s project directory network-accessible by your slaves. For a guide to setting up particle caches, check out this guide on the ResPower Website that describes the proper set-up procedure for the Maya particle cache. When rendering with Mental Ray in Maya 7.0, the rendered images are sent to the Project path instead of the Image Output Path. There is a bug in Maya 7.0 that causes the command line option which specifies the output path in Mental Ray to be ignored. This has been addressed in Maya 7.0.1. Currently, the best solution is to ensure the project path you specify is network accessible, and that the Maya Plugin option “RenderToNetworkDrive” is set to true. Doing this disables the local rendering feature, and ensures that your rendered images are saved on the network. When clicking on one of the folder browser buttons in the Maya submission dialog, I sometimes get an error. There is an article on this problem. It’s a .NET problem that seems to randomly occur when the user specifies a path of more than 130 characters, but it looks like Microsoft provides a hotfix for it. When submitting the job from Maya, if I check the Submit Each Render Layer As A Separate Job box, no jobs are submitted to Deadline when you click submit. The render layers you want to submit need to be set to renderable (the letter ‘R’ need to be there next to the render layer) for the submitter to submit the layer. Note that render layer should not be confused with display layer. Deadline only deals with render layers. It is not using the Maya option to render only the content of a specific display layer. I’m trying to render certain frame range from maya, but Deadline is rendering the entire frame range set in the Maya render globals. If you have the Submit Each Render Layer As A Separate Job box checked, Deadline grabs the frame information from each individual layer’s render globals when submitting the job. If unchecked, Deadline will use the info from the Frame List in the submission dialog. Rendering Maya scenes with Deadline is taking forever in comparison to a local render of the same file. One thing you can try is ensuring that the Local Rendering option is enabled when submitting the job to Deadline. This forces Maya to render the frame locally, then copy it to the final destination after. This has been known to improve rendering speeds. How do I configure Mental Ray Satellite to render Mental Ray for Maya jobs with Deadline? 1. Choose a satellite master machine, then modify the maya.rayhosts of the that machine so that it uses the slaves you want. 2. Only put the master machine in Deadline. 3. Submit a job to deadline, and make sure that the job will be picked-up by the master machine you have setup. Use pools to do so. 4. In the job property page of the Maya job, in the Maya tab, you could add the following line in the additional arguments field: -rnm 1 This -rnm 1 means “render no master true”, whicht will force the master not to participate in the rendering but only submit and receive the render tasks. You will get better results this way. You could also use -rnm 0 which means “render no master false” and force 1 cpu on the master (if your master is a dual cpu) so you have 1 cpu free on the master to dispatch the task. In short you should always have 1 cpu free on the master machine for dispatching or else your render time will suffer. Can I submit MEL or Python Maya script files to Deadline? Yes, you can submit your own custom scripts from the Advanced tab in the Maya submission script in the Monitor Submit menu.

412 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.26.6 Error Messages And Meanings

This is a collection of known Maya error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Exception during render: Error: (Mayatomr) : could not get a license Mental Ray is reporting that it can’t find a license. Mental Ray requires an additional license for network rendering, whereas renders such as mayaSoftware and mayaHardware simply uses your Maya license. Certain versions of Maya come with satellite licenses for Mental Ray, but this requires some additional setting up to enable network rendering. It’s probably best to contact the Maya support team about this. Exception during render: Renderer returned non-zero error code, 211 When Maya prints this error message it usually means that Maya can’t access a particular path because it either doesn’t exist or it doesn’t have the necessary read/write permissions to access it. This error tends to occur when Maya is either loading the scene or other referenced data or when saving the final output images. When you get this error, you should check the slave log that is included with the error report. If it is a path problem, Maya shows which path it wasn’t able to access. Check to make sure that the slave machine rendering the job can see the path, and that it has the necessary permissions to read/write to it. If it’s not a path problem, the slave log should still provide some useful information that can help explain the problem. There is also the case where Maya exits with this error code after successfully rendering the images. If this is the case, there are two things to try: 1. When you submit the job, enable the option to ignore error code 211. 2. When you submit the job, enable the MayaBatch option. Deadline doesn’t check error codes in this case. Exception during render: Error: Cannot find procedure “getStrokeUVFromPoly” This error can occur when rendering with paint effects. When you write prerender/postrender scripts be sure to use maya commands and not function wrappers that the gui posts since a huge number of functions don’t get loaded when rendering in batch mode. For a quick fix, add the following before the call to the prerenderscripts main functions: source “getStrokes”; Turtle: The system cannot find the path specified. When Turtle is installed, it sets some environment variables. However, Deadline will not recognize these variables until the Deadline Launcher (the application in the Windows tray) is restarted. Restarting the Deadline Launcher will fix this problem. Exception during render: Renderer returned non-zero error code, -1073741819 The error code -1073741819 is equivalent to 0xC0000005, which represents a Memory Access Violation error. So Maya is either running out of memory, or memory is becoming corrupt. Take a look at the full render log to see if Maya prints out any information prior to the crash that might explain the problem. mental ray: out of memory Try tweaking your Memory and Performance settings in the mental ray tab in the Maya Render Settings window. Try increasing the Physical memory setting (if you have the extra RAM). A common suggestion is to set it to 80% of your available RAM. You could also try tweaking the Acceleration method settings. Another thing you can try is trimming down your scene so that is uses less memory.

8.26. Maya Plug-in Guide 413 Deadline User Manual, Release 5.2.49424

8.27 Mental Ray Standalone Plug-in Guide

8.27.1 Job Submission

You can submit Mental Ray Standalone jobs from the Monitor.

Setup your Mental Ray Files

Before you can submit a Mental Ray Standalone job, you must export your scene into .mi files. You can export into either one .mi file with all your frames in it, or one .mi file per frame.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Mental Ray specific options are: • Mental Ray File: The Mental Ray file(s) to be rendered. – If you are submitting with one frame per .mi file, select one of the numbered frames in the sequence, and Monitor will automatically detect the frame range. In this case, you should leave the checkbox marked Separate Input MI Files Per Frame checked. The frames you choose to render should correspond to the numbers on the .mi files. – If your .mi file contains all the frames you wish to render, you should leave the Separate Input MI Files Per Frame box unchecked. In this case, you must specify the Input MI File Start Frame, which is the first frame in the input MI file being rendered, as it is used to offset the frame range being passed to the mental ray renderer. You may then specify the frame range as normal.

414 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Output Folder: The location to which your output files will be written. • Separate Input MI Files Per Frame: Should be checked if you are submitting a sequence of MI files that represent a single frame each. • Frame Offset: The first frame in the input MI file being rendered, which is used to offset the frame range being passed to the mental ray renderer. • Threads: The number of threads to use for rendering. • Verbosity: Control how much information Mental Ray prints out during rendering. • Build To Force: You can force 32 or 64 bit rendering. • Enable Local Rendering: If enabled, the frames will be rendered locally, and then copied to their final network location. • Command Line Args: Specify additional command line arguments you would like to pass to the mental ray renderer.

8.27.2 Plug-in Configuration

You can configure the Mental Ray plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Mental Ray plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.27.3 FAQ

Is Mental Ray Standalone supported by Deadline? Yes.

8.27. Mental Ray Standalone Plug-in Guide 415 Deadline User Manual, Release 5.2.49424

Can I submit a sequence of MI files that each contain one frame, or must I submit a single MI file that contains all the frames? Deadline supports both methods. When rendering a single MI file that contains all the frames, the frame range I tell Deadline to render doesn’t match up with the files that are actually rendered. When submitting a single MI file that contains all the frames, make sure the Input MI File Start Frame option is set to the first frame that is in the MI file. This value is used to offset the frame range being passed to the mental ray renderer. Mental Ray is printing out an error that is causing Deadline to fail the render, but when I render from the command line outside of Deadline, the error is still printed out, but the render finishes successfully. By default, Deadline fails a Mental Ray job whenever it prints out an error. However, you can configure the Mental Ray plugin to ignore certain error codes, which are printed out alongside the error in the error lob. After a frame is rendered, Deadline takes a long time releasing the task before it moves on to another. What’s going on? This can occur when a single MI file that contains all the frames is submitted to Deadline. Try exporting your frames to a sequence of MI files (one per frame) and submit the sequence of MI files to Deadline instead.

8.27.4 Error Messages And Meanings

This is a collection of known Mental Ray error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.28 Messiah Plug-in Guide

8.28.1 Job Submission

You can submit jobs from within Messiah by installing the integrated submission plugin, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

416 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

To submit from within Messiah, select the Customize tab, and then from the drop down, select Submit To Deadline. Click the Submit Messiah Job button to launch the submitter.

8.28. Messiah Plug-in Guide 417 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Messiah specific options are: • Messiah File: The scene file to render. • Content Folder: This is the folder that contains the Messiah scene assets. It is recommended that you have a network accessible content folder when network rendering with Messiah. • Output Folder: The folder where the output files will be saved (including images from all enabled buffers). If left blank, the output folders in the scene file will be used. • Threads: The number of threads to use for rendering. • Build To Force: The build of Messiah to force. • Frame Resolution: Override the width and height of the output images. If a value is set to 0, the value from the scene file will be respected. • Antialiasing: Override the antialiasing settings in the scene file.

8.28.2 Plug-in Configuration

You can configure the Messiah plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Messiah plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.28.3 Integrated Submission Script Setup

The following procedure describes how to install the integrated Messiah submission plugin. This plugin allows for submitting Messiah render jobs to Deadline directly from within the Messiah editing GUI. Note that this has only been tested with Messiah version 5.

Messiah 32 Bit

• Copy [Repository]\clientSetup\Messiah\SubmitToDeadline32.mp to [Messiah 32 Bit Install Directory]\Plugins.

418 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Restart Messiah • You’ll find the Submit To Deadline option in the drop down under the Customize tab.

Messiah 64 Bit

• Copy [Repository]\clientSetup\Messiah\SubmitToDeadline64.mp to [Messiah 64 Bit Install Directory]\Plugins. • Restart Messiah • You’ll find the Submit To Deadline option in the drop down under the Customize tab.

8.28.4 FAQ

Which versions of Messiah are supported by Deadline? Messiah 5 is currently supported.

8.28.5 Error Messages And Meanings

This is a collection of known Messiah error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.29 MetaFuze Plug-in Guide

8.29.1 Job Submission

You can submit MetaFuze jobs from the Monitor.

8.29. MetaFuze Plug-in Guide 419 Deadline User Manual, Release 5.2.49424

Setup your MetaFuze Batch File

Export you MetaFuze transcode as a batch XML file. Multiple files may be submitted to Deadline at once. Be sure to set the output path in MetaFuze to a network drive accessible by both yourself and your slave machines.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The MetaFuze specific options are: • Input File(s): The MetaFuze XML files to transcode. – Multiple files may be selected in the file browser and added to the list. • Submit Each File In Folder As A Separate Job: Submits each file (including non-XML files) in the folder of the selected file as a job.

420 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.29.2 Plug-in Configuration

You can configure the MetaFuze plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the MetaFuze plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.29.3 FAQ

Is MetaFuze supported by Deadline? Yes.

8.29.4 Error Messages And Meanings

This is a collection of known MetaFuze error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.30 MetaRender Plug-in Guide

8.30.1 Job Submission

You can submit MetaRender jobs from the Monitor.

8.30. MetaRender Plug-in Guide 421 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The MetaRender specific options are: • Input File: The input file. It could be a movie file or part of an image sequence. • Output File: The file or image sequence name that MetaRender will write to. • Encoding Profile: The path to the encoding profile saved with the Profile Editor. • Burn File (optional): Superimpose the specified burn-in template over the output frames. • Rendering Mode: Select CPU or GPU. • Strip Alpha Channel: Strips the alpha channel from the input sequence during conversion. • Threads: The number of render threads to use (CPU mode only). • Draft Mode: Speed up rendering for non-critical color work (GPU mode only).

422 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Render CPU Masks: Uses high quality mask rendering instead of low quality GPU-based masks (GPU/Draft mode only). • Write Flex File: Writes a flex file for the entire timeline. • Render Takes Into Subfolders: If the Flex File option is enabled, render takes into subfolders. • Core Command Args: Specify additional Core Command Line arguments (the basic command line options for all IRIDAS applications). • MetaRender Args: Specify additional MetaRender-specific command line arguments.

8.30.2 Plug-in Configuration

You can configure the MetaRender plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the MetaRender plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.30.3 FAQ

Is MetaRender supported by Deadline? Yes.

8.30.4 Error Messages And Meanings

This is a collection of known MetaRender error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.30. MetaRender Plug-in Guide 423 Deadline User Manual, Release 5.2.49424

8.31 modo Plug-in Guide

8.31.1 Job Submission

You can submit jobs from within modo by running SubmitModoToDeadline.pl script, or you can submit them from the Monitor.

To submit from within modo, follow these steps: 1. Under the system menu, choose Run Script 2. Choose the SubmitModoToDeadline.pl script from [Repository]\clientSetup\Modo\ • Alternatively, you can also copy this script to your local machine and run it from there

424 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The modo specific options are: • modo File: The scene file to render. • Pass Group: The pass group to render, or blank to not render a pass group. This option is only available for modo 6xx or later. • Render Threads: The number of render threads to use. Specify 0 to use automatic render threads. • Version: The version of modo to render with. • Build To Force: You can force 32 or 64 bit rendering with this option. • Output Folder: Specify an output folder. Note that specifying the output is optional unless you want to use tile rendering. • Output File Prefix: If specifying an output folder, specify the prefix for the output file name (extension is not required). • Output Format: If specifying an output folder, specify the format of the output images. • Tile Rendering Options: Setup a modo tile rendering job. Note that this requires you to override the output file.

8.31.2 Network Rendering Considerations

This Article provides some useful information for setting up modo for network rendering.

8.31.3 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with modo, you must setup Mapped Paths so that Deadline can swap out the Scene and Output file paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left.

8.31. modo Plug-in Guide 425 Deadline User Manual, Release 5.2.49424

You must also ensure that your modo project file is on a network shared location, and that any footage or assets that the project uses is in the same folder. Then when you submit the job to Deadline, you must make sure that the option to submit the scene file with the job is disabled. If you leave it enabled, the scene file will be copied to and loaded from the Slave’s local machine, and thus won’t be able to find the footage.

8.31.4 Plug-in Configuration

You can configure the Mod plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Plugins Configuration and select the modo plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.31.5 FAQ

Is modo supported by Deadline? Yes, modo 302 and later is supported. When rendering with modo on Mac OSX, the Slave icon in the Dock changes to the modo icon, and the render gets stuck. This is a known problem that can occur when the Slave application is launched by double-clicking it in Finder. There are a few known workarounds: 1. Start the Launcher application, and launch the Slave from the Launcher’s Launch menu. 2. Launch the slave from the terminal by simply running ‘deadlineslave’ or ‘deadlinelauncher -slave’. 3. Use ‘modo’ as the render executable instead of ‘modo_cl’. When tile rendering, each tile is rendered, but there is image data in the “unrendered” region of each tile.

426 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

This happens when there is a cached image in the modo frame buffer. Open up modo on the offending render node(s) and delete all cached images to fix the problem.

8.31.6 Plugin Error Messages

This is a collection of known modo error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.32 Naiad Plug-in Guide

8.32.1 Job Submission

You can submit jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Naiad specific options are: • Naiad File: The Naiad file to simulate.

8.32. Naiad Plug-in Guide 427 Deadline User Manual, Release 5.2.49424

Naiad Simulation Job

• Submit Simulation Job: Enable to submit a Simulation job to Deadline. • Run Simulation On A Single Machine: If enabled, the simluation job will be submitted as a single task consisting of all frames so that a single machine runs the entire simulation. • Threads: The number of render threads to use. Specify 0 to let Naiad determine the number of threads to use. • Enable Verbose Logging: Enables verbose logging during the simulation.

EMP to PRT Conversion Job

• Submit an EMP to PRT Conversion Job: Enable to submit a PRT Conversion job to Deadline. – If you are also submitting a simulation job, this job will use the EMP files created by the simulation job. – If you are not submitting a simulation job, the EMP files must already exist. • EMP Body Name: The EMP body name. • EMP Body File Name: The path to the EMP files to be converted.

8.32.2 Plug-in Configuration

You can configure the Naiad plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Naiad plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.32.3 FAQ

Is Naiad supported by Deadline? Yes.

428 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.32.4 Error Messages And Meanings

This is a collection of known Naiad error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.33 Nuke Plug-in Guide

8.33.1 Job Submission

You can submit jobs from within Nuke by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within Nuke, select Submit To Deadline from the Thinkbox menu.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Nuke specific options are: • Render With NukeX: Enable this option if you want to render with NukeX instead of Nuke. • Render Threads: The number of threads to use for rendering. • Continue On Error: If enabled, Nuke will attempt to keep rendering if an error occurs. • Maximum RAM Usage: The maximum RAM usage (in MB) to be used for rendering.

8.33. Nuke Plug-in Guide 429 Deadline User Manual, Release 5.2.49424

• Use Batch Mode: If enabled, Deadline will keep the Nuke file loaded in memory between tasks. • Build To Force: Force 32 or 64 bit rendering. • Submit Each Write Node As A Separate Job: Each write node is submitted to Deadline as a separate job. – Use Node’s Frame List: If submitting each write node as a separate job, enable this to pull the frame range from the write node, instead of using the global frame range. – Selected Nodes Only: If submitting each write node as a separate job, only the selected nodes are submit- ted. – Nodes With ‘Read File’ Enabled Only: If submitting each write node as a separate job, only the nodes that have the ‘Read File’ option enabled are submitted.

8.33.2 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with Nuke, you must setup Mapped Paths so that Deadline can swap out Read Node and Write Node file paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left.

8.33.3 Plug-in Configuration

You can configure the Nuke plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Nuke plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.33.4 Integrated Submission Script Setup

The following procedure describes how to install the integrated Nuke submission script. This script allows for submit- ting Nuke render jobs to Deadline directly from within the Nuke editing GUI. Note that this has only been tested with Nuke version 4.0 and later.

430 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Nuke 6 and Later

• Copy [Repository]\clientSetup\Nuke\SubmitToDeadline.py to [Nuke Install Directory]\plugins. • Create a menu item in the Nuke UI by adding the following lines to the menu.py file in the Nuke plugins folder: import SubmitToDeadline tb = menubar.addMenu(“&Thinkbox”) tb.addCommand(“Submit To Deadline”, SubmitToDeadline.main, “”)

Nuke 5

• Copy [Repository]\clientSetup\Nuke\SubmitToDeadline.tcl to [Nuke Install Directory]\plugins. • Create a menu item in the Nuke UI by adding the following lines to the menu.py file in the Nuke plugins folder: tb = menubar.addMenu(“&Thinkbox”) tb.addCommand(“Submit To Deadline”, “nuke.tcl( \”SubmitToDeadline\” )” , “”)

Nuke 4

• Copy [Repository]\clientSetup\Nuke\SubmitToDeadline.tcl to [Nuke Install Directory]\plugins. • Create a menu item in the Nuke UI by adding the following line to the menu.tcl file in the Nuke plugins folder: menu “Thinkbox/Submit To Deadline” SubmitToDeadline

Custom Sanity Check

Nuke 6 and Later Sanity Check A CustomSanityChecks.py file can be created alongside the main SubmitNukeToDeadline.py submission script (in [Deadline Repository]\submission\Nuke), and will be evaluated if it exists. This script will let you set any of the initial properties in the submission script prior to displaying the submission window. You can also use it to run your own checks and display errors or warnings to the user. Here is a very simple example of what this script could look like: import nuke import DeadlineGlobals def RunSanityCheck(): DeadlineGlobals.initDepartment="The Best Department!" DeadlineGlobals.initPriority= 33 DeadlineGlobals.initConcurrentTasks=2

nuke.message("This is a custom sanity check!")

return True

Note that if the RunSanityCheck method returns False, the submission will be canceled. Nuke 4 and 5 Sanity Check A CustomSanityChecks.tcl file can be created alongside the main SubmitNukeToDeadline.tcl submission script (in [Deadline Repository]\submission\Nuke), and will be evaluated if it exists. This script will let you set any of the initial properties in the submission script prior to displaying the submission window. You can also use it to run your own checks and display errors or warnings to the user. Here is a very simple example of what this script could look like:

8.33. Nuke Plug-in Guide 431 Deadline User Manual, Release 5.2.49424

set department "The Best Department!" set priority 33 set concurrentTasks 2 message "This is a custom sanity check!"

8.33.5 FAQ

Which versions of Nuke are supported by Deadline? Nuke 4.0 and later are supported. Can I render with NukeX instead of Nuke? Yes. Simply enable the Render With NukeX option when submitting your Nuke job. What’s the benefit to using Batch Mode? If enabled, Deadline will keep the Nuke file loaded in memory between tasks. This can help reduce overhead, because the Nuke file is only loaded once when the job is started on the Slave.

8.33.6 Error Messages And Meanings

This is a collection of known Nuke error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.34 Particle Illusion Plug-in Guide

8.34.1 Job Submission

You can submit Particle Illusion jobs from the Monitor.

432 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Particle Illusion specific options are: • Project File: The Particle Illusion project file to be rendered. • Output File: The output filename. • Motion Blur: Select either no blur, or normal or high quality blur. • Fields: Select no fields, or upper or lower fields. • Save Alpha: If the alpha channel should be saved. • Shrink %: The shrink percentage value, or use the shrink percentage stored in the project file. • Remove Black BG From RBG Channels: If black background should be removed from RGB channels. • Create Non-Intensive Alpha: If non-intense alpha should be created.

8.34. Particle Illusion Plug-in Guide 433 Deadline User Manual, Release 5.2.49424

8.34.2 Plug-in Configuration

You can configure the Particle Illusion plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Particle Illusion plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.34.3 FAQ

Which versions of Particle Illusion does Deadline support? Deadline support Particle Illusion 3.x.

8.34.4 Error Messages And Meanings

This is a collection of known Particle Illusion error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.35 POV-Ray Plug-in Guide

8.35.1 Job Submission

You can submit POV-Ray jobs from the Monitor.

434 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The POV-Ray specific options are: • POV-Ray File: The POV-Ray file to render. • Output File: Specify an optional output file. Make sure to include #### for padding. • Library Path: Specify an optional library path to search during rendering. • Build To Force: Force rendering in 32 bit or 64 bit. • Command Line Args: Additional command line arguments to pass to the POV-Ray command line renderer.

8.35.2 Plug-in Configuration

You can configure the POV-Ray plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the POV-Ray plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.35. POV-Ray Plug-in Guide 435 Deadline User Manual, Release 5.2.49424

8.35.3 FAQ

Is POV-Ray supported by Deadline? Yes.

8.35.4 Error Messages And Meanings

This is a collection of known POV-Ray error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.36 PRMan (Renderman Pro Server) Plug-in Guide

8.36.1 Job Submission

You can submit PRMan jobs from the Monitor.

436 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The PRMan specific options are: • RIB Files: The RIB files to be rendered (can be ASCII or binary formatted). These files should be network accessible. • Working Directory: The working directory used during rendering. This is required if your RIB files contain relative paths. • Threads: The number of threads to use for rendering. Set to 0 to let PRMan automatically determine the optimal thread count. • Additional Arguments: Specify additional command line arguments you would like to pass to the PRMan renderer.

8.36.2 Plug-in Configuration

You can configure the PRMan plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the PRMan plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.36. PRMan (Renderman Pro Server) Plug-in Guide 437 Deadline User Manual, Release 5.2.49424

8.36.3 FAQ

Is PRMan supported by Deadline? Yes. Is PRMan’s folder structure where each frame has its own folder supported by Deadline? Yes. Deadline can render rib files that are in separate folders per frame, and can also render rib files that are all stored in the same folder.

8.36.4 Error Messages And Meanings

This is a collection of known PRMan error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.37 Python/IronPython Plug-in Guide

8.37.1 Job Submission

You can submit Python or IronPython jobs from the Monitor.

438 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Python/IronPython specific options are: • Script File: The script you want to submit to Deadline. • Arguments: The arguments to pass to the script. Leave blank if the script takes no arguments. • Version: The version of Python/IronPython to use.

8.37.2 Plug-in Configuration

You can configure the Python/IronPython plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Python or IronPython plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.37.3 FAQ

Which versions of Python and IronPython does Deadline support? Deadline currently supports Python 2.3 to 3.2, and IronPython 2.0 to 2.7. Additional versions can be added when necessary.

8.37. Python/IronPython Plug-in Guide 439 Deadline User Manual, Release 5.2.49424

8.38 Quicktime Generation Plug-in Guide

8.38.1 Job Submission - Apple Quicktime

Jobs can be submitted from the Monitor. You can use the Submit menu, or you can right-click on a job and select Scripts -> Submit Quicktime Job To Deadline to automatically populate some fields in the Quicktime submitter based on the job’s output. Note that in order to use this Quicktime plugin, you MUST have Quicktime version 7.04 or later installed on your slaves, as well as any workstations that Quicktime jobs will be submitted from.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Quicktime specific options are: • Input Images: The frames you would like to generate the Quicktime from. If a sequence of frames exist in the same folder, Deadline will automatically collect the range of the frames and will set the Frame Range field accordingly. • Output Movie File: The name of the Quicktime to be generated. • Frames: The frame range used to generate the Quicktime. • Codec: The codec format to use for the Quicktime. • Frame Rate: The frame rate of the Quicktime. • Audio File: Specify an audio file to be added to the Quicktime movie. Leave blank to disable this feature. • Settings File: The Quicktime settings file to use. Press the Create Settings button to create a new Quicktime settings file.

440 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.38.2 Job Submission - Fusion Quicktime

Jobs can be submitted from the Monitor. You can use the Submit menu, or you can right-click on a job and select Scripts -> Submit Fusion Quicktime Job To Deadline to automatically populate some fields in the Fusion Quicktime submitter based on the job’s output. Note that in order to use this Quicktime plugin, you MUST have Fusion installed on your slaves.

8.38. Quicktime Generation Plug-in Guide 441 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Fusion Quicktime specific options are: • Input Images: The frames you would like to generate the Quicktime from. If a sequence of frames exist in the same folder, Deadline will automatically collect the range of the frames and will set the Frame Range field accordingly. • Output Movie File: The name of the Quicktime to be generated. • Frames: The frame range used to generate the Quicktime. • Renderer: Select the version of Fusion to generate the Quicktime with. • Frame Rate: The frame rate of the Quicktime. • BG Plate: Specify an optinal background plate. The Quicktime will render using the selected file as the back- ground. • Template: Specify an optional flow/comp template. See the Template documentation below for more informa- tion. • Artist Name: if you have a text tool with “artist” in its name in the selected template flow/comp, its text will be set to the name that is specified. • Curve Correction: Select to turn on the color curves tool (available when using templates only). • Codec: The codec format to use for the Quicktime. • On Missing Frames: What the generator will do when a frame is missing or is unable to load. There are 4 options: – Fail: Nothing will be generated until the missing frame becomes available.

442 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

– Hold Previous: The last valid frame will be included instead of the missing frame. – Output Black: A black frame will be included instead of the missing frame. – Wait: The generator will wait until the missing frame becomes available. • Quality %: The quality of the Quicktime. • Proxy: The ratio of pixels to render (for example, if set to 4, one out of every four pixels will be rendered). • Gamma: The gamma level of the Quicktime. • Exposure Compensation: The “stops” value used to calculate the gain parameter of the Brightness/Contrast tool. The gain parameter is calculated by using the value pow(2,stops). • Overide Start Frame: Allows the starting frame in the quicktime to be overridden. For example, if you are making a quicktime from images with a range 101-150, you can override the start frame to be 1, and the range in the quicktime will appear as 1-50. • Load/Save Preset: Allows you to save your Fusion Quicktime options to a preset file, so that you can load them again later.

Quicktime Templates

A flow/comp template can be specified to put all the messages and watermarks that you want into the Quicktime. It has some standardized flow/comp naming conventions so that the plug-in can set some standard text tool values, as well as the input and output images. Here is an example of a very simple template file.

As you can see, this simple template consists of a loader, a saver, a text tool, and a merge tool. This template simply merges the text tool with the loader so that “This is a test” appears in your Quicktime. You can create your own template files, but they must meet the following requirements. As long as these requirements are met, you can add whatever you like between the loader and the saver. • There must be exactly one loader and one saver.

8.38. Quicktime Generation Plug-in Guide 443 Deadline User Manual, Release 5.2.49424

• The loader must have a dummy file name specified (the file doesn’t have to exist).

8.38.3 Plug-in Configuration

The Apple Quicktime plug-in requires no configuration. You can configure the Fusion Quicktime plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Quicktime plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.38.4 FAQ

What’s the difference between the Apple Quicktime and Fusion Quicktime options? The Apple Quicktime renderer is more generic, but provides more general Quicktime options. The Fusion Quicktime renderer is more customizable (ie: using templates), but requires Eyeon’s Fusion to render. It uses Fusion’s scripting language (dfscript/eyeonscript) and the Fusion Render Node (dfrnode/renderslave) to generate the Quicktime. Which version of Apple Quicktime is required to create Quicktime movies with Deadline using the Apple Quick- time renderer? Apple Quicktime version 7.04 or later is required. It must be installed on all slaves that will be rendering Quicktime movies, as well as any machines from which Quicktime jobs will be submitted from. You can download the latest version of Quicktime from here. Can I submit an Apple Quicktime job from Windows to run on Mac OSX, or vice versa? No, because the export settings are saved out differently on each operating system. The Windows Quicktime generator doesn’t recognize settings that are exported on a Mac, and vice versa. We hope to find a solution for this in the future, but for now you should ensure that your Quicktime job renders on the same operating system from which it was submitted from (using groups, pools, machine lists, etc).

444 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Which version of Eyeon’s Fusion is required to create Quicktime movies with Deadline using the Fusion Quick- time renderer? The Fusion Quicktime Renderer has been tested with Fusion 4, 5, and 6. Can multiple machines work together to render a single movie file? No, this is not possible. This is why Quicktime Generation jobs should always consist of a single task that contains all the frames to be included in the movie file. When submitting an Apple Quicktime, an error message pops up when I click the Submit button.

This error pops up when you have an older version of Apple Quicktime installed. Installing the latest version should fix the problem.

8.38.5 Error Messages And Meanings

This is a collection of known Quicktime Generation error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Exception during render: Error: Class not registered - Make sure that QuickTime version 7.04 or later is installed on this machine This error occurs when you have an older version of Apple Quicktime installed. Installing the latest version should fix the problem. Exception during render: Renderer returned non-zero error code, 128 The Apple Quicktime renderer is crashing for some reason. Check to make sure you have the latest version of Apple Quicktime installed.

8.39 RealFlow Plug-in Guide

8.39.1 Job Submission

You can submit jobs from within RealFlow by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page. To submit from within RealFlow, select Commands -> System Commands -> SubmitToDeadline.py. In RealFlow 4, select Scripts -> User Scripts -> Deadline -> Submit To Deadline.

8.39. RealFlow Plug-in Guide 445 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The RealFlow specific options are: • Submit IDOC Jobs: Enable to submit separate IDOC jobs for each IDOC name specified. Separate multiple

446 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

IDOC names with commas. For example: IDOC01,IDOC02,IDOC03 • Start Rendering At [Start Frame - 1]: Enable this option if RealFlow rendering should start at the frame preced- ing the Start Frame. For example, if you are rendering frames 1-100, but you need to pass 0-100 to RealFlow, then you should enable this option. • Use One Machine Only: Forces the entire job to be rendered on one machine. If this is enabled, the Machine Limit, Task Chunk Size and Concurrent Tasks settings will be ignored. • Version: The version of RealFlow to render with. • Build: Force 32 bit or 64 bit rendering. • Generate Mesh: This option will generate the mesh for a scene where particle cache files were created previosly. • Rendering Threads: The number of threads to use during simulation. • Use Particle Cache: If you have created particle cache files for a specific frame and you want to resume your simulation from that frame you have to use this option. The starting cached frame is the Start Frame entered above.

8.39.2 Plugin Configuration

You can configure the RealFlow plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Plugins Configuration and select the RealFlow plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.39.3 Integrated Submission Script Setup

The following procedure describes how to install the integrated RealFlow submission script. This script allows for submitting RealFlow render jobs to Deadline directly from within the RealFlow editing GUI.

8.39. RealFlow Plug-in Guide 447 Deadline User Manual, Release 5.2.49424

RealFlow 5 and Later

• Copy [Repository]\ClientSetup\RealFlow\SubmitToDeadline.py to [RealFlow Install Directory]\scripts. • Launch RealFlow. • Now you can select Commands -> System Commands -> SubmitToDeadline.py.

RealFlow 4

• Copy [Repository]\ClientSetup\RealFlow\SubmitToDeadline.py to [RealFlow Install Directory]\scripts. • Launch RealFlow and select Scripts -> Add.

• In the Add Script dialog, for the Name enter Submit To Deadline, and for the Script enter the path to the SubmitToDeadline.py file that you just copied over. Then click the New Folder button and name the folder Deadline. Then select the Deadline folder and click OK.

448 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Now you can select Scripts -> User Scripts -> Deadline -> Submit To Deadline to launch the submission dialog.

8.39.4 FAQ

What versions of RealFlow are supported by Deadline? RealFlow versions 3 and later are supported. The integrated submission script is only supported in RealFlow 4 and later. RealFlow 3 jobs can still be submitted from the Monitor. Does rendering with RealFlow require a separate license? Yes. You need separate command line licenses to render. Can I render separate IDOCs from the same scene across different machines? Yes. You can specify which IDOCs you want to render in the submitter, and a separate job will be submitted for each one. Why is RealFlow looking for the particle cache on the local C: instead of on the network? This is likely happening because you are choosing to submit the RealFlow file with the job. This means the file is copied locally to the slave machines, which is why they are looking for the cache locally. If you disable the option to submit the file with the job, the slave machines should be able to find the cache properly.

8.39.5 Error Messages And Meanings

This is a collection of known RealFlow error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Exception during render: [RealFlow Error]: License file not found.

8.39. RealFlow Plug-in Guide 449 Deadline User Manual, Release 5.2.49424

RealFlow requires a separate license for network rendering, and that licensing system needs to be setup before you can render through Deadline.

8.40 REDLine Plug-in Guide

8.40.1 Job Submission

You can submit REDLine jobs from the Monitor. REDLine is the command line tool that ships with Redcine-X, and previously with REDAlert.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The REDLine specific options are: • Input R3D File: Specify the R3D file you want to render. • Output Folder: The folder where the output files will be saved. • Output Filename: The prefix portion of the output filename. It is not necessary to specify the extension. • Output Format: The output format. This will determine the filename extension. • Render Resolution: The resolution to render at. • Make Output Subfolder: Makes subdirectory for each output. • Frame List: The list of frames to render if rendering an animation. • Renumber Start Frame: The new start frame number (optional).

450 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Frames Per Task: The number of frames per task. • Submit Input R3D File With Job: If checked, the input file is submitted with the job to the repository. Deadline basically supports all the options that are available in the Redcine-X application. It also supports the ability to specify RSX files to use when rendering, so you can set your options in Redcine-X and then use them to render the job through Deadline. Please refer to your Redcine-X documentation for more information about these additional render options.

8.40.2 Plug-in Configuration

You can configure the REDLine plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the REDAlert plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.40.3 FAQ

Is Redcine-X/REDAlert supported by Deadline? Yes. Both applications ship with a command line application called REDLine, which Deadline uses to render. Which Operating System(s) can I render REDLine jobs with? Currently, REDLine is available on Windows and OSX, so you can render REDLine jobs on these operating systems.

8.40.4 Error Messages And Meanings

This is a collection of known REDLine error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know.

8.40. REDLine Plug-in Guide 451 Deadline User Manual, Release 5.2.49424

Currently, no error messages have been reported for this plug-in.

8.41 Renderman (RIB) Plug-in Guide

8.41.1 Job Submission

You can submit Renderman jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. Note that a Draft job can only be submitted if Deadline is able to parse absolute Display paths from the selected rib file. If it cannot extract the output paths, it will let you know during submission so that you can disable the Draft job option. The RIB specific options are: • RIB Files: The RIB files to be rendered (can be ASCII or binary formatted). These files should be network accessible. • Renderer: The renderer that will be used to render the RIB files. • Additional Arguments: Specify additional command line arguments you would like to pass to the RIB renderer. See the documentation for your particular RIB renderer for additional arguments.

452 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.41.2 Plug-in Configuration

You can configure the RIB plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Plugins Configuration and select the RIB plugin from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.41.3 FAQ

Which RIB renderes are supported by Deadline? The following renders are supported: • 3Delight • Air • Aqsis • BMRT • Entropy • Pixie • PRMan • RenderDotC • RenderPipe If you use a RIB renderer that is not on this list, please contact Deadline Support and let us know.

8.41. Renderman (RIB) Plug-in Guide 453 Deadline User Manual, Release 5.2.49424

8.41.4 Error Messages And Meanings

This is a collection of known RIB error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.42 Rendition Plug-in Guide

8.42.1 Job Submission

You can submit Rendition jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Rendition specific options are: • Input MI File: The MI file to render. This needs to be on a network location, since Rendition often saves the output file(s) relative to the input MI file location. • Output File: Optionally override the output file. • Build To Force: Force 32 bit or 64 bit rendering. • Skip Existing Frames: If existing images should be skipped. • Additional Cmd Line Args: Additional command line arguments to pass to Rendition during rendering.

454 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Tile Rendering Options: Setup a Rendition tile rendering job. Note that this requires you to override the output file. Also make sure that the final image resolution settings are correct, because these are used to determine the size of the tiles to render.

8.42.2 Plug-in Configuration

You can configure the Rendition plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Rendition plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.42.3 FAQ

Is Rendition supported by Deadline? Yes. Why do the image format options (like color depth) get reverted to defaults when rendering with Deadline? This only happens when overriding the output file in the submission script. When we pass the output path to Rendition, it uses the default image format options for the output type. If you don’t want this to occur, simply don’t override the output file.

8.42.4 Error Messages And Meanings

This is a collection of known Rendition error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.42. Rendition Plug-in Guide 455 Deadline User Manual, Release 5.2.49424

8.43 Rhino Plug-in Guide

8.43.1 Job Submission

You can submit jobs from within Rhino by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

To submit from within Rhino, left-click on the Deadline button you created during the integrated submission script installation.

456 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Rhino specific options are: • Rhino File: The Rhino file to be rendered. • Output File: The filename of the image(s) to be rendered. • Renderer: Specify the renderer to use. • Render Bongo Animation: If your Rhino file uses the Bongo animation plugin, you can enable a Bongo anima- tion job.

8.43.2 Supported Renderers

Deadline supports many of the Rhino renderers out of the box, including Rhino Render, Flamingo, VRay, Brazil, Penguin, and TreeFrog. If you are using a renderer that Deadline does not currently support, please email Deadline Support and let us know! It is also possible to manually add new renderers to the list that Deadline supports. Go to \\your\repository\script\Submission\RhinoSubmission and open Renderers.ini in a text editor. You’ll see that this file contains the list of renderers that Deadline currently supports, one per line. Just add the missing renderer as a new line and save the file. Note that the name needs to match that of the renderer exactly!

8.43.3 Plug-in Configuration

You can configure the Rhino plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Rhino plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.43.4 Integrated Submission Script Setup

The following procedure describes how to install the integrated Rhino submission script. This script allows for submit- ting Rhino render jobs to Deadline directly from within the Rhino editing GUI. The script and the following installation procedure has been tested with Rhino version 4.0.

8.43. Rhino Plug-in Guide 457 Deadline User Manual, Release 5.2.49424

• In Rhino, select Tools -> Toolbar Layout.

• Select the Toolbar collection file that you want to add the Deadline submission button to, then select Toobar -> Import. Browse to [Repository]\ClientSetup\Rhino\ and select the deadline.tb file. • Check the box next to Deadline and press Import.

• Select File -> Save to save the changes to the selected Toolbar collection file. • There should now be a toolbar with a Deadline button on your screen, which you can dock. – Left-click on the button to submit a Rhino job to Deadline. – Right-click on the button to launch the Deadline Monitor.

8.43.5 FAQ

Which versions of Rhino are supported? Deadline supports Rhino 4.

458 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Does Rhino need to be licensed on each render node? Yes. Is the Bongo plugin for animation supported? Yes. The Rhino submission dialog has the option to render a Bongo animation.

8.43.6 Error Messages And Meanings

This is a collection of known Rhino error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.44 RVIO Plug-in Guide

8.44.1 Job Submission

You can submit RVIO jobs from the Monitor, or you can right-click on a job and select Scripts -> Submit RVIO Job To Deadline to automatically populate some fields in the RVIO submitter based on the job’s output.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation.

8.44. RVIO Plug-in Guide 459 Deadline User Manual, Release 5.2.49424

The RVIO submitter allows you to create and save Layers, each of which can contain one or two source images, an arbitrary number of audio files, and a list of overrides. • Click the New button to add a new Layer. • Click the Rename button to rename the selected Layer. • Click the Remove button to remove the selected Layer. • Click the Clear All button to remove all Layers. • Click the Load Layers button to load saved Layers from disk. • Click the Save Layers button to save the list of current Layers to disk. For Layers, the only required setting is the Source 1 file(s). If specifying a sequence, you can set the range to the right of the file name (the same for the Source 2 file if specified). Note that the .rv file format is also supported as a Source file. For Audio Files, a comma separated list is used to allow the submission of multiple files. Other than submitting at least one Layer, the only other required option is the Output File under the Output tab. See the RVIO Documentation for more information about the available options and overrides.

Codec Lists

The RVIO submitter pulls its codec settings from the Codecs.txt file in \\your\repository\scripts\submission\RVIOSubmission. The contents of this file were retrieved from running “rvio.exe -formats” in a command prompt. This means that if your installation of RVIO supports additional codecs that aren’t available in the submitter, you can run the following and then take the resulting Codecs.txt file and replace our original one with it: rvio.exe-formats> Codecs.txt

8.44.2 Plug-in Configuration

You can configure the RVIO plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the RVIO plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

460 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.44.3 FAQ

Is RVIO supported by Deadline? Yes.

8.44.4 Error Messages And Meanings

This is a collection of known RVIO error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.45 Sequence Publisher Plug-in Guide

8.45.1 Job Submission

You can submit Sequence Publisher jobs from the Monitor.

8.45. Sequence Publisher Plug-in Guide 461 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Sequence Publisher specific options are: • Input Images: Specify the input image file(s) to render. • Output File: The output file path. • Output Profile: The path to the output profile path. • Start Frame/End Frame: The frame range to render. • Base Frame Rate: The base frame rate. • Deinterlacing: The deinterlacing option. • Advanced Options: Some advanced Sequence Publisher options (all are optional).

8.45.2 Plug-in Configuration

You can configure the Combustion plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Combustion plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

462 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.45.3 FAQ

Is Sequence Publisher supported by Deadline? Yes.

8.45.4 Error Messages And Meanings

This is a collection of known Sequence Publisher error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.46 Shake Plug-in Guide

8.46.1 Job Submission

You can submit Shake jobs from the Monitor.

8.46. Shake Plug-in Guide 463 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Shake specific options are: • Shake Script File: The Shake script file to be rendered. • CPUs: The number of CPUs to use during rendering. • Additional Arguments: Additional arguments to pass to the Shake command line renderer.

8.46.2 Plug-in Configuration

You can configure the Shake plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Plugins Configuration and select the Shake plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

464 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.46.3 FAQ

Is Shake supported by Deadline? Yes.

8.46.4 Error Messages And Meanings

This is a collection of known Shake error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.47 Softimage/XSI Plug-in Guide

8.47.1 Job Submission

You can submit jobs from within Softimage/XSI by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

8.47. Softimage/XSI Plug-in Guide 465 Deadline User Manual, Release 5.2.49424

To submit from within Softimage/XSI, select the Render toolbar on the left and click Render -> Submit To Deadline.

466 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Draft/Shotgun options are explained in the Draft and Shotgun documentation. The Softimage/XSI specific options are: • Workgroup: Specify the workgroup that Softimage/XSI should use during rendering. Leave blank to ignore. • Force Build: Force 32 bit or 64 bit rendering. • Submit XSI Scene File: The Softimage/XSI scene file will be submitted with the job. If your Softimage/XSI scene is stored in a project folder on the network, it is recommended that you leave this box unchecked. • Threads: The number of render threads to use during rendering. • Use XSI Batch Plugin: This will force deadline to use a modified version of the XSI plug-in which keeps Softimage/XSI and the scene loaded in memory between tasks. • Enable Local Rendering: If enabled, Deadline will render the frames locally before copying them over to the final network location. Note that this feature doesn’t support the “Skip Existing Frame” option. Selecting passes to render: • Select which passes you would like to render. A separate job is submitted for each pass. If no passes are selected, then the current pass is submitted. Note that if you are using FxTree Rendering, the passes are ignored.

Setting up a tile rendering job:

8.47. Softimage/XSI Plug-in Guide 467 Deadline User Manual, Release 5.2.49424

• Enable tile rendering to split up a frame into multiple tiles that are rendered individually. By default, a separate job is submitted for each tile (this allows for tile rendering of a sequence of frames). For easier management of single frame tile rendering, you can choose to submit all the tiles as a single job. You can also submit a dependent assembly job to assemble the image when the main tile job completes. • Note that if you are using FxTree Rendering, the tile rendering settings are ignored.

Setting up an FxTree rendering job: • Enable FxTree rendering to render a specific FxTree output node, which can be selected from the FxTree Output dropdown box. You can also set the frame offset for the output files. Some things to note are: – The frame range to be rendered is pulled from the Frame List setting under the Submission Options tab. – If you are rendering to a movie file, be sure to set the Group Size to the number of frames in your animation.

Notes: • Softimage/XSI gives the option to specify file paths as being relative to the current directory or absolute. Dead- line requires that all file paths be absolute. • When specifying the image output, make sure to include the extension (.pic, .tga, etc) at the end so that you can view the individual rendered images from the task list in the Deadline Monitor.

8.47.2 Cross-Platform Rendering Considerations

In order to perform cross-platform rendering with Softimage/XSI, you must setup Mapped Paths so that Deadline can swap out file paths where appropriate. You can access the Mapped Paths Setup in the Monitor while in super user mode by selecting Tools -> Configure Repository. You’ll find the Mapped Paths Setup in the list on the left.

468 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.47.3 Plug-in Configuration

You can configure the XSI and XSIBatch plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Plugins Configuration and select the XSI plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.47.4 Integrated Submission Script Setup

The following procedure describes how to install the integrated Softimage/XSI submission script. This script allows for submitting Softimage/XSI render jobs to Deadline directly from within the Softimage/XSI editing GUI. This script has been tested with Softimage/XSI versions 6.01 and later. • Install the Python engine for Softimage/XSI. For more information, see the Softimage/XSI Python installation documentation. • Check that the Python engine has been installed correctly. This can be done by opening up Softimage/XSI and selecting File -> Preferences. Under the Scripting preferences, you should have the option to select Python ActiveX Scripting Engine as the Script Language. If you don’t see this option, then Python has not been installed correctly, and you should contact the Softimage/XSI support team.

8.47. Softimage/XSI Plug-in Guide 469 Deadline User Manual, Release 5.2.49424

• Once the Python engine has been installed correctly, copy the file [Reposi- tory]/ClientSetup/XSI/SubmitXSIToDeadline.py to the folder [XSI Install Directory]/Application/Plugins • Launch Softimage/XSI Program. The submission script is automatically installed when Softimage/XSI starts up. To make sure the script was installed correctly, select the Render toolbar on the left and click the Render button. A Submit To Deadline menu item should be available.

470 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.47.5 FAQ

Which versions of Softimage/XSI are supported by Deadline? Softimage/XSI versions 6.01 and later are supported by Deadline. What is the difference between the XSI and XSIBatch plug-ins? The XSIBatch plug-in keeps the scene loaded in memory between subsequent tasks for the same job. This saves on the overhead of having to load Softimage/XSI and the scene file for each task. The XSI plug-in uses standard command line rendering, and should only be used if you experience problems with the XSIBatch plug-in. Does Deadline support FxTree rendering? Yes. Simply enable FxTree rendering in the submission dialog and specify the FxTree and Output Node you want to render. Does Deadline support the Arnold renderer for Softimage? Yes. Deadline supports the Arnold plug-in for Softimage, as well as Arnold’s standalone renderer (kick.exe). For more information on rendering Arnold Standalone jobs with Deadline, see the Arnold Standalone Plug-in Guide. Can Softimage/XSI script jobs be submitted to Deadline? Yes. Deadline provides very basic support for script jobs, though there is currently no interface to submit them. The option for submitting a script job can be specified in the XSI plug-in info file. After installing the Softimage/XSI integrated submission script, Softimage/XSI failes to load (it goes to a white screen and hangs). We have heard of this problem before, but we have not been able to reproduce it. The workaround for this prob- lem is to remove the script from the plugins folder, and manually path to the submission script plugin after starting Softimage/XSI. When Deadline renders the job, Softimage/XSI isn’t able to find anything in the scene’s project folder. If you’re Softimage/XSI scene file is saved in a project folder on the network, leave the Submit Softimage/XSI Scene File check box unchecked in the submission dialog. This allows Deadline to load the Softimage/XSI scene in the context of its project folder. I have Softimage/XSI configured to save output to a network share, but when Deadline renders the scene, the render slaves save their output to their local drive rather than to the network share. There are two possible solutions: 1. If you’re Softimage/XSI scene file is saved in a project folder on the network, leave the Submit Softimage/XSI Scene File check box unchecked in the submission dialog. This is the recommend solution. 2. Specify the full resolved path for the scene output directory, instead of something like [Project Path]\Render_Pictures. Rendering with Deadline seems a lot slower than rendering through Softimage/XSI itself. If you’re submitting your jobs with the Use XSI Batch option disabled, then Softimage/XSI needs to be restarted and the scene needs to be reloaded for every task in the Deadline job, which can add a lot of overhead to the render time, especially if cached data needs to be loaded. To speed up your Deadline renders, you can increase the task group size (aka: chunk size) from 1 to 5 or 10. This way, the scene is loaded once for every 5 or 10 frames. Increasing the chunksize like this is recommended if you know ahead of time your frames will only take seconds to render, or if a large amount of cached data needs to be loaded.

8.47. Softimage/XSI Plug-in Guide 471 Deadline User Manual, Release 5.2.49424

8.47.6 Error Messages And Meanings

This is a collection of known Softimage/XSI error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Exception during render: Renderer returned non-zero error code, -1073741819 The error code -1073741819 is equivalent to 0xC0000005, which represents a Memory Access Violation error. So Softimage/XSI is either running out of memory, or memory is becoming corrupt. If you find that your frames are still being rendered, you can configure the XSI plugin configuration to ignore this error. Exception during render: ‘ ERROR : 2000 - Library not found: ... This can occur if the Deadline slave application’s environment variables haven’t been updated. Try rebooting the machine and see if that fixes the problem. ERROR : 2004 - Invalid pointer - [line 2] You can workaround this by renaming the ICEFlow plugin (Application\Plugins\ICEFlow.dll). This plugin manages the transfer of data between Softimage and Maya (the one-click ICE workflow).

8.48 Terragen Plug-in Guide

8.48.1 Job Submission

You can submit Terragen jobs from the Monitor.

472 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Terragen specific options are: • Project File: The Terragen project file to render. • Render Node: Select the render node to render. Leave blank to use the default in the project. • Output: Override the output path in the project file. If rendering a sequence of frames, remember to include the %04d format in the output file name so that padding is added to each frame. • Extra Output: Override the extra output path in the project file. If rendering a sequence of frames, remember to include the IMAGETYPE.%04d format in the output file name so that padding is added to each frame. • Enable Local Rendering: If enabled, Deadline will render the frames locally before copying them over to the final network location. Note that this requires that an Output file be specified above.

8.48.2 Plug-in Configuration

You can configure the Terragen plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Terragen plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.48.3 FAQ

Which versions of Terragen are supported by Deadline? Deadline currently supports the commercial version of Terragen 2.

8.48. Terragen Plug-in Guide 473 Deadline User Manual, Release 5.2.49424

8.48.4 Error Messages And Meanings

This is a collection of known Terragen error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.49 Tile Assembler Plug-in Guide

8.49.1 Job Submission

You can submit Tile Assembler jobs from the Monitor. Normally, these jobs are submitted as dependent jobs for your original tile jobs, but you can submit them manually if you wish.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Tile Assembler specific options are:

474 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Input Tile Files: Select one of tile files from a group to perform the tile assembly for. The files should have the format [PREFIX]_tile_[I]x[J]_[X]x[Y].[EXTENSION]. For example, r:\projects\deadline\Tests\tile_test\tile_test_tile_1x1_2x1_0000.exr. • Tiles Are Uncropped: Enable this option if a tile consists of the full resolution of the image, with only a part of it rendered. • Ignore Overlap: If assembling uncropped tiles, enable this option to ignore any overlap that exists for the given tiles. For example, if two tiles share a few pixels between them. • Clean Up Tile Files After Assembly: Enable to have Deadline automatically delete the tile files after successfully assembling the final image.

8.49.2 FAQ

There are currently no FAQ items for this plugin.

8.50 VNS and WCS Plug-in Guide

8.50.1 Job Submission

You can submit VNS or WCS jobs from the Monitor. Before submitting, make sure all the slaves you are planning to render with have gone through the Render Node Setup described in this guide.

8.50. VNS and WCS Plug-in Guide 475 Deadline User Manual, Release 5.2.49424

Submission Options

The general Deadline options are explained in the Job Submission documentation. The VNS/WCS specific options are: • Project File: The project file to render. • Application: The application to use, VNS or WCS.

8.50.2 Plug-in Configuration

You can configure the VNS/WCS plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Plugins Configuration and select the VNS plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

476 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.50.3 Render Node Setup

The preference file for VNS/WCS must be configured on each render node. If VNS/WCS is not configured properly, you will likely get errors when rendering through Deadline. As an alternative to configuring the preference file on each machine individually, you can do it once on one machine and copy the preferences file to a network location. Then configure the VNS plugin to copy that preference file to each render node before VNS/WCS is launched.

Setting up the listener port

Deadline communicates with VNS/WCS through a port, so we must configure the application to open a port when it launches. To do this, start up VNS/WCS on your render nodes and do the following: • Under the File menu, select Preferences -> General, and then select the Config tab.

8.50. VNS and WCS Plug-in Guide 477 Deadline User Manual, Release 5.2.49424

• In the Option Name field enter netscript_permit_addr and in the Option Value field enter 127.0.0.1, then press the Set button. • Now change the Option Name to netscript_port_num and in the Option Value field enter the port number you wish Deadline and VNS/WCS to communicate through. Then press the Set button. By default Deadline uses port 4242. If you wish to use a different port, this can be configured in the plugin configuration from the Monitor. • Close the application and reopen it to make sure the changes have stuck. If they do not stick try opening a project first, setting the preferences, then saving the project. This is directly from the VNS documentation: Note: VNS will not save these Advanced Config options into the VNS.Prefs file unless you have loaded a project. If you start VNS, change an option and immediately quit, the change will not be resaved. To ensure your changes are saved, make them after you have loaded a Project. Your changes will then be saved into the VNS.Prefs file the next time you save the Project or quit VNS.

Setting up the paths

It is advised that you set up these paths to point to a network location. This way the project, it’s components, and the output directory can be accessed from anywhere on the network. • Under the File menu, select Preferences -> General, and then select the Paths tab.

478 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.50.4 FAQ

Is VNS or WCS supported by Deadline? Yes, both applications are supported by Deadline. I set the preferences in VNS/WCS but when I close and reopen the program they are no longer set, why? The preferences seem to saved when you save the project. Try opening a project, setting the preferences, and then saving the project. Deadline keeps reporting that it timed out while waiting for a connection from VNS/WCS Make sure the netscript_port_num and netscript_permit_addr are set in your application. This must be done for every slave. See the Render Node Setup documentation above. You can make sure VNS has the port open by opening a command prompt and typing netstat -a -b. This will list all the open ports and what applications are using each. Also make sure the port you tell VNS/WCS matches the one that deadline uses. By default this is 4242 but can be changed in the VNS plug-in configuration.

8.50.5 Error Messages And Meanings

This is a collection of known VNS error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Waiting for result over socket failed. Ensure that the connection port and IP address has been configured in VNS on this machine VNS needs to be configured on each render node in order for Deadline to connect to it using a socket. If Deadline can’t connect properly, you get this error message. See the Render Node Setup documentation for more details.

8.50. VNS and WCS Plug-in Guide 479 Deadline User Manual, Release 5.2.49424

8.51 VRay Standalone Plug-in Guide

8.51.1 Job Submission

You can submit VRay Standalone jobs from the Monitor.

Setup your vrscene Files

Before you can submit a VRay Standalone job, you must export your scene into .vrscene files. You can export into either one .vrscene file with all your frames in it, or one .vrscene file per frame.

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The VRay specific options are: • VRay File: The VRay file (*.vrscene) to be rendered. If you are submitting a sequence of vrscene files (one file per frame), you only need to select one vrscene file from the sequence. • Output File: Optionally override the output file name. • Separate Input vrscene Files Per Frame: Select this option of you are submitting a sequence of vrscene files (one file per frame). • Threads: The number of threads to use for rendering. Specify 0 to use the optimal number of threads. • Command Line Args: Specify additional command line arguments you would like to pass to the mental ray renderer.

480 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Vrimg2Exr Options: If you are saving out vrimg files, you can submit a dependent Vrimg2Exr job that will convert the vrimg files to exr files.

8.51.2 Plug-in Configuration

You can configure the VRay plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the VRay plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.51.3 FAQ

Is VRay Standalone supported by Deadline? Yes.

8.51.4 Error Messages And Meanings

This is a collection of known VRay error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.51. VRay Standalone Plug-in Guide 481 Deadline User Manual, Release 5.2.49424

8.52 Vrimg2Exr Plug-in Guide

8.52.1 Job Submission

You can submit Vrimg2Exr jobs from the Monitor. You can use the Submit menu, or you can right-click on a job and select Scripts -> Submit Vrimg2Exr Job To Deadline to automatically populate some fields in the Vrimg2Exr submitter based on the job’s output.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Vrimg2Exr specific options are: • VRay Image File: The VRay Image file(s) to be converted. If you are submitting a sequence of files, you only need to select one vrimg file from the sequence. • Output File: Optionally override the output file name (do not specify padding). If left blank, the output name will be the same as the input name (with the exr extension). • Frame List: The list of frames convert. • Specify Channel: Enable this option to read the specified channel from the vrimg file and write it as the RGB channel in the output file. • Crop EXR Data Window: Enable this option to auto-crop the EXR data window. • Set Gamma: Enable this option to apply the specified gamma correction to the RGB colors before writing to the exr file.

482 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

• Store EXR Data as 16-bit (Half): Enable this option to store the data in the .exr file as 16-bit floating point numbers instead of 32-bit floating point numbers. • Set Buffer Size: Enable this option to set the maximum allocated buffer size per channel in megabytes. If the image does not fit into the max buffer size, it is converted in several passes. • Convert RGB Data to the sRGB Color Space: Enable this option to converts the RGB data from the vrimg file to the sRGB color space (instead of linear RGB space) before writing to the exr file. • Set Compression: Enable this option to set the compression type. The Zip method is used by default. • Delete Input vrimg Files After Conversion: Enable this option to delete the input vrimg file after the conversion has finished.

8.52.2 Plug-in Configuration

You can configure the Vrimg2Exr plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Vrimg2Exr plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.52.3 FAQ

Is Vrimg2Exr supported by Deadline? Yes.

8.52.4 Error Messages And Meanings

This is a collection of known Vrimg2Exr error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline

8.52. Vrimg2Exr Plug-in Guide 483 Deadline User Manual, Release 5.2.49424

Support and let us know. Currently, no error messages have been reported for this plug-in.

8.53 Vue Plug-in Guide

8.53.1 Job Submission

You can submit jobs from within Vue by installing the integrated submission script, or you can submit them from the Monitor. The instructions for installing the integrated submission script can be found further down this page.

If you are submitting a single frame to Deadline from within Vue, select Render -> Render Options, then do the following: • Find the Renderer section, select RenderBull/RenderNode Network, then press the Edit button. • In the Options dialog that pops up, enter the submission command described below. • You can also enter the folder you want the temporary Vue scene file saved in during submission. By default, you should be able to leave this blank. Press OK when finished. • Press Render to bring up the submission dialog.

484 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

If you are submitting an animation to Deadline from within Vue, select Animation -> Animation Render Options, then do the following: • Find the Renderer section, select Network Rendering/RenderNode Network, then press the Edit button. • In the Options dialog that pops up, enter the submission command described below. • You can also enter the folder you want the temporary Vue scene file saved in during submission. By default, you should be able to leave this blank. Press OK when finished. • Press Render Animation to bring up the submission dialog.

8.53. Vue Plug-in Guide 485 Deadline User Manual, Release 5.2.49424

This is the submission command to submit a job to Deadline from within Vue. Make sure this is entered as one line, and make sure to set the deadlinecommand.exe and repository paths correctly. Note that the last two arguments ‘7’ and ‘64bit’ are optional, are are used to automatically populate the Version and Build settings respectively. Check the Vue submission dialog in the Monitor for the available options for Version and Build. “[Local Deadline Bin Folder]\deadlinecommand.exe” -executescript [Reposi- tory]\scripts\submission\VueSubmission\VueSubmission.py “[FILE_PATH]” “[SCENE_NAME]” “[NUM_FRAMES]” 7 64bit

Submission Options

The general Deadline options are explained in the Job Submission documentation, and the Shotgun options are ex- plained in the Draft and Shotgun documentation. The Vue specific options are: • Vue File: The Vue scene file to be rendered. • Render animation sequence: Whether or not to render the full animation. • Version: The version of Vue to render with. • Build To Force: Force 32 bit or 64 bit rendering.

486 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.53.2 Plug-in Configuration

You can configure the Vue plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the Vue plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

8.53.3 FAQ

Which versions of Vue are supported by Deadline? Vue 6 and later are supported (Infinite and xStream editions). I have Vue render node licenses, but when I render with Deadline, I get the error “No serial number found”. If you have render node licenses for Vue, you need to use the *RenderNode.exe executable (ie: Vue 9 xStream RenderNode.exe) instead of the StandaloneRenderer.eon executable for rendering.

8.53.4 Error Messages And Meanings

This is a collection of known Vue error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Unable to initialize application - Check render log for more information. Check the render log for the job to see if this additional information in printed out: STDOUT: Initializing...Error STDOUT: No serial number found STDOUT: Unable to initialize application. Exiting.

8.53. Vue Plug-in Guide 487 Deadline User Manual, Release 5.2.49424

If this is the case, it means that Vue can’t get a license. If you have render node licenses for Vue, you need to use the *RenderNode.exe executable (ie: Vue 9 xStream RenderNode.exe) instead of the StandaloneRenderer.eon executable for rendering.

8.54 xNormal Plug-in Guide

8.54.1 Job Submission

You can submit xNormal jobs from the Monitor.

Submission Options

The general Deadline options are explained in the Job Submission documentation. The xNormal specific options are: • XML File: The xNormal XML file to render. • Build To Force: Force 32 bit or 64 bit rendering.

8.54.2 Plug-in Configuration

You can configure the xNormal plug-in settings from the Deadline Monitor. While in super user mode, select Tools -> Configure Plugins and select the xNormal plug-in from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

488 Chapter 8. Application Plug-ins Deadline User Manual, Release 5.2.49424

8.54.3 FAQ

Is xNormal supported by Deadline? Yes

8.54.4 Error Messages And Meanings

This is a collection of known xNormal error messages and their meanings, as well as possible solutions. We want to keep this list as up to date as possible, so if you run into an error message that isn’t listed here, please email Deadline Support and let us know. Currently, no error messages have been reported for this plug-in.

8.54. xNormal Plug-in Guide 489