Hou Farm: Deadline Submission Tool For Houdini
I’ve released a new tool for Houdini imaginatively named Hou Farm that provides a more convenient workflow for submitting jobs to Deadline. You can find the project on Github: https://github.com/fxnut/hou_farm
The main reason for writing it was to get away from the monolithic submission form that Thinkbox provide. While fully featured, the submitter from Thinkbox does suffer from presenting too much information to the user and isn’t able to remember job submission settings on a per ROP node basis meaning that you need to manually retype the submission settings each time.
Hou Farm works by patching existing ROP nodes using a shelf tool. It respects simple dependencies between ROP nodes by looking at their connection tree.
Here are screenshots of the interface for the Mantra node:
Note that the Deadline submission settings are all stored under a new parameter folder, leaving the original ROP parameters untouched. This means that Hou Farm will easily work across multiple versions of Houdini without having to manage Digital Asset compatibility.
These screenshots show the IFD and Mantra tabs when the “Advanced” folders are opened:
At the moment, this tool only supports Deadline but it can potentially be expanded to support other render farms too. Platform-wise, it was developed and tested under Windows, but there’s no reason it can’t work under Linux or OSX, albeit I suspect, with a bit of tweaking.
For more information, I’ve copied in the contents of the project’s readme.md file below.
Do away with the cluttered and over-complicated submission dialog. Instead, it places all the submission settings on the ROP nodes. This saves having to remember the settings for each ROP task that you submit to the farm.
Hides many of the less common Deadline settings under an Advanced section (hidden by default)
Supports the following ROPs (not all fully tested yet, although they should be fine):
Geometry ROP (and SOP version)
IFD Archive ROP
Respects simple dependency indicated by ROP tree network. Creates jobs on a ROP by ROP basis, and does not split into individual frame dependencies.
Allows submission of:
Nodes above the submitted ROP node
The entire connected ROP tree.
Shelf tool patches existing ROP nodes with settings. No custom nodes
Deadline interface for the nodes is built on the fly from config file. Easy to reuse parameter layouts and add new nodes.
Allows you to split tasks into N chunks, or automatically calculate number of chunks based on number of frames.
Performs validation of ROP nodes before submission and reports errors and warnings. For example, it catches common errors such as:
Disabled IFD export
Using default IFD path
Missing specified Deadline pool
Camera background image enabled
Graceful fallback should Hou Farm or Deadline not be present on the system. Won’t break your scene or generate annoying errors.
Allows you to develop/test Hou Farm without Deadline installed by defining HOUFARM_VIRTUAL_DEADLINE in the environment.
Open hou_farm_example.env and copy the lines into your own $HOME/houdini/XX.Y/houdini.env file.
Change the HOUFARM environment variable to point to the location of the hou_farm module.
Add the hou_farm shelf to your toolbar at the top by clicking on the + button and selecting Shelves > Hou Farm.
Now that Hou Farm is installed you should be able to select ROPs in the network view and use the Hou Farm “Patch” shelf tool to add the settings to the ROPs.
Patching a node puts all existing parameters under a top-level folder, and creates a new folder called Deadline where you can find all the submission settings.
When you first do this in a session of Houdini, Hou Farm will cache the Deadline pools and groups to save having to re-interrogate the Deadline database everytime you select a new node. If you need to update the lists, then go to the Settings tab and click on “Refresh Pools/Groups”.
Once you’re happy with the settings, just click on the appropriate Submit button to send the scene to the farm.
Better usage documentation
Provide checkboxes to allow validation tests to be enabled/disabled.
Add support for custom validation python code.
Support Fetch ROP
Add Wedge functionality (possibly through custom ROP rather than existing Wedge ROP)
Only tested on Windows so far. In theory, it should work fine on Linux and OSX, although I’m sure there’ll be some fixes required.
Mostly written in a functional style, and relatively little OOP. This was done mainly because I’ve been using OOP for a long time and after working on a pure C project, I wanted to experiment with seeing how necessary OOP actually is. Sometimes OOP just gets in the way. May decide at some point to rework some of this into classes to reduce code bloat.
Hou Farm was written to potentially expand to support other farm software. It would still need a lot of factorisation for better reuse of much of the Deadline code.
There’s a makefile for generating code documentation using Sphinx in the docs folder.