Jul 082011

So a while ago I worked on a project that involved a lot of work in Fume and Krakatoa, both dynamics plugins for 3DSMax. I’m not a Max user at all, nor do I know a whole lot about dynamics, but I do know these plugins are a lot better than Maya’s nParticles and fluid systems.  We had a guy come in who wanted to do all the simulation using Max, but our studio is a Maya studio. We needed a way to get all of the animation data into Max, in world space.

I wrote hfMaya2MaxFBX to quickly bake out animation data and cameras and export it into the FBX format for use in Max. It’ll also work with Nuke in most cases, since Nuke can read FBX files.

The script is split into a procedure for baking transform animation and cameras, and another to bake skin deformations. Baking transform animation is easy… we make a locator for each animated transform, constrain the locator to it, bake all channels, then delete all incoming connections and keys on the original object and parent constrain it back to the locator. Then we bake THOSE channels. The result is a cheap way of moving all the animation into world space, so we can guarantee everything is in the right place.

Baking skins is a little different… we use geometry caches to handle skin deformation. However, we still need to make sure everything is in world space for this to work. The solution is a little heavy-handed but it works for everything but the heaviest scenes: duplicate the skin, move it to world space (unparent it), then wrap deform it to the original, and finally create a geometry cache. In order for the FBX exporter to package the mesh with the geometry cache, a Quick Select Set has to be created called “objectName_set”.

The whole process is a huge pain in the ass, but with this script it’s just a matter of waiting for everything to bake. Now you can spend all that extra time surfing Reddit doing better work!

Here’s the script: hfMaya2MaxFBX.mel (right click > Save As)

To run it, just source the script and then run:


Hope it’s useful!