Meeting Houdini

· by Steve · Read in about 5 min · (1056 Words)

HoudiniNo, no, this has nothing to do with Hungarian blokes dangling upside down in straight jackets. Houdini is the name of a rather unusual modelling, animation and rendering tool that I’d heard of in passing before - a friend / former work colleague had used an academic version at university and was always extolling its virtues - but I’d never actually encountered it until this week. It’s not really talked about in real time graphics circles, unlike contemporaries like Max, Maya and XSI, but when you look at its rap sheet, you really wonder why it doesn’t get more attention in our field. In film, it’s absolutely huge - almost no film with a decent special effects budget is made without it, and it can happily name-drop at parties to the tune of The Matrix, Men In Black, the X-Men films, I Robot and countless others. And when you start to use it, you quickly see why.

Now, first some context - I’m not a modelling tool expert by any stretch of the imagination. My modelling creations are about as organic as a Citroen 2CV after an encounter with an angle grinder, and my animation repertoire includes a disturbingly high incidence of mathematical shapes which wiggle about in curiously similar way to those ridiculous dancing flower things. I call it pre-pre-pre-previs in movie effects terms - that’s that stage before the movie concept is even developed, and the cleaner has a go on a spare machine when no-one’s looking.

So what’s so great about Houdini? One word - procedural. In a curious way, it’s a programmers art tool, because it rewards logical thinking. Everything in Houdini is about combining operators into a network of functionality, to generate geometry, to control particles, to modify source data, to animate, everything. It’s a paragon of combinational complexity; individually its’ features are very, very simple - generate a mathematic shape here, pick a subset of elements from there, transform or deform this or that - but the beauty comes from the fact that everything can seemingly be connected to everything else, and there’s no end of what outputs can be inputs to something else. So you build up your creations incrementally as a ‘network’ of operator nodes, with each operator having a bunch of parameters and inputs and outputs. Visually it looks a little bit similar to the graphical shader editors you’ve seen in things like UnrealEd 3, and you might think that the combinational aspect sounds just like stacking operators in other tools like Max, but that resemblence is purely surface-level. The difference in Houdini is just how deep the concept goes. Literally every object can be dug into to expose an internal network of operators, and those networks don’t just have to be one point to one other point - they can branch & merge (allowing multiple possible paths, either for experimentation or for alternate ‘takes’), spit data out to other external networks, pull data back in from other networks or files, the list goes on. I think you have to use it to appreciate just how incredibly flexible it is. And hey, you can - Houdini Apprentice is free for non-commercial use if you want to play with it.

I’m using it this week because I’m writing an OGRE exporter for a client for whom it’s a key part of their workflow - and eventually it will be available to others too (details to be published later). It came up last year as a potential piece of work and I’m always up for learning new tools, but I did wonder at the time what the fuss was about - after all Houdini is quite a bit more expensive than the other alternatives (which already have exporters) so I initially wondered why just switching tools wouldn’t have been a better option. Having spent only a couple of days with Houdini, I can totally see why you would choose to lay out a premium for this particular tool. Whilst XSI still rules my heart when it comes to ‘regular’ modelling & animation tools, Houdini has turned my head to show me what else is out there, even though I know I can’t afford it. It’s worth experiencing at least once 😀

The only letdown for me is the SDK. Softimage has a lot to teach SideFX about how to present and document an SDK - Houdini’s is both massive and really poorly documented, honestly one of the worst documentation-to-mass ratios I’ve come across. Luckily the client I’m writing this for has a support agreement so I can ask the Houdini support guys direct, and they’ve been extremely helpful - without them I’d be completely lost I’m sure. But it’s still a shame because I now have a love/hate relationship with Houdini - love using it, hate trying to figure out what undocumented method number 10,360 might actually do. Still, I guess you can’t have everything. 😀

On a final note, there was quite an ironic turn when I came to realise what Houdini actually did, and did very well. I’ve mentioned that I’ve had a level editing tool in my head for a while, that I’d really like to work on when I get the chance, something a little different to what’s out there now. Well, there are several significant cornerstones to that idea, each of which is (I think) pretty unique for a tool of that nature. But interestingly, one of those cornerstones was procedural modelling & refinement - and I was thinking of operator networks just like I now see in Houdini. I wasn’t thinking for a minute that this idea had never been done before, I just had never seen it in a level editor so figured it could be useful (and crucially it combines really well with the other cornerstones of the design concept). Now I see in front of me evidence that if it’s done well, it can be awesome. I’m not sure I would (or could!) go quite to the degree Houdini does, but to be able to see it in action, and experience where and why it’s worked well and what bits I especially like is a fantastic crystallisation of some of my formative ideas. It will certainly influence me if / when I find the time to work on this project.