About Music Bar Jam 2003 Bar Jam 2004 Graphics DIY Misc  
Contact   Tracks   Live at the CCA   Studio and Services    Tracks     Tracks     Photography   Digital Images   Video  Houdini    Electronics   Model boats   Music    Contact   Links   
   

The Houdini Diary

This page documents my exploration of Houdini. Thanks to my background in computer graphics I am well aware of what is going on under the hood of a modern 3D animation and rendering software package, yet I have limited experience on actually using those tools short of fixing bits and pieces in Maya for later export to real-time visualisation tools such as VEGA Prime.

Date
Task

Comment Media
30/8/2008
Intro
Paula tells me about Houdini and how her company is using it. As a SIGGRAPH regular, I have heard of the software, but never bothered to take a closer look. That's about to change...  
1/9/2008
Getting the software
SideFX, the company behind Houdini, offers a number of different versions of Houdini for purchase - at the usual rates that tend to be slightly above the hobbyist level. Luckily, they also provide an "Apprentice" version, which is pretty much the full blown version but limited to non-commercial use and PAL rendering resolution, minus export capabilities. The price? Null, nada, zero. This is great for a version that offers a lot more functionality than the usual demo versions. For $100 more, you get the Apprentice HD version, enabling rendering at even higher resolutions and without the watermark. This is by far the best deal I've ever seen for an animation package of that magnitude for a hobbyist, it easily beats all academic pricing schemes I've seen elsewhere.  

3/9/2008
The Procedural Temple

The first project is shaping up. Houdini's strength is its highly structured and procedural approach. People coming from the Maya / 3DS camp might not exactly feel comfortable with Houdini, but as computer scientist I feel immediately at home. So my first project is a greek temple model. But not just a model, but a generic parametrised model. Parameters include the various measurements (length, width, height, height of roof, offsets etc.) and construction detail (number of columns, etc.).
I could have implemented an automatic model generation tool using MEL in Maya, but I doubt I would managed that quickly, especially not if the parameters should be driven by animation curves later on...
So two evenings later, I have a Houdini Asset that generates a temple model and is fully parameterisable. I'm already in love with Houdini.

 
6/9/2008
Animating the Temple

It's saturday afternoon, I have a bit of spare time. Time to add some life into the temple asset. Animating the asset turns out to be trivial. Just set key frames for the parameters, that's it. Defining the animation took less than an hour, and rendering it out was surprisingly quick. Admittedly, the animation won't win any prizes for artistic content, but it demonstrates the point.

The exercise brought some interesting revelations:
1) A parameters defined as "int" behaves exactly like a floating point number during animation. Rounding code was therefore necessary to make my columns "pop" into position instead of smoothly shifting around... An int is a float - erm, yes, I have to get used to that...
2) Shadow maps rendered with Houdini Apprentice also include the watermark... Erm, no, that's not a good idea - Ray traced shadows it is, then...

Temple
Temple animation
8/9/2008
Poser animations

The temple needs some life inside. So the next task is to establish the link between Poser 7 and Houdini. Poser exports animations as a sequence of geometry files, one for each frame. The format understood by both apps is OBJ. Collada would have been nicer, but Poser 7 doesn't export animation data there, a limitation of the beta exporter I used (time to check out the latest updates, I guess...).

Several issues surface here:
1) Houdini does not import any material definitions from OBJ files. This is pain number one.
2) Poser does not export objects for every body part, even if they use different materials. This pain number two.

Material definitions are only imported for collada files, but I can't use that path. In any case, textures are ignored - although they'd be simple enough to fix later. Instead I have to assign materials manually to groups. Issue 2) further complicates things: I have to split the objects into the individual material components. The eyes, for example, consist of the eyeball and the iris, yet they are exported as one group only. Similarly, eyelashes are part of the face group. It took a bit of struggling to find a reasonably elegant solution to identify the parts, but I eventually managed.

Above I mentioned animations. Houdini made importing the sequences of OBJ files extremely simple: There's nothing needed to do - it automatically loads the next geometry for the next frame. Thanks to the procedural approach to applying materials and identifying the groups, I only have to define the workflow for a single instance of the geometry, materials are the assigned to the following frames automatically. I love this.

The exercise also revealed some issues in Poser. The automated walk tool is cool, but the results are not beyond some doubt. Luckily, my goal is to learn about the process, not generate the next great animation...

Structure
Shading network

Jessi Walking
Walk animation

11/9/2008
Fixing materials

Until now, I used just the very basic materials for the figure: Phong shading plus texture. But that doesn't get one very far. Eyelashes, for example, have a separate alpha file. So, which shader to choose (short of writing my own). I tried the "VEX Super material" ubershader, but for some reason the texture coordinates for alpha don't work with the obj model. So I settled on the FBX shader that approximates the Maya default shader network to a good extent. All in all, it took a bit of fiddling around, but the shader works so far - until I enable the bump map, which overall works nicely, but has a few singularities where the normals go crazy. Ugh.

Bump issues
Bump map issues
13/9/2008
Lighting
It was now time to get the Poser animation into the temple environment. While I gave up on the bump map for the meantime, I soon figured that the FBX shader has some other issues: It does not react to either light intensity or colour. Fixing a couple lines of code in the shader corrected that, but of course I buggered up the parameter interface in the course. Maybe some day I should read a manual. At least I now feel confident enough to fix a shader when I have to - at some point I'll have to add proper texture filtering for the bump map.

In temple
Walking V1

14/9/2008
Improving the animation

The Poser animation clearly needs improvement, and I also managed to mess up the shader parameter interface. Still work in progress, but the walking path now looks a bit better after tweaking the Poser interface, and I seem to have fixed the shader for the moment. Changing the animation in poser also changed the order of primitives in the obj file, so the identification code for the elements has become slightly more sophisticated. I missed the indicator for balance and target, so it looks as if there were some mice running around. I can fix that another time...

The overall atmosphere has also profited a lot from optimizing the lighting - not finished yet, it's still too much of an incandescent lighting style instead of torches, and too bright in general. There isn't much of a story there - but hey, I'm a software engineer, not an artist... ;-)

Temple walk
4/10/2008
Populating the temple

Over the last few days, I've populated the temple with additional props. Just adding a few props to the temple make a big difference, it suddenly looks a lot less artificial. Lighting has been optimised as well, with intensities being modulated by a noise function to make it all look a bit more like torches.

Rendering out the animation has become a bit of a pain. Although I optimised the materials (no reflections - ray-tracing seems awfully slow on Houdini, and the visual difference on the objects was minimal), it still takes quite some time to render, but the bigger issue now is stability, Houdini crashes after a few hundred frames on this scene. Oh well...

That concludes the Temple series for the time being.