Houdini Voxels to the Rescue!
Diary of an Indie Game Developer: Chapter 62
This week, while working on a new asset for my game, I ran into a rather interesting problem.
The asset I’m working on is made up of lots of SubTools, with several Live Booleans, and when it came time to boolean everything into a single object, I started getting errors:

I went through all my SubTools and ran a MeshIntegrity check on each one. Turned out one of them was pretty messed up:


Clicking “Fix Mesh” under MeshIntegrity didn’t solve the problem, so I tried everything else I could think of to fix it. It’s a DynaMesh object, so first up, I tried re-DynaMeshing it. Then, I tried ZRemeshing it. Last but not least, I tried Decimating it. Nothing helped. Everything I tried produced corrupt meshes, and as a result, I couldn’t boolean everything together.
So… I brought it into Houdini and voxelized it!
Just in case anyone out there ever runs into a similar problem, and if you’re not familiar with Houdini’s voxels, I thought I’d share this simple solution:

In the screenshot above, you see a simple 3 node setup in Houdini. First up is “file1” which is a node that lets you import files. Next is “sop_voxelmesh1”, and last but not least is “rop_fbx1” which is a node that lets you export stuff out in FBX format.
“sop_voxelmesh1” is a Houdini VoxelMesh node, and that’s the one we’re interested in. It takes whatever you plug into it and generates a mesh with nice clean topology shrink wrapped to the silhouette of the source. The VoxelMesh node has a number of parameters that allow you to control how the mesh is generated, as well as its resolution. Here are a couple of short videos that provide a nice overview of how it works:
When I replaced my corrupt ZBrush mesh with the voxelized Houdini mesh, all the MeshIntegrity errors went away, and I was able to boolean all of my SubTools together, no problem. Sweet!
Now, I can get back to work on my asset.
See you next week…
P.S. As I said, I tried re-DynaMeshing, ZRemeshing, and Decimating my corrupt SubTool. Everything produced corrupt unfixable meshes. If anyone knows of anything else I should have tried in ZBrush to fix my mesh, please let me know in the comments below. While a quick trip to Houdini certainly solved the problem, it would have been nice to have been able to fix it in ZBrush. Thanks!
