[Sidefx-houdini-list] mantra "clusterThis" procedural geometry DSO

Mark Story mstory at xion.org
Tue Oct 7 16:51:57 EDT 2008


I'm pleased to release the first version of the Houdini/mantra 
"clusterThis" geometry/volume instancer.  The DSO will create instances 
of primitives for each point of the incoming geometry and be "displaced" 
around the point based on a number of user parameters and methods.

The project is an open source project and will also be on the source 
forge odforce site for other developers to contribute if they would 
like.  And the project is also going to be a teaching project for 
students attending workshops at Digital Cinema Arts and soon will end up 
as a robust, production worthy tool (one of several tools we plan to 
build to teach with *and* to use in production).  Ever since I was on 
"Surf's Up" I've been wanting to write a few render time plugins, 
especially seeing how much the prman "cluster" DSO added to the detail 
of some those shots, and it seemed to be an easy application of a simple 
idea.  Fun stuff mon!

The current state of the code is juat the basic structure to get the 
project started, very simple algorithms for now ... and there's 
definitely bugs!  Use at our own risk!  The nose generator is right out 
of the HDK toolkit, nothing else used yet.  Soon I will have the CVEX 
functionality then you'll be able to use standard VEX code for 
processing the instanced objects. Truthfully, I've been having so much 
fun with it I've been a bit tardy in getting code released, so I know a 
few more features are implemented there will be good fun for all.

Keep in mind this is a geometry instancer, it merely off loads the 
creation of geometry until render time, so keep an eye on memory usage. 
  Future projects will include some shaders that will do similar kinds 
of things but of course limited to what can be done with just shaders 
... the two tools together will give an artist a lot of capability for 
managing complex detail.

The current version is for mantra only but my plan is to generalize the 
project appropriatley (through proper design) to provide multi renderer 
support,  mental ray, 3Delight and others are on the future list for 

We have a small team of programmers to work on the project, any 
contributions, suggestions from the Houdini community are always 
welcome.  DCA will "drive" the project as it's intended first and 
foremost as a "teaching project", but of course we want it to be part of 
the ever growing Houdini community tool set.

Here's the web page where you can download the code, DSO/DLL (and yes, 
there's a mac OSX version!), and see some example pics/movies as we test 
and develop the project:

(please excuse the web site's condition ... it's in the process of a 
badly needed face lift ...)

I also have a little utility SOP to allow the setting of a number of 
point attribute in one SOP (I got tired of chains of AttributeCreate 
SOPs) but the local variable support isn't done yet, it will be in the 
next release.  Here's the web page in case you find it useful as it is 
(I do).

Point attribute SOP:

And, here's a more or less complete list of current and planned features 
for this project.  The docs, web page, examples, and of course the code, 
will be updated quite regularly, check back often.

(*) features coming soon

# Instance a variety of geometry primitives (sphere, cube, grid, circle, 
tube, curve (*), and BGEO file (*))
# Copy point attributes to the instanced geometry
# "Recursive" point generation to displace the instanced geometry 
"about" the position of the incoming point's position.
# Noise generator for additional displacement data
# Attribute driven behavior (pscale, speed stretching, etc.) and 
blending (via CVEX (*))
# CVEX processing (*)
# Application of volumetric modulation data.  (*)
# Multi render pass optimizations  (almost there, will be in next 
release) (*)
# Motion blur (almost there, will be in next release) (*)
# Volumes instancing
# CVEX processing (*)
# More sophisticated noise/filter functions (fBm, gaussian, bezel, 
impulse, butterworth, sinc) (*)
# Lacunarity and true fractalization (*)
# "RiPoints" instancing (*)
# RIB output (already there, just need interface change) (*)
# Proper primitive/point attribute blending/processing (CVEX *)
# Read volumetric data files and use for modulation of instanced 
geometry and attribute processing (DT grids). (*)
# Optimizations of all kinds (especially when generating deep shadow 
passes) (*)
# Velocity/Force stretching the prims and blending/interpolating the 
attributes (*)
# Primitive selection from point attribute (prim_type) (*)

Please send bug reports, questions, feature requests to me at 
mstory at xion.org.


More information about the Sidefx-houdini-list mailing list