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.
Great overview! Houdini sounds like a fascinating program … I see that they have a free personal learning edition for noobs like me to get their feet wet. Thanks for posting.
Great post Adam
I would add two more items :
-Digital Assets : the possibility to create highly sophisticated tools that can be distributed to less “technical” artists to produce powerful effects with little coding or knowledge of the bowels of Houdini
-Working with Music via the Chops context : Houdini is very powerful when it comes to music, it has the power of an audio editing program, and can easily be used to sync animation to music. Probably less useful for VFX work, but it is worth mentionning that it can also generate audio.
There is certainly more to be said, but those are the two things I’ve really into lately.
Maya seems to have picked up on digital assets recently, as well. I haven’t used them yet in that app. I wonder how they compare.
I have barely scratched the surface with chops, with the exception of using spring, lag, and timing chops. Haven’t played with sound at all yet, although I have some some really interesting pieces where people have driven some procedural animations through sound chops.
Thanks for mentioning those!
Great post, but I would want to clarify that Mantra isn’t a RenderMan compliant renderer. You can definitely say it’s inspired by RenderMan, but Mantra doesn’t implement the RenderMan API, nor does Mantra’s shading language match RenderMans’s SL exactly. They are very close, though. God, I’m a nerd.
Thanks, Alex! I really appreciate you clarifying that!
Thanks for this educational post! I’m a complete beginner when it comes to working with 3D. For the last month or so I’ve been dabbling with C4D and has had great results so far. Lovely interface and really easy to understand, however I’ll take the time to dwelve into Houdini’s Apprentice Edition. The entire concept of the package interests me greatly and this article was a turning point.
Great overview of the beast! It seems C4D and Houdini could be complementary – maybe the best partnership for the 2 companies, isn’t it?
Thank you for this post : useful!
What are thinking about new houdini engine for c4d? – http://www.maxon.net/products/houdini-integration/overview.html
I haven’t tried it with C4D, but I did give it a shot with Maya. It is going to be very useful for some tasks, but it will require a Houdini TD to smartly organize and create assets for it. There’ some issues in terms of the way UI elements translate from Houdini to other apps. For me, the main issue I had with it is that it seemed like it may not be possible to pass geometry attributes to shaders in the host applications. There’s a lot of shader work I do in houdini that is dependent on reading in attributes baked onto geometry. I think people will definitely get some use out of this, but I don’t see it as a major pipeline tool for most studios unless they have dedicated Houdini TDs there to customize assets and get them to work efficiently in the host app. I also thought that (in Maya specifically) the ability of the host app to display and process immense data sets from Houdini was not as smooth as working natively.
Thanks for info.
I made small feedback about current beta at sidefx forum – https://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&p=181918#181918
Anyway i still have positive view at solution