Workflow comparison of fracturing and rigid body simulations. Maya vs Houdini

Hey guys. This should possibly be in my Learning Houdini thread since it’s come out of my experiences with Houdini. However, I think this deserves it’s own thread.

I’ve written a short article (lots of pictures!) where I compare workflows between Maya with the PDI plugin and Houdini. The workflow in question is Fracturing an object and simulating it with a specific result in mind.

I hope you enjoy it and let me know if there is something I should change with it.

Click Me!

Curses. I wrote a reply but it seems to have gone with e server change over. I’ll try and remember what I wrote/ asked.

Firstly, thanks for writing that up. It’s interesting to see side by side comparisons.

I’d like to see a comparison with Rayfire in Max too for completeness. I’ll try and do one myself if I get a chance. I suspect it’ll be somewhere between the two. It’s not 100% procedural, so dropping in a new model isn’t seamless, but the fragmentation can be dynamically generated so that smooths things a bit.

A few questions about the post.

  1. What’s PDI? Not being a Maya user, that means nothing to me. Is that a built in thing? A free plugin? Pay for? A link and description would help.

  2. What’s going on with the normals in the Houdini scene? Is everything being smoothed just a display option? I assume it’s generating normals/ sharp edges on the fragmentation, or it wouldn’t be much use, but it’s not clear.

  3. What about UVs and materials for the fractured surfaces? I can see Maya is applying a new material, but I’m not sure if either are generating UVs. This is quite important. Rayfire box maps the new faces, but if they’re at an acute angle they come out pretty streaky.

  4. Are the new faces pre-selected, or in a selection set or otherwise easily selected. This is more of an issue if the new polys don’t have a material or some other way to easily get a selection. I’ve had to remap the internal faces a few times with Rayfire (due to the above streakiness or map scale) and it’s definitely useful to be able to easily grab all the polys at once.

Thanks again.

You’re very welcome :slight_smile:
I haven’t worked with Rayfire, and I haven’t touched Max in a while so go for it :slight_smile: The more info available the better!

  1. PDI stands for PullDownIt. It’s a plugin you buy from Thinkinetic. It’s way better than Mayas built in and seems to be quite common in mayabased game companies. The plugin is also available for Max. You can read about it here: http://www.thinkinetic.com/

  2. Houdini went a bit mental with the imported OBJ. I don’t know Houdini well enough to know if it there’s just a tickbox on the import node. If not, there is a node that fixes it for you.

  3. They both geneate inside surfaces with some kind of UVs. I’m not sure how they are generated but they are “good enough for rubble”.

  4. Mayas are selectable through the material. (Select all by Material, then deselect the faces of the pieces you don’t want to change.)
    Houdini gives you groups with them in. You can then specify if you want to apply the rest of your nodes (fix normals,UVs, extrude faces and so on) on the insides, outsides or the full piece.

I’m glad you liked it :slight_smile:

Thanks for your answers Demno. Much clearer.

I tried out a similar scene in Rayfire and it was pretty simple to get working. Normally I’d pre-fragment the objects as in your case, but since I knew I’d be replacing the geometry (which of course I wouldn’t in the real world, so that’s slightly cheating) I let Rayfire handle the fragmentation itself. I let it fragment with an iteration of 2 and a small delay to prevent both happening at once. Then I just ran it. The object fell, collided with the sphere, fragmented into large pieces, they fell, collided with the floor and fragmented again.

I made sure to UV and set up materials for my object to make sure those areas were covered.

Worked out pretty well. Not procedural as such, but close to.

Then the important bit. I deleted the fragmentation (rayfire stores the original and fragments a clone). Used the standard Max File>Replace option to bring in the new mesh. This keeps the node and all its properties intact, but just replaces the geometry. The object was still in the Rayfire dynamic object list (even if it wasn’t , the options are all still stored and you can just drop the new object into the dynamic object list), so all I had to do was re-run the sim and the new object fragmented on both contacts as before with no messing about.

In reality I wouldn’t do this as most of my scenes have at least an element of manual fragmentation (metal components, beams, breaking up constructed materials on natural weak points and joints) and it’s rare for it to be suitable for the automatic fragmentation.

I did have a few problems. We use metres and PhysX has a few bugs in where small objects can cause it to crash. This happened on two occasions, but tweaking some of the fragmentation options to prevent too small fragments sorted that out. I also had some objects ping off at high speed. This is again a common issue with metres and PhysX. ddly increasing the substeps made it worse. Normally I’d just keep tweaking things until it played smoothly.

I was surprised the replace trick worked so smoothly. I’ve never really done that before. Most of the time I’d have to break the new model up again myself and there’d be a lot of re-work. But that’s not the fault of the tool, it’s just the sort of objects I work with.

So yeah, a simpler scene than I’d normally have and a few tricks I wouldn’t normally use, but worked really quite well. Maybe not as procedural as Houdini, but easier to change than Maya with PDI from your description.

For me the tricky bit comes where we need to include deforming geometry in the sim. Rayfire isn’t set up for that really. I’d be keen to see how you’d handle something like having rubble fall on a car.

What do you mean? If I have a car animation that’s set to act as a rigid body it would interact wit the new object just the same. The sim doesn’t stay baked, if you change the object it resims as soon as you hit play.

Sorry I wasn’t talking about it in relation to updating animations. I was speculating more on how to handle deforming geometry as part of the physics sim. So if I wanted a pile of rubble to fall on a car and deform it, how would you go about that with either of your options? I can’t do this with Rayfire, I have to do a second sim using something like PhysX constraints using the result of the Rayfire sim as kinematic objects pushing on a car proxy made up of PhysX constrained boxes. Not a great solution so I’m looking for something easier to do a similar job.

Have you tried rigging/exporting from Houdini into your engine? With PDI/Maya I made a useful script that does this automatically, I’ve never played with bones in Houdini.

Robin, ah gotcha. I don’t think I’ve ever done such a detailed deformation. I usually have that set up with simple geometry and keyframes. It would be interesting to try though…

With PDI I believe I would have to parent a deformation object to the shard that would hit the car. I’d have to double check though, it’s been a while.
Haven’t done deformation in houdini at all. I’ll get back to you on that :smiley:

Mathes, I haven’t tried it. I’m just starting to learn Houdini. For PDI I set up a script that did: Bake keys on shard, Parent bone to shard, bake keys on bone, remove keys on shard, Parent shard to bone, Parent bone to main rig. Since this is pretty straight forward I can imagine it would be possible to set up procedurally in Houdini. If not, you could always script it there as well. However, I don’t know what export formats and so on are available in Houdini so I would probably leave that whole thing to a TA.

Exporting shouldn’t really be a big deal. Worst case is you export the animated result back to your authoring app and export it from there. If you got it in, through FBX for example it should come out, but with keyframes. Just import it to maya and export as usual. Doesn’t matter how those keyframes got there.

Yes it’s less automated than exporting directly, but there might be other things you need from the authoring app, like custom attributes or some game data setup.