RenderMan allows Rib files to include references to external programs. These are run as required to create geometry as its needed by the renderer, rather than generating a whole load of potentially unnecessary geometry (which may be obscured or out of shot). Rather than writing these programs from scratch, HaRM (Houdini and RenderMan) acts as in intermediary between PRMan and hscript (text only houdini!). HaRM fires up hscript as its needed, and extracts the rib code from SOP's. This is particularly usefull if you're using level of detail, as the rib code can be generated for only the detail levels which are actually used.

To invoke HaRM you need to add the line:
Procedural "RunProgram" [ "harm" "xxx.hip /obj/geo1/font1 1" ] [ -10 10 -10 10 0.01 10 ]
to a Rib. This will run the enclosed program "harm" which extracts /obj/geo1/font1 from xxx.hip at frame 1. The following numbers are a bounding box for the object - you need to figure that out so that RenderMan can avoid loading the object if its not needed.

The source for harm, is pretty short, and it just begs to be extended. It currently runs a short hscript to extract geometry, but that could be extended to run arbitary scripts with any number of arguments passed from the Rib file to REALLY generate geometry on the fly. Consider a fleet of space ships, each procedurally generated, and attatched to particles - each particle invokes HaRM to create a new ship (each different), but only when (or if) that particle comes into view.

If you get the error "can't exec" make sure that the #define of HSCRIPT in harm.c points to where you keep hscript and that you've invoked houdini_setup so hscript can find it's libs (I've got an hscript script to handle setup and licensing, as described in the starting Houdini pages, but I've made a best guess in the compiled version of the code [which is for Irix]).

HaRM works fine for PRMan, but there seems to be some kind of problem when using BMRT, as it starts off the hscript, then hangs. I haven't had time to look at it yet. If anyone figures this out or has any other contributions please pass them back. I'd also love to know if anyone uses this on a particularly cool shot...

Download HaRM

Ian Stephenson.
DCT Systems
NCCA, Bournemouth University