Method to render image sequences via Deadline?



I’m trying to think of a better way to get sequences working than what I have now.

We need to send sequences (10 frames or so) that have different objects rendering/appearing on different frames. Each of these frames is around 5k, so using the traditional animation method of 1 slave per frame will take too long to render.

At the moment my submission script calculates the prepass for the sequence, then it switches the rendering in Deadline to Jigsaw animation and splits that image up into a full frame of 16 tiles and this gets sent as a dependant job with the Draft tile assembly after.

This usually works ok, but we have to wait for the whole batch to complete before we can view any output (as each tile is rendered over the frame count, not as part of 1 image), and mulitple frames take ages to send everything to Deadline.

This screenshot is what Jigsaw sends to Deadline just for 2 frames. And all 40 items have to be complete before we can see any full renders.

Is there a better method for doing short high resolution images like these? Or is it possible to script Deadline to send each image as a Jigsaw single frame render that increments the frame time in one batch?

Sorry it’s a bit wordy!



I don’t think the submission itself needs any tweaking, except for how the Slaves are allowed to process these jobs.

If I were to do this kind of work, I would limit each of the 16 region jobs to a single Slave (Machine Limit 1), and send them to a Pool with enough machines to handle all 16 regions in parallel. Given that these jobs are submitted around the same time, chances are they will be picked up and processed by 16 Slaves at around the same time. The Limit of 1 also ensures that once a Slave has picked up a Region Job, it is likely to continue rendering all other frames of it without reloading 3ds Max.
The Draft Tile Assembly Jobs would need to be in another Pool with machines dedicated to that type of work. The DTA jobs would be frame-dependent on the Max Region jobs, so as soon as the 16 regions of the first frame have finished, the DTAs would assemble that frame.
Of course, you could also have dedicated machines for the prepass if you want to keep things separated.

How many machines do you have working on the Max Regions? Are the same machines responsible for the Assembly, or do you have dedicated Slaves for that?


Hi Bobo,

I’ve finally got time to look at this now.

We have 20 machines that run during the day as slaves, with 15 more that come on at night. None are just dedicated Assembly ones at the moment (but I will get the slower ones to do that)

I’ve just done a quick test with the machine limit set to 1 in the SMTD and each region is being rendered by the same slave. I’ll have to do a full size test on a busy farm and see how it works and if the frames come out in a timely manner.

What is the Maxscript to specify the Assembler pool/group override? Last time I tried to set it through scripting it was ignored.

Thanks again.

SMTDSettings.AssemblerOverride=true --enables the overrides
SMTDSettings.AssemblerPriority=99 --sets the priority override
SMTDSettings.AssemblerPoolName="DTA" --for example
SMTDSettings.AssemblerPool2Name="" --usually empty, but can be set for secondary pool
SMTDSettings.AssemblerGroup="somegroup" --sets the group override

When SMTDSettings.AssemblerOverride=false, the regular job values are used:

SMTDSettings.Priority SMTDSettings.PoolName SMTDSettings.Pool2Name SMTDSettings.Group


Hi Bobo,

Had a good test with this now, and it is working perfectly.

Thanks again.