Basically, when you submit a Maya job with render layers and layer overrides set on the start and end frames of each render layer, jobs submitted using Vray render the wrong frames. Deadline will submit separate jobs for each render layer.
Test scenario:
2 render layers in Maya
Render layer 1 has layer overrides set for start and end frame in Render Settings (1-10)
Render layer 2 has layer overrides set for start and end frame in Render Settings (5-15)
Submit job to Deadline and set ‘task size’ to 5. Check ‘Submit Render Layers as Separate Jobs’.
Deadline submits 2 jobs with 2 tasks for job 1 (1-5, 6-10) and 3 tasks for job 2 (5-9, 10-14, 15).
For Job 1, task 1 - Deadline then renders frames 1-10 (should be frames 1-5)
For Job 1, task 2 - Deadline then renders frames 1-10 again (should be frames 6-10)
For Job 2, task 1 - Deadline then renders frame 5-9 (correct)
For Job 2, task 2 - Deadline then renders frame 5-9 (should be frames 10-14)
For Job 2, task 3 - Deadline then renders frame 5-9 (should be frame 15)
Is there a fix for this or a better way of working or is this a bug?
We managed to reproduce the issue in our environment as well. It seems that the problem occurs only with V-ray, so the case will be forwarded to our developers.
Thank you very much for this report.
..We use Python to build our scenes from a given folder which holds the caches from cached geometry. It
also create Layers and “Passes” for imported cameras…and more.
The same script sets the Layer overrides for Start Frame, End Frame, Renderable Camera.
All of this should make it possible for us to hit the Deadline Submit Button. And then press the Submit Job
button. Without setting up the Layer Overrides manually for every camera in the scene.
We could create a custom launcher in Python to send our jobs
But it could be so nice if Thinkbox, Chaos Group, Autodesk (Maya) could find a solution together. So the
Layer override can be used for Start Frame, End Frame, Renderable Camera…
We pay for this to happen. I mean we could make a lot in Python but a lot of this should be available
without making a script to get around the problem.
I think that Chaos Group, Thinkbox, Autodesk do a great job. And they do it so well that we use their
software without a doubt.
I think I found the problem. It’s in the MayaBatch.py file used by Deadline. In GetStartFrameCommand/GetEndFrameCommand you can see that V-Ray is special cased (wrongly). I guess, this was to support old V-Ray versions where we didn’t use the standard defaultRenderGlobals. You can see that for most renderers this additional command is executed:
removeRenderLayerAdjustmentAndUnlock
This is used to break the overrides, so Deadline can change startFrame/endFrame, regardless of the active layer. If it’s not the active layer, Deadline will not change the frame and this is what happens. The issue is quite simple actually, I don’t know why the Thinkbox guys can’t find it… If you can freely edit MayaBatch.py, delete this line from GetStartFrameCommand/GetEndFrameCommand
elif self.Renderer == "vray" or self.Renderer == "vrayexport":
I see what you mean and I did what you said and it’s not working all the way. But I think there is more to it. Because we also have override in VRay → Global options/Global options - Advanced.
Sory, my solution was not quite right. You must use the execution path for mayahardware/mayahardware2/turtle/arnold, not the default one, i.e. try adding
or self.Renderer == "vray" or self.Renderer == "vrayexport"
to
elif self.Renderer == "mayavector" or self.Renderer == "mayahardware" or self.Renderer == "mayahardware2" or self.Renderer == "turtle" or self.Renderer == "arnold" or self.Renderer == "arnoldexport" or self.Renderer == "redshift"
I have been testing or self.Renderer == “vray” or self.Renderer == “vrayexport” add to MayaBatch at home with VRay License over VPN. And it seems to work on a single deadline slave
Tomorrow i will test it on the farm.
Just a note - It works when i disabling the “use MayaBatch” but this overheads the farm.