sanity checks for default Deadline?

Hi,

A couple of things have come up recently that might be good to have included in the default settings of the sanity script. They are specifically for 3ds max and Vray.

Firstly is a check for the Vfb to see if the render region btn is active - wasted a whole night rendering an ilke region! So get notified if no, and right click to turn off?

Secondly is similar but for the follow mouse render bucket button. I’m not sure that it will slow the render down, but when deadline rendering you dont need it on, so a warning its on, and right click to turn off would be nice.

I would make a custom sanity check, but I’ll be onest I have not got the foggiest how to! I’m sure the experts will do it in seconds.

Also on a slightly different note, (this related to times when you send a job that has “dont render final image” active ie rendering LC or IR multiframes etc) could the sanity check to see if the task render order drop down, under job tab is set to First to last (forward)? I keep forgetting to set it as I like to leave it on Every Nth, Then forward, and the IR precalc is not nice rendering in the wrong order!!! We got the two checks added for the re-starting renderer between tasks and task limit to 1 added and it has saved us a lot!!

Many thanks,
Mark

Unless you’re rendering to VRimage format it’s advisable to turn off the VFB when rendering through Deadline, this will get rid of those two issues for you.

It’s pretty simple to add custom sanity checks to your deadline.

Keep an eye on my blog, I’ve been writing simple guides to Maxscript and I’m going to write a post on how to write custom Sanity checks soon.

davewortley.wordpress.com

Hi Dave,

Yes your right about turning off the VFB, that will fix the first two issues. Feel a bit thick for not thinking of that! However, we do leave the VFB on so we can check the render visually with remote login, and that has allown saved us a lot of time in the past.

I’m pleased you think its an easy task to add the custom checks, and I would be most interested to see your blog about how to!

Say hi to Kyle Grace for me if you see him about the TJ studio!!

Many thanks,
Mark

You can run into issues with render elements not saving out correctly with the VRay VFB on, we always keep it off and have ‘Restart Renderer Between Frames’ on to avoid issues.

Nah I never see Kyle, he’s always outside having a cigerette :wink:

Interesting. Not had any issues so far thank goodness. Saving .exr’s with 12 odd elements usually.

We keep the restart renderer betweek frames on as well, except for pre calc’d IR’s etc.

Naughty Kyle, he does like to slowly kill himself! Maybe he’s looking to speed up the process!

I’ve managed to add a custom sanity check for frame rate as per the tutorial, but I have no idea how to add the other 3. Will have to wait advice from above when they wake up.

Mark

If you’re saving all your render elements within the exr file then you won’t have this VFB on issue.

arr ok cool. Yes saving just one multiframe exr with elements in.

Do you usually render each element as a seperate sequence? What format to do render to?

We’re having a debate at the moment whether it is better so save out EXRs with all elements included or separately, you get the advantages of having all elements inside one EXR for Nuke and Photoshop (with OpenEXR), but you sacrifice loading speeds especially with large files and/or a large number of render elements.

Be interesting to know what others find.

Our tests back when we were part of Prime Focus showed that it wasn’t a benefit when using Nuke, exactly the opposite. It was a performance killer and we always used separate output files. Also, a lot of the passes we saved had to be produced using different render jobs anyway - these weren’t straight render elements, but actual render passes using our internal pass manager, but could be done with RPM or State Sets too.
From data management POV this also allows you to render more passes than actually needed, and once the comp is set up and it is clear what is used and what not, get rid of all the extra data that won’t be used.
YMMV.

Yes we render to multilayer exr, and have been wondering for a while whether rendering each element as a sequence would be better, and the reasons Bobo gave are similar to what we have been thinking/wondering.

Dave, what formet do you render each element as, still a float exr? I am going to make some tests today if I have time before holidays next week to see if I can see benifets either way.

Nuke has been written around exr’s and I thought multilayer ones, so it really should be the best practice to use them, but I think you need some serious SSD raid locally on each comp machine to use them with any speed.

Bobo, any thoughts on the original 3 requests?

Mark

I did some additional checks for vray and deadline, and Bobo kindly amended my crappy maxscripting as well - search in this forum, should be here.

What sort of extra checks did you get added? I cant find the thread on a quick search.

Hi Dave,

Did you end up running any tests re: multichannel .exr and seperate sequences for each element?

Mark

No I trusted Bobo’s checks, he’s normally cleverer than me at that sort of thing.

Trying to open a multilayered EXR with openEXR in Photoshop takes ages if the file is any reasonable size.

I’m sure your not far behind! :slight_smile: But Bobo is good granted.

So do you render to .exr sequences for each ele? I guess through the split elements dialog?

Mark

Oh any chance someone can comment/help with my original request. I keep stupidly sending jobs off with bloody region left on!

Once again I find myself on the verge of snapping my wacom pen in half after submitting 3 jobs with the region render btn pressed! And I heard a couple other people do the same this morning!!! At least its not just me.

Could someone put us out our misery, and show how to add a custom sanity check for it?

Many thanks,
Mark

Is it the Region setting in the Render Scene Dialog or the VRay region area?

Hi Dave,

Its the Vray fb region render thats the issue. Never use the max native one.

Thanks,
Mark

Aha, well I did some digging to look into it, and since it’s something we should probably have in our sanity checker too, this is what I added. It’s not the most simple thing to explain how to add these to your existing Private Sanity checks,

Go to your Deadline repository\Submission\3dsmax and open SubmitMaxToDeadline_SanityCheck_Private.ms

Make a backup of it first!

In
struct SMTD_Private_SanityCheckFunctions
add this…

[code]fn CheckforVrayVFBRegion =
(
try(
theRenderClass = substring ((classof renderers.current) as string) 1 3
–print “checking vray vfb”
Case theRenderClass of
(
“V_R” : (
if (renderers.current.output_on) and vrayVFBGetRegionEnabled() then
false
else true
)
default: true
)
)
catch(true)

	)[/code]

In
struct SMTD_Private_RepairFunctions
add this

fn FixCheckforVrayVFBRegion = ( vrayVFBSetRegionEnabled false )

and in
SMTD_Private_SanityChecksToPerform = #(
add this

#(SMTD_Private_SanityCheckFunctions.CheckForVrayVFBRegion, #fix, "Vray Frame Buffer Region is on!", SMTD_Private_RepairFunctions.FixCheckforVrayVFBRegion, true)

Even as a seasoned Maxscript writer I struggled to get my head around how to add custom Sanity checks, here’s a quick breakdown of how it works. I’ve put two example functions as it’s very important you put the commas (,) in exactly where they are needed.

[code]struct SMTD_Private_SanityCheckFunctions
(
fn CheckFunctionA =
(
–check function A code
–if this function returns true then the check will have passed and you’ll get no warning
true
),
fn CheckFunctionB =
(
–check function B code
–if this function returns false the check will have failed and you’ll get a warning
false
)
)

struct SMTD_Private_RepairFunctions
(
fn FixFunctionA =
(
–code to fix check A
),
fn FixFunctionB =
(
–code to fix check B
)
)

SMTD_Private_SanityChecksToPerform = #(
–the format of these are… #(checkfunction from the SMTD_Private_SanityCheckFunctions struct, the type of warning, the text to go with the warning, the function to fix it, and the result needed to pass the test)
#(SMTD_Private_SanityCheckFunctions.CheckFunctionA, #warn, “Problem A!”, SMTD_Private_RepairFunctions.FixFunctionA, true),
#(SMTD_Private_SanityCheckFunctions.CheckFunctionB, #warn, “Problem B!”, SMTD_Private_RepairFunctions.FixFunctionB, true)
)[/code]

Make sure each function is wrapped in brackets and when adding a second or third function etc, that you always put the , in between the functions.

When you’ve added your check, save the file, restart the Submit to Deadline window and it should load taking slightly longer than normal while it copies over the updated script to your local machine. If you get an error message that means something in the script is wrong and it will default back to loading the old copy on your local machine.

Amazing, Ill try first thing tomorrow, I’m sure it will work, but I’ll let you know. Glad its something you can re-use too. If Kyle is allowed near computers nowadays he would like it!