Fracture Voronoi

290 votes

This script breaks any mesh while preserving its volume.

Additional Info: 

v1.0: The object is broken in a number of chunks equal to 'Nb Parts' to the power of 'Iterations', using Voronoi cells. The final number appears on the 'Break' button.
The creation process is visible in the viewport.
For a similar result, it is faster to use several iterations with a small number of parts than creating all the parts in one iteration.
Note that the original object is just hidden, not deleted.

v1.1: In this version, the code has been improved and runs much faster. But there is no viewport feedback any more.
- the outer faces keep their original material IDs and the new faces are assigned a unique ID. The value that appears by default is the highest ID in use (by the original object) + 1.
- mapping coordinates (if any) are preserved and somehow 'projected' onto the new faces.
- an extra planar mapping is applied to all the pieces at once and set on its own channel, typically for use with 3D procedural maps, so the pattern flows continuously from piece to piece but sticks to them when they are moved apart.
- when using several iterations, it is possible to keep the intermediate generations of parts.
- when linked, each part is parented to the one it is derived from.
- generations are set on their own layers, which are hidden except for the last one.

Enjoy :)

FractureVoronoi_v1.1.ms10.85 KB
FractureVoronoi_v1.0.ms4.67 KB


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Rogerio Nobre's picture

Thanks for Script

Very useful script! Thanks for sharing.

Garp's picture

Not really.

What it could use though is a faster algorithm. Right now it's about the worst possible way of doing it.
And the code is damn uggly.
One day I'd like to try something like the DeWall algorithm. One day...

JokerMartini's picture

You ever consider further

You ever consider further developing this?

John Martini
Digital Artist (new site)

HillBilly's picture

"No ""+"" function for undefined" problem fixed

Thanks Garp,I had the very same problem when running the script and it works fine now that I'm running it inside the 0-100 range!

Garp's picture


Could it be that you used it outside the 0-100 frame range? If so, it's a bug I never came around to fixing. The script creates particles inside the mesh and uses their positions for the pieces. By default, the particles disappear after frame 100, hence the 'undefined'.
If it's not it, then I have no idea.

Socratis's picture

Small Problem

Hi there I'm pretty new in 3dsmax and decided to use this script for a wall im building. When I select a brick(a box) and i click break into x pieces a MAXScript Rollout Handler Exception comes up saying --No ""+"" function for undefined. Why would that error come up? Thanks!

skye19's picture

Material mapping

Firstly, great plugin.

Secondly, the mapping for my material, however, does not stay the same which is a problem for me. Is there a way to fix this so that it remains intact before and after fracture?

I'm using version 1.1 which states that the mapping remains, but this is not the case for me. I have an object with a rock texture material that breaks at a certain time. It will look weird if the material mapping changes suddenly before it fractures.


missterlobster's picture

Fracture Voronoi

Truly brilliant script - so so useful. Cant wait for the next version - hopefully soon :)

KAREEM.MAX32BIT's picture

thankes for script

I so have fun by this script and I thanke you


Garp's picture


Sorry for not anwering earlier, peeps. I haven't touched this script in ages.
I'm looking at the code and it's really uggly. Sure it works but, hmm, that's just plain bad programming.
Currently fiddling with various Delaunay/Voronoi algorithms. So maybe a version 2.0 is in order?
Not right now but I hope soon enough.

Thanks for all the kind words :)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.