This page offers a tutorial on how to set up V-Ray for Houdini to work with Deadline.
In this step-by-step walk-through, we show the process of setting up V-Ray for Houdini to work as part of a Deadline render farm.
A Windows 10 machine is used in this guide but the process is identical under Linux.
This setup uses Deadline version 10.0.9.4 which adds support for Houdini 17.5
This setup does not require a Houdini installation on the client machines.
Using V-Ray for Houdini through Hython
V-Ray is loaded in Houdini by specifying a list of environment variables pointing to the location of the V-Ray libraries.
Those environment variables are required regardless if Houdini is started in GUI or Batch mode, or through Python.
In simple terms, when a Deadline job is submitted through the Deadline ROP in Houdini, a hython script is executed and the connected Renderer ROPs are initiated. Thus, Deadline needs to be aware of the V-Ray setup when loading and rendering the submitted hip file.
This can accomplished by adding the V-Ray for Houdini environment variables in the JobPreLoad.py script which is sourced before the call to hython.
For more information on the JobPreLoad.py file, please check the following page from the Deadline manual: Render Environment.
Add the provided python file in your DeadlineRepository/plugins/Houdini folder. Feel free to modify it according to your setup.
The file contains four functions used to define the V-Ray for Houdini environment variables. Those are completely equivalent to the variables set up by the hfs.bat / hfs.sh files shipped with V-Ray.
The function above takes the path to the V-Ray for Houdini folder and the Houdini version to set up the environment.
Ideally, you would place V-Ray for Houdini on the network such that it's accessible by all Deadline Slaves, and provide the network path in place of "C:\vray_win".
Finally, enable the Limit Render Frames to Deadline Node option on the Deadline ROP.
Because V-Ray is not yet officially supported by Deadline, the settings on the V-Ray Renderer ROP may be read incorrectly, causing the entire Frame Range to be rendered instead of e.g. a single frame.