Command Line 3ds max submission

Hi,

We’ve recently purchased Deadline and are trying to update an old script to work with this instead of our old render manager.

So far, to submit a 3ds max job through the command line, we have the following:
“C:\Program Files\Thinkbox\Deadline10\bin\deadlinecommand.exe” -SubmitCommandLineJob -executable “C:\Program Files\Autodesk\3ds Max 2018\3dsmaxcmd.exe” -arguments “-width:5000 -height:3333 T:\Laboratory\Jordan\Deadline_Script_Test\Product_Spheres.max” -frames 1,3,5,8-10 -group rendernodes -priority 50 -name “ID_CGHobs_Lifestyle_Product_Spheres”

Made with the help of this page

This works… Kind of. It successfully puts a job into the Deadline queue as a “CommandLine” job with the specified number of frames. When this gets picked up by a node, it only ever renders frame 0 multiple times. Just wondering what I’m doing wrong - I presume it’s not passing the correct frame arguments onto the 3dscmd but I’m not sure how to fix.

Hopefully it’s something simple I’m missing so any help would be great. Thanks!

Well, as you said yourself, you have submitted a Command Line job that happens to launch 3dsMaxCmd.exe. But that’s not how Deadline deals with 3ds Max rendering, and how you normally perform job submissions…

Deadline submissions are usually controlled by two .job files - one defining the submission parameters, and the other defining the plugin parameters. So the command line would look more like

deadlinecommand.exe <jobinfo.job> <plugininfo.job> <scenefile.max>

(See https://docs.thinkboxsoftware.com/products/deadline/10.1/1_User%20Manual/manual/command.html?highlight=deadlinecommand#submitting-a-job )

I would recommend running at least one 3ds Max submission using the Monitor’s 3dsmax submitter. Just pick any .MAX file, enter a frame range, and hit Submit. Once it succeeds, navigate to C:\Users\<YourUserName>\AppData\Local\Thinkbox\Deadline10\temp\ and you will find two files - a max_job_info.job and a max_plugin_info.job. The former contains the Plugin=3dsmax key/value pair, while the latter describes the properties of the job like the scene to render, the version of 3dsMax to use, etc. They should go as arguments in that order.

In this particular case, if you did not check the “Submit Scene File With Job” option in the GUI (because I did not mention to do it), there would be no need for a third argument to the deadlinecommand call - the SceneFile= is a key value pair inside the max_plugin_info.job file pointing at the network location where the .MAX file was picked from. So the command line would be just

deadlinecommand.exe <max_job_info.job> <max_plugin_info.job>

If the second .job file does not contain a SceneFile= key/value pair, then a 3rd argument will be expected, and should be the path to the .MAX scene file.

Inside the second .job file, there will be a Frames= key/value pair that defines the frame, frame range, or frame list to render. Deadline supports a bunch of fancy frame range notations… https://deadline.thinkboxsoftware.com/frame-list-formatting-options

Note that as mentioned in the first link above, you can also run deadlinecommandbg.exe which is a hidden dialog without a popup dialog, and does not return anything to the console. In that case, you must provide the file names of two additional files that do not exist - one for the output of the command, and one for the exit code.

deadlinecommandBG.exe -outputFiles <output.txt> <exitcode.txt> <max_job_info.job> <max_plugin_info.job>

The integrated submitters and the Monitor submitters all use this version of the command line.

The actual 3dsMax plugin in Deadline is rather advanced and uses a MAXScript Extension C++ Plugin (called Lightning.dlx) to open a channel to 3dsMax and issue SDK commands controlling everything about the scene. And there is a Python plugin file (3dsmax.py under \Repository\plugins\3dsmax) communicating with that C++ plugin by reading from the job’s metadata provided by your .job files…

We also have one called 3dsMaxCmd that uses the 3dsmaxcmd.exe you were after, but it is rarely used as it is significantly less powerful - 3dsmaxcmd.exe is technically an extension of Backburner. Enough said :wink:

If you have any questions, please feel free to ask!

2 Likes

Hi Bobo,

Nice to know how it works under the hood a little bit. The previous submitter we used I think must have just used the ‘Backburner’ way! I’ve had some success with using the two .job files and it appears to be working well.

Thank for your help and thorough reply!