Rhino error suppression

Hi,

We run into consistent problems with errors from our rhino vray license server leading to stalled (failed) renderings. This has effectively made rendering on the farm with vray for rhino pointless. Very frustrating!

Is there any hope for adding error suppression to deadline for rhino as is the case with 3ds max? The vray rhino license server is a very poor piece of software (putting it politely) and regularly states it does not see the license server despite the fact it still allows rendering after clicking through the prompts. In a render node environment, the prompts are a deal breaker.

thanks,

Jeremy Ficca
School of Architecture
Carnegie Mellon University

Hi Jeremy,

In Deadline 5, we will be moving away from Rhino’s ActiveX control and instead start using it’s command line capabilities. This change will allow the popup handling to work for the Rhino plugin (for some reason, these popups can’t be detected when using the ActiveX control).

Deadline 5 should be released in a couple of weeks. Unfortunately there is no workaround for Deadline 4.

Cheers,

  • Ryan

Hi Ryan,

Thanks for the quick reply. Sounds promising! So, if I understand correctly, error suppression for Rhino will be implemented in Deadline 5?

thanks!
Jeremy

That’s correct!

Not quite the same problem but in the same vein of error handling and Rhino. With Deadline 5.0, if a user submits a local Rhino file, e.g. “C:\Users…”, the job is taken and added to the Repository queue but when it’s distributed to a Slave Rhino displays a pop-up indicating that it can’t find the file. The Deadline error handler (in rhino.py?) looks like it clicks through this (“self.AddPopupHandler( r"Rhinoceros 4.0”, “No;OK” )") but that leaves Rhino with “Nothing to render” displayed in its command line, a situation that the Slave can’t respond to so the task sits waiting while appearing in Monitor to continue to render. Is this something where we could just add an additional error-checking step in rhino.py, parsing the sceneFilename for local drive letters and then using syntax like FailRender, earlier in rhino.py, to pass some message back and terminate the job? We’re working with students, and would like to make this available in as much of a self-service model as we can, so we’re trying to figure out how they are likely to break it (e.g. – they’re not generally big on reading instructions) and whether we can head that off.

Bill Manspeaker
Taubman College of Architecture and Urban Planning
University of Michigan

Hi Bill,

Thanks for reporting this!

Attached is an updated Rhino plugin script that will check if the scene file’s exists and fail the render with a meaningful error message if it does not. To install it, go to \your\repository\plugins\Rhino and make a backup copy of Rhino.py, just in case. Then unzip the attached file to the same folder.

If you open the new Rhino.py file, you’ll see that we check for the scene file in the PreRenderTasks function.

Give it a try and let us know if there are any issues.

Cheers,

  • Ryan

FYI - attachment is missing

Thanks Mike! :blush:

I blame Monday…
Rhino.zip (1.4 KB)

The script does report the error in the logs:

Exception during render: An error occurred in RenderTasks(): Error in PreRenderTasks(): The Rhino scene file cannot be found. It wasn’t submitted with the job, so it needs to be in a locationthat is accessible to all Slaves. The scene file path is “C:\Documents and Settings\Administrator\My Documents\Rhino test files\Cubewithservermaterial.3dm”.
at Deadline.Plugins.ScriptPlugin.RenderTasks(Int32 startFrame, Int32 endFrame, String& outMessage)

but isn’t able to stop the job. It looks like the script keeps processing and the error that’s thrown essentially functions as a “failed but try again” kind of error, so it continues to loop through re-submissions:

=======================================================
Slave Log

0: Task timeout is disabled.
0: Loaded job: Cubewithservermaterial.3dm (999_050_999_54c0077a)
0: INFO: StartJob: initializing script plugin Rhino

0: INFO: About: Rhino Plugin for Deadline
0: Plugin rendering frame(s): 0

=======================================================
Error Type

RenderPluginException

=======================================================
Error Stack Trace

at Deadline.Plugins.Plugin.RenderTask(Int32 startFrame, Int32 endFrame)
at Deadline.Slaves.SlaveRenderThread.RenderCurrentTask(TaskLogWriter tlw)

Ah, you want to fail the job immediately when this error is detected, right? Unfortunately at the moment, Deadline treats all errors the same - it requeues the task so that another machine can attempt it. You can limit the number of errors a job can generate by setting up Jobs: Failure Detection in the Repository Options:
thinkboxsoftware.com/deadlin … ions/#Jobs

Would that work for you in this situation?

Cheers,

  • Ryan

Yes, that’s workable. Thanks.

We added some additional code to the rhino.py file to try to simplify the use of materials when rendering with V-Ray for Rhino. We keep a library of materials on a server which we make available to students in various forms that they can copy to their machines and use in their files. With the modifications, when the Slave gets a job there’s a section in rhino.py that tests if the renderer is “V-Ray for Rhino” and, if it is, imports (-visLoadVismat) a dummy material from the server library as part of the Rhino runscript that’s built. This adds the server location to V-Ray’s search path for all materials in the file so that even if the original locations were “C:\Users\MyRhinoMaterials…” the materials will be found on the server if they are there (ie. as long as their .vismat filenames match; it won’t work for materials that didn’t come from the server set or, as sometimes happens, are just bad Rhino material files where the .vismat doesn’t point to the right .jpg file names). With this we think we’ll have fewer errors from students about missing materials and generally reduce the complexity of using materials in a renderfarm environment. Students with the Deadline Toolbar installed would just need to have the Repository mounted, then they would enter an Output file name, choose the V-Ray for Rhino renderer, select “Submit the Rhino scene file”, and Submit.