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.

Changelog

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.

Feedback

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.