algorithmic modeling for Rhino

Introducing 'Exoskeleton' - A wireframe thickening tool

A collaborative effort by David Stasiuk and Daniel Piker, Exoskeleton brings simple wireframe thickening to Grasshopper. You input a network of lines, and it turns them into a solid

(without the heavy calculation of a Boolean intersection of many pipes and spheres).

The input line networks can have any topology, and need not form closed polygons or volumes, so could come from algorithms such as DLAleaf venation, or Woolly threads.

The resulting meshes are ideal for 3d printing and further processing, such as subdivision with WeaverBird and relaxation with Kangaroo.

There are settings for the thickness of the struts, node sizes, and whether to leave openings at nodes with only one connected line.

The approach we used is loosely based on the one described in the paper Solidifying Wireframes by Ergun Akleman et al.

Thanks to Giulio Piacentino for helpful discussion in the development of this idea, for WeaverBird, and the GHA wizard, to Mateusz Zwierzycki for convex-hull ideas, and Kristoffer Josefsson for helpful discussion.


(component will appear under the Mesh>Triangulation Tab)




Views: 102283


You need to be a member of Grasshopper to add comments!

Join Grasshopper

Comment by Mihai Pruna on January 23, 2014 at 7:23am

Thanks David, I will give it a try in the future on more complex and three dimensional meshes.

Comment by David Stasiuk on January 23, 2014 at 7:11am

Hi Mihai-

With this release of exoskeleton there is an issue with lines that are located in the world if you have a 2D wireframe that is located in the XY plane, the mesh will look fine, but it will have several naked edges. This is an odd artifact, I think having to do with decimal places and translating between Point3d geometries and mesh vertices...but basically, if you want to make the mesh airtight, you just need to move your base wireframe network out of the World XY plane. Hope to fix this in a later release.

Comment by Mihai Pruna on January 23, 2014 at 6:59am

Excellent tool,from a visual standpoint.

 I've had issues with a model when trying to create a 3D printable object.

Basically, I had a 2D wireframe mesh  and used Exo on it, looked really good, but, once imported into Shapeways, most of the elements disappeared and I was left with a very "skeletal" model.

What I ended up doing was much simpler, I split the mesh into lines and then used the Pipe tool.

Comment by Ondrej Homa on November 30, 2013 at 6:30am


Thank You for sharing this awesome tool. Unfortunately, I can´t get good clean results. It computes strange exploded surfaces, which do not connect to each other. What am I doing wrong? I have tried a lot of values settings and still get somtehing like this:

Here is a definition and source file.

Thnx in advance for respond,

with respect,


Comment by BeckN on October 15, 2013 at 8:51am

I am very new to grasshopper and am trying to make these lines into meshes. Although I seem to only be getting triangles and the corners of the lines which is not what I want.

I don't know if Arthur Mamou-Mani or anybody else is able to help. Thank you. 

Comment by Jack munro on August 30, 2013 at 4:47am

Hi guys,

This is such an amazing tool, I've had absolute nightmares in the past trying to do this type of thing! I'm having an issue where some nodes separate from their struts, do you have any idea what I'm doing wrong?

Comment by Łukasz on August 21, 2013 at 1:17pm

Well done mates. :)

Comment by djordje on August 8, 2013 at 4:47am

Hi Kyle. Check this topic.

Comment by Kyle Ultrawave on August 7, 2013 at 5:14pm

Is there something wrong with my sets? The left is the original lines set, the right is the exoskeleton result, which add some lines from 0,0 point to some of nods.Where are the lines from?

Comment by David Stasiuk on May 14, 2013 at 3:25am

Hi Vicente-

I am working on just such an update this moment...In the short term I am looking at making it possible to locally alter both strut thickness and node offset distances, and hopefully will have something in the next several days.  Additionally, a key component to this update is that node thicknesses will be better adjusted...currently, the node size is determined by either the node depth assigned by the user, or by the minimum offset required by the narrowest angle between struts in a node as a function of the strut thickness.  The update will allow for the node offsets to shrink locally for each strut. In the longer term I am also interested in looking into mesh self-intersection for the purposes of making more organic meshes...but that's not for right now.  So you can expect an update soon...

Unfortunately, we won't be actively supporting V4...we haven't been able to identify what the bug is, and we are working to support 0.9.0050+.

I also hope during this update to address the issue of the lines running to the origin.  The reason for this error is pretty simple: the nodes are generated using a convex hull, and when these hulls overlap...which is to say, when any hull engulfs one of its struts entirely, the mesh breaks down.  One way to help prevent this from happening is to use Daniel's topologizer, but that won't always work.  I am hoping to implement some changes that will either generate "super nodes" that combine the input struts between highly proximate nodes, or at the very least generate a detailed error message that illustrates where the input is causing the breakage.





  • Add Photos
  • View All

© 2019   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service