Fracture Voronoi

284 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.
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 :)

Script_Butler's picture

Slight script enhancement


I was wondering if it was easy to add an option to add some noise to the plane thats created and have options to adjust the noise parameters.

I only as because currently the fractures are all straight edges and i'd like to have some smoothness and curvature to them.

Can it also be changed to convert to editablepolys rather than editable meashes?

Are these something you think could be added?



1acc's picture

you can make it faster

There is a way to make it at least 2 times faster. The method is based on skipping points outside bounding box of chunk:

Points have to be sorted by distance from center of chunk.

Sample code:

Thank you for "Slice -> Cap Holes" idea.

Garp's picture

Create a macro for it.

macroScript runFractureVoronoi
category:"MAX Script Tools"
internalCategory:"MAX Script Tools"
toolTip:"Fracture Voronoi"
    fileIn "C:\\...\\"

Paste this in a new script window, change the path to wherever it is saved on your hard drive, evaluate it once and close the window without saving (the macro has been saved to the userMacros folder).
From the Customize UI dialog > Toolbars panel > MAX Script Tools category, drag it from the Action list to your toolbar.
Et voilà.

Comment viewing options

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