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...
NCCA, Bournemouth University