I recently needed to break up a car mesh into pieces for use in a destruction effect, however I found that achieving this wasn’t as straightforward as I expected.

The car mesh was relatively simple and had existing UV islands so my first approach was to use Houdini to analyse the connectivity based on the UV island boundaries.

On initial appearances this looks fine. However the problem here is that there are too many small pieces due to many of the UV islands not representing real-world car parts. For example, the wheel has been broken up into >8 pieces: the tyre, spokes, rim and each gap between the spokes. Destroying the wheel into this many parts will appear noisy and unrealistic; the wheels need to be kept as a whole part.

Second approach

My second approach was to attempt to break up the car just based on physical connectivity. Again in Houdini I used the connectivity node to check for separate mesh elements.

The results were better, but still not right. Notice the front grille; the individual louvred pieces would look very noisy if they all separated when the car is destroyed:

Voronoi Grouping

I needed a way to break up the mesh into larger, more logical parts. If this were a piece of glass, I would simply shatter the car with a voronoi fracture node, but that would look really silly. However, I wondered whether I could group the parts into regions. Running a voronoi fracture on the mesh would be a good way to define these regions.

I created a bounding box of the car mesh and fractured it:

Final approach

I created 20 voronoi pieces which would mean the car would be broken into <20 parts. This is great as it means I have control over the detail of the destruction simulation.

I used the Transfer Attribute (by distance) node to transfer the centroid from the voronoi pieces to the car pieces. These centroids act as both the pivot point and the group for each car part.

Conclusion

This final approach was successful and meant that I could exports the various car parts as separate meshes for use in an Unreal Engine Niagara system.