Why Houdini

I get a lot of Cinema 4D users coming to my blog who don’t know much about Houdini and ask me how it compares to Cinema 4D. So, I thought it might make a nice blog post to talk about Houdini – and to mention why I am doing more and more work in Houdini these days whenever possible.

First, the general question is “What is Houdini?” Well, Houdini is a 3D package. It does everything you would expect from a 3D package – modeling, rendering, animation… It also has a fairly basic compositor in it. Houdini’s strengths are twofold. First, it has fantastic dynamics and particles – probably the best in the industry. The dynamics are not necessarily the fastest – but they are the most flexible. You can literally deconstruct the solvers and build them back up again to change their functionality. You can even create your own solvers or implement 3rd party solvers like Bullet into the app with some technical know-how. Also, the dynamics are fully integrated. Cloth and rigid bodies can affect each other. Gasses and fluids can push particles and rigid bodies. As far as dynamics go, you have rigid bodies, cloth (softbodies), wires, fluids (SPH, FLIP, and Voxel), gasses, and particles.

The other big strength of Houdini is its proceduralism. The entire application is built on the idea that you do not necessarily create things, but you create systems for creating things. For example, you might not just model a chair (although you easily can), but create a system for making chairs. This would allow you to have user controls for many aspects of the chair, such as number of legs, height of the chair, style of chair back, height of chair back, etc. The model is not set in stone, but can be continually changed by the end user. For modeling, many people may not see this as an important feature, but when it comes to doing fx work and simulations it is very important. For example, if you were to destroy a cube, you would want to prefracture the cube. But what if you went through several iterations of animation and you decided the fracturing wasn’t really what you wanted or needed. In another program you would have have to start from scratch, including setting up all your constraints and settings, but in Houdini you just change the fracturing node and the entire dynamics network updates. This brings me to another good point. Houdini is unlike other 3D packages in that the entire app is node-based. So, you can easily wire the output from one node into several other nodes to create a complex systems. Of course, maya has this under the hood – and you can access the node tree – but it is not as easy to deal with as Houdini.

One important and very powerful feature of Houdini is how data is stored and passed through the program. Data is stored in attributes that the user has full access to – and you can use those attributes almost anywhere in the program. You can even create your own attributes. For example, you might create an attribute on your geometry for “stiffness” if you are doing a cloth simulation. You can access this attribute across all parts of the program, not just the dynamics network. You could, for instance, create a shader that reads in this attribute and acts accordingly in some fashion. Or read in point velocity or acceleration and do “something” with that data. Managing data and having access to low level parts of the program is an incredibly useful way to create effects.

The render engine that comes with Houdini is Mantra. Houdini can use Mental Ray and Renderman, but you would have to set those up yourself. Mantra is a renderman compliant render engine. It is very powerful. It has most of the things you would expect from a render engine – Global Illumination, Volume Rendering, Area Shadows, Ambient Occlusion, Subsurface Scattering, etc. Because it is renderman compliant, it also supports things like point and curve rendering, delayed loads, geometry switching and instancing, etc. Mantra’s strength is in handling lots of data. It does not perform well for simple scenes. For instance, doing a fantastic render of an apple on a table would be a bit of a chore to do in Mantra, compared with Vray or C4D’s default render engine. However, try to render 12 million apples and you will see how well Mantra can handle it. Mantra also supports 3D cameras with full depth of field and motion blur. You can render deep shadows, you can export full 32bit depth passes, multichannel exrs, 16 or 32 bit float tiffs, or Houdini’s .pic format, which acts a lot like multichannel exr (but unfortunately is not compatible with After Effects).

The shader building is unlike every other program. There are default materials that are built and that the user can work with, but you can also create your own shaders from scratch. This is done through a node-based material creation system. To create materials you need to understand a bit of what happens behind the scenes of a 3D render. For instance, if you are going to include an alpha channel you will have to know how to premultiply your color information… This is not set up by default. Basically, SideFX assumes you know something about shader writing or have had renderman experience. But, being able to create your shaders from scratch allows you to make some very complex materials, as the shaders can access attributes from the geometry level and perform some operation on them in shader context.

Many people may see some demos of Houdini and notice a lot of expressions or formulas being used. Being able to write expressions is a big part of using the program – especially if you want to begin doing more complicated work. The expressions generally are not that hard to learn. Most of the time only basic math is used. When getting into particle effects it is helpful to understand trigonometry and geometry. You’ll need to understand vectors, dot products, cross products, etc. So, there is a bit of math, yes… But you would be expected to know this in almost any particle simulation package. Because, really, only part of the time are you doing things that can be done out of the box. Simulations generally need to be customized for every setup or effect beyond the most basic ones.

When to use Houdini:

Houdini is not the be all and end of of computer applications. Unless you need proceduralism, I would discourage modeling in Houdini. For simple beauty renders, I would also discourage using Houdini. For complex simulations, particles, data visualization, heavy geometry (like realflow fluids), and effects work, I would highly encourage Houdini.