Create a Voronoi Version of Anything
by shapespeare in Workshop > 3D Printing
25573 Views, 49 Favorites, 0 Comments
Create a Voronoi Version of Anything
Anyone who is at all into 3d printing has seen these amazing models around. They are kind of like HDR photography, the first one you see is mind blowing, but by the hundredth one you start to think "Again with the Voronoi?". I expect Voronoi prints to start showing up as props in B-grade sci-fi movies any day now. They may be a little over done, but it is still well worth knowing how to make one. Stay tuned and I will show you how to make literally anything into a Voronoi model using free software. Just make sure to only use you new found powers for good.
What Is This Voronoi Thing Anyway?
The Voronoi diagram is named for Georgy Voronoy, a Russian mathematician who died in 1908 at the age of 40 (Useful info if you go to trivia night at a very geeky pub). You will be glad to know that I don't understand the mathematical significance of this pattern, but it is pretty easy to understand the basics. Take a surface (in this case the surface of our model) and scatter a bunch of dots on it. Wave your magic wand and each dot (more properly called a seed) will generate a cell around itself consisting of every part of the surface which is closer to that seed than it is to any other seed. Beyond that it gets into stuff involving lots of numbers and weird symbols and chalkboards full of writing that make my head hurt.
The best thing to remember is that it makes a really cool pattern. It also dramatically reduces the amount of material in a print which makes it quicker (if not necessarily easier) to print. It also makes it a lot less expensive if you are having it printed by a service like Shapeways.
Now Available on Video
If you prefer learning stuff from videos you can check out these two videos over on my you tube channel. The first one covers the techniques in this instructable, the second one covers some even cooler things you can do.
What You Will Need
The process is quite easy, it doesn't require an drilling or an army of trained cybernetic termites all you need is some free software.
To start with, download and install Meshlab and Blender.
Both Blender and Meshlab are capable of doing amazing things, but their interfaces both leave a little to be desired, but since the price is right we won't complain. I will try to guide you some really simple stuff with these programs. We will just scratch the surface, although deeper study with both programs is well worth the effort.
You will also need a model to work this sinister dark magic upon. This will theoretically work on any mesh, but it is best to start with something relatively simple and not too big until you get the hang of it. For the sake of simplicity we will do our demo on Blender's mascot, the beloved monkey, Suzanne. Suzanne is infinitely patient and won't mind a bit.
Preparing Your Model
We will generate our seeds by randomly selecting points on the surface of our object and then generate Voronoi cells based on those seeds. In order to do this well we need to have a fairly fine mesh of polygons to work with. The shape and density of the starting polygon mesh have a lot to do with the look of the final Voronoi mesh.
We will start in Blender. Select the create tab and scroll down past the cube, the sphere, the cylinder, and all the other familiar primitive shapes until you get to to "monkey". What's that, you didn't know monkey was a geometric shape? Its kind of a Blender tradition. Clicking once should give you a little monkey on the middle of your screen Hit the decimal point on your numeric key pad, followed by the 1 on the numeric keypad and your view should zoom in. Nice happy monkey.
Now your basic Suzanne is made up of less than 1000 triangles and that isn't nearly enough for our purposes so we will need to subdivide them. From the properties panel select the modifiers menu and select sub division surface. While watching your monkey increase the number of view subdivisions. Before your very eyes Suzanne will change from a rough angular low-poly cartoon monkey to a smooth and elegant high-poly cartoon monkey. Think of it like moving from Minecraft to a Pixar movie Beware that each subdivision quadruples the number of triangles in the mesh, and quadruples the memory requirements. Four subdivisions will give us about 250,000 triangles which is perfect for our purposes. Click apply to commit your subdivision.
Go to the file menu, select export>STL and save your beefed up Suzanne.
Seeding Your Voronoi
Now boot Meshlab and File>Import Mesh your Suzanne into the picture. You can left click and drag to reposition your model for a nice view but Suzanne doesn't really look like she cares. Select Filters>Sampling>Poisson-Disk Sampling. The dialog box which comes up will let you know that Meshlab is not your ordinary software. It actually tells you whose dissertation the algorithm is based on. Thanks fellas, whatever "Blue Noise" means. The only thing we care about here is the number of samples. This gives us our number of seeds which will translate to the number of holes in our final model. The other settings might produce interesting effects, but I haven't tried all the combinations.
Set it for around 200 samples and click apply. The dialog will close but you won't notice much change on the monkey. Hold the alt key and roll your scroll wheel and it will make the selected points larger so you can see them clearly. Now Suzanne should look like she needs a shave. You don't have to look at your seeds, but it is a good idea to see how dense they are because this will determine the look and detail of your final model.
Making the Cells
Select Filters>sampling>Voronoi Vertex Coloring. Check BackDistance and Preview and you will see your Voronoi mesh appear in red. If it is solid red you probably don't have enough mesh divisions to make a good Voronoi pattern.
Next go to FIlters>Select>Select by Vertex Quality. Check Preview and uncheck Inclusive Sel.
At this point it is useful to turn off the color view by selecting Render>Colors>None. Now you can see the model clearly you can scrub the min ad max values to change the size of the cells. It usually works best to set the min to 0 and adjust the max until you like the look. Once you are happy with the look click apply and close. You now have your Voronoi mesh selected in red.
To eliminate the rest of the original object we need to use Filter>Select>Invert Selection. Then Filter>Select>Delete Selected Faces and Vertices.
We are left with a rough Voronoi mesh. Use Filters>Smoothing, Fairing and Deformation>Laplacian Smooth to smooth it.
At this point we have a nice model, but it is only a surface, not much use for 3d printing. It is possible to solidify the model using Meshlab, but Blender is easier.
This is a pretty standard method up to this point. I learned it here, but it is detailed in several other tutorials. What follows is my own method.
Solidifying the Model
Export your mesh from Meshlab and import it into Blender. In the properties panel select Modifiers>Add Modifier>Solidify. This tool is nicely interactive compared to the equivalent tool in Meshlab, even if they don't tell you whose thesis it is based on. The main parameters we care about are thickness and offset. Thickness is self explanatory. Offset is useful if you want to combine the Voronoi version of an object with the original. By making the Voronoi version slightly offset from the original you can apply it like a surface texture.
If you get odd little spikey artifacts on your model go back to Meshlab and make sure the "Inclusive Sel." option is not checked when you perform your "Select by vertex quality".
In this example you may notice some ugly bits around where Suzanne's eyes were, this is because the eyes are separate pieces.
Once you are happy with your settings you can apply the modifier and export as an STL for your 3d printing pleasure. You can also apply subdivision surface and or smooth modifiers in whatever combination gets you the effect you are looking for.
Printing Your Model
Printing your Voronoi model is usually quite a bit harder than making it. It is a good test of your printer's calibration and your skills running it. Make sure you have dialed in your temperature and retraction settings to reduce stringing as much as possible. If you don't have a printer, or can't get an acceptable print from it, consider Shapeways. Since they charge by the volume of material Voronoi models are usually relatively inexpensive to print.
If you aren't totally sick of Voronoi models by now you can experiment with making only parts of the model Voronoi and leaving the rest solid. Changing the quality of the starting mesh can lead to variations of final result. You can also try generating your seed cloud using algorithms other than the poisson-disk sampling.