Metaball Skinner

by chaos nuggets in Scripts and Addons

What does it do?

The Metaball Skinner thickens the wire-frame of a mesh. It is designed specifically for 3d printing. 

What is it good for?

This add-on is especially advantageous when creating highly complex branching or latticed geometry. Examples: 3d models of networks like neurons, trees, and social networks. No matter how crazy the network is, the metaball skinner will always produce manifold meshes.

Why Did I Make This?

I found that blender’s skin modifier did not work for my projects! I was trying to 3d print branching forms that were too dense and complicated. The skin modifier resulted in nasty creases and self-intersection that would cause 3d printers to fail. I realized a script could place metaball rods along each segment of the skeleton, ensuring that no matter what the geometry, a printable mesh would always form. I thought this might be a useful tool for other people, so here it is.

Metaball Skinner vs. built-in Modifiers

Blender already has two ways to thicken a wire-frame: the skin modifier and the wireframe modifier. So why use this add-on? Well the Metaball Skinner produces readily 3d printable models for any mesh, no matter what the geometry is. This is not the case for the skin and wireframe modifiers.

The skin modifier can produce meshes that are highly creased and self-intersecting. This happens if the angle between edges is too small, or if a tiny edge stems from a larger edge. Most often this is not a problem, because the modifier works wonderfully for modeling large scale features, like the body plan of an animal. But in the case of 3d printing, the skin modifier is not effective.

The wireframe modifier is also limited: it only works for meshes that have faces. So, for example, the wireframe modifier will not function on a mesh skeleton representing a tree.


v1.0.1 - functioning skinning, removed numpy dependence for older version compatibility

v1.1.0 - button in modifiers section added

v1.1.1 - metaball object tracks loc, rot, scale of base mesh, using constraints. Solves oddity of metaball object appearing at origin even if base-mesh is somewhere else.

v1.1.2 - metaball object set to half-resolution-update as default, better for large mesh-skeletons.


Let me know how it goes! There are some directions I am considering to go, but let me know what you think or would like to see. Some ideas:

  • automatic initial settings. So that settings are 'smart' for the size of the mesh
  • variable radii edges.
  • automatic update (so that it behaves like a modifier). This is likely going to be considerably more work. If any of you are really into this maybe we can collaborate on it.

How to install

File > User Preferences > Add-Ons > install from file ... find file ... > click check-box

  1. In blender, go to File > User Preferences. 
  2. In the window that opens, click the Add-On tab. At the bottom of the add-on tab, click “install from file.”
  3. Select the file that you downloaded, and then press enter to accept the selection. You do not need to unzip the file.
  4. Search “metaball skinner” in the search bar of the add-on tab, or select the ‘user’ category. You should see the Metaball Skinner add-on. Make sure the small box is checked. This enables the add-on. 
  5. To verify it is enabled, use the spacebar search in the 3D View to search ‘metaball skin.’ The metaball skin command should appear.

How to use

Run Command. 

There are two ways to access the ‘metaball skin’ command. Selected object must be a mesh, and in object mode.

1) Spacebar Search: Search ‘metaball skin’ in the View3D window using spacebar. Make sure that the active object is the mesh you want to skin, and that it is in Edit mode, otherwise the command will not appear. Hit enter, the command will run.

2) Button in Properties Window > Modifiers. The add-on created a new section in modifiers called "Metaball Skinning". There is a single button titled ‘metaball skin’ that will run the skinner. This button will appear below any modifiers already associated with the object. 

Adjust Parameters

Once you run the ‘metaball skin’ command, from the searchbar or the modifiers panel, you see a new metaball object forming the skeleton of the selected mesh. Woo! At the bottom of the View 3D > tool shelf there are two settings: Radius and Polygon Size. 

Radius - sets the radius of the metaball rods, in blender units. 

Metaballs are kinda funky and as a result the radius you set is not the exact radius of the rods! The true radius will be slightly smaller. This is related to the interaction between two variables: the stiffness setting for each rod and the threshold setting that acts on the entire metaball object. To get an exact radius: Select MetaSkinned, then go to Properties > Data > threshold. Set the threshold for the metaball object to .001. This will change the aeshetic of the object, removing bulges and making it sharper, more like booleaned rods than blobby metaballs.

Polygon Size - sets the size of the polygons that make up the surface. 

The smaller the size, the higher the resolution, and the slower blender will get. On the other hand, really large polygon size will make a chunky surface. An extremely large polygon size will make the metaball rods completely disappear. The size where the surface will look nice is relative to the radius of the metaball rods. 

Note: Once you change to edit mode, select a different object, or in anyway change the context of the application, the settings in the tool-shelf will disappear. This is similar to the behavior of the commands in the 'Add' menu, like 'add cone.'

Optional: 3D printing

A) Convert the metaball to a mesh (Alt C)

  1. Select the "MetaSkinned" object. It is easy to find it in the Outliner window.
  2. At the bottom of 3D View:  Object > Convert To > Mesh from Curve/Meta/Surf/Text. Or use Alt C.
  3. The MetaSkinned object will now be renamed to something like MetaSkinned.001. You can verify it is a mesh be entering edit mode and seeing all the faces. The average edge length of the faces is going to be close to the polygon size you set.

B) Export STL

  1. Go back to File > User Preferences > Add-Ons and search "STL"
  2. Ensure that the "Import-Export STL files" add-on is checked.
  3. With the new MetaSkinned.001 mesh selected, run the File > Export > Stl command.
Can I control the radius of each rod individually?

Yes. After you are satisfied with the majority of the rods, you can enter edit mode for the meta-object and select each rod individually. Then use the settings in the properties shelf on the right side of the 3D view:  View > Properties (N) > Transform. See blender’s metaball documentation.

I ran Metaball Skin, but I only see black circles.

No problemo. For really small, or really large meshes, the initial radius and polygon size settings may be off. So you might not see any metaballs until you fiddle with the numbers. Often the polygon size is too large; try setting it down around 0.50

This disappearing act can also happen when you rename the metaball object (by default it is 'MetaSkinned'). Just set it back to the default name and it should reappear. This seems to be a blender related error. I am currently trying to track it down.

How do I convert the metaball object to a mesh?

Select "MetaSkinned" object > Alt C

Shouldn’t This Be A Modifier?

Indeed, it is certainly behaving similar to a modifier. I even put the button in the modifier panel, because that seems like the most logical place. Unfortunately one can’t make blender add-ons into modifiers. Modifiers are written in C and would require a custom build of blender. Maybe someday metaball skinner will be a part of blender, but for now the add-on is a pretty good shortcut.

Blender got really slow after running Metaball Skin!

This can happen if you set the polygon size too small, and if there are many many edges in the mesh.

Also, if you have run the command a few times and have a few metaball collections, blender gets really fatigued. It is best to have only one skinned metaball object in a document at a time. Once you convert to a mesh it is fine to run the command again.

Why Are there bumps at each vertex location?

The default behavior of the metaball skin command creates a slight bulge at each vertex position. This is because the metaball rods overlap at the vertex. If you want to remove this you can select the MetaSkinned object (object mode) and go to Properties > Data > Threshold. Decrease the threshold to something very small like .0001. This will make the entire object  'sharper', with no bulges. As a nice side effect it will make the radius precisely equal to the setting.

Purchase this item to leave a review!