algorithmic modeling for Rhino



Exoskeleton is a free plug-in for creating meshes. It is currently comprised of two components: Exo Wireframe and Cytoskeleton.

  • Exo Wireframe thickens line/node into watertight meshes. It solves the nodes using a convex hull and stitches the hulls together with polygonal struts.
  • Cytoskeleton thickens the edge network of any existing mesh into a thickened mesh. The topology of the base mesh enables the production of a clean quad meshes whose vertices are all of even valence. Because It uses the half-edge mesh library developed by Daniel Piker and Will Pearson, it also requires the installation of the Plankton dll's and gha.

Exoskeleton remains a work in progress, and as bugs are fixed and new components and features introduced, updates will be placed here. Furthermore, Exoskeleton is an open-source library.

Download the most recent version here:

This has been updated to also include Plankton version 0.3.4

This library is distributed under the terms of the GNU Lesser General Public License (LGPL).

(The source is available on GitHub here)

Please use this discussion forum to post questions, describe issues, and provide feedback (and examples!).

Copyright 2014 Daniel Piker and David Stasiuk

Thanks to Will Pearson, for his work on Plankton and who also has given some invaluable contributions to Exoskeleton in terms of project organisation. Thanks also to Giulio Piacentino for Weaverbird, and for general knowledge and support, and Mateusz Zwierzycki for the same, as well as for sharing his code for convex hulls, which although not used explicitly here, was very helpful in many regards for the development of Exoskeleton.

Members: 437
Latest Activity: yesterday

Discussion Forum

Thickness gradation

Hi, I'm pretty much a noob to Grasshopper and for product design project, i made this wireframe generator and I'm having hard time to manage the thickness of the exoskeleton:I want it ti be thick at…Continue

Started by RIPON anton Oct 28, 2021.

Exoskeleton meshes not joining??

Hi,I have just started using Grasshopper for university so please excuse my ignorance.I am trying to use Exoskeleton to thicken lines to use in an architectural rendering.  My first few attempts did…Continue

Started by Deanne Neilson Sep 10, 2018.

Can't get Cytoskeleton to load.

Rhino 6.I have Plankton v0.4.2 from (I also tried Plankton v0.3.0). Using…Continue

Started by Mike May 15, 2018.

Problem Using ExoW

Hey Guys,I am having a problem when joining two wireframes into one Exoskeleton Mesh. As you can see in the Pic#1 I was able to thicken the wireframe while having a problem after mirroring the…Continue

Started by Xiaojiao Xu Apr 16, 2018.

Comment Wall


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

Comment by David Stasiuk on May 28, 2015 at 5:37am

Here you go. I've also added at the end my Catmull-Clark implementation with'll need Plankton for that to work. If you don't have it, though, so long as you have [UTO]'s MeshEdit tools and Tree Sloth, the rest should be more or less follows the logic of the Exo plug in, just using components.

Comment by martyn hogg on May 27, 2015 at 4:54pm

I'll have to spend a bit fo time on this I think!

Blog Post With File

I'm getting lost in data structures again!

Comment by martyn hogg on May 27, 2015 at 3:46pm

Thanks! I'll try that... I'm sure I got the Tree Sloth plugin but can't see the list comparisson component in the Tree Menu. The components should all be in Sets >> Tree right?

Comment by David Stasiuk on May 27, 2015 at 3:28pm

I don't know how much of a purist you're being in regards to components, but the Tree Sloth plug-in I wrote has a list comparison component that's really useful when you want to compare items against each other in a given list. You can choose for it to give all unique combinations, or you can set it to create for each object a data branch that matches it against every other one. So:





will return:


A - B

A - C


B - A

B - C


C - A

C - B

So if you had a branch with all the struts from each node, you could easily test and sort all of the angles for each one against its neighbors. Just an idea!

Comment by David Stasiuk on May 27, 2015 at 3:22pm

Exactly. For each strut, check it against each of its neighbors, and test the angle. From this - and the radius of both struts - you can calculate a minimum offset required. Then you set them at the "worst" case value.

Comment by martyn hogg on May 27, 2015 at 1:25pm

I'm trying to do it with components.

It's the "angular proximity to it's neighbours" that I'm struggling with.

I guess I need to work out the angle between the struts and then just look at any angles that are acute and then work out the required offset?

Comment by David Stasiuk on May 27, 2015 at 1:06pm
Hi Martyn- the way it works is that for each node, the convex hull is calculated for either the minimum offset to ensure that it will correctly capture all of the vertices or the offset defined by the user...whichever is bigger. Then, after it solves the convex hull topology, it goes through each strut and "shrinks" it to the minimum depth, based again on the user input, and the strut's radius and its angular proximity to its neighbors. There's a fair amount of trig involved, but nothing really fancy. Are you writing a script, or are you doing it with components?
Comment by martyn hogg on May 27, 2015 at 12:40pm

Hi David, I'm revisiting my exoskeleton definition in order to create one that has square section struts and I need to work out a way of keeping the node depth to a minimum without the struts overlapping. i.e. calculate a node depth for each strut.

I notice your exoskeleton component does this - if you set the node depth too small it holds some node arms away from the node centre point to avoid overlapping.

Can you give me a clue on the strategy for doing this please?

I was going to try and sort the struts of each node in order of angle, then calculate a distance for each strut that would avoid strut overlap but wondered if there is a simpler, smarter way of doing this!


Comment by Mohammad gholipour on May 2, 2015 at 1:13pm

I dont know how to install this plugin help me please..

Comment by h on March 17, 2015 at 6:40am

hi, i am very new in gh also exo. although i installed all the compenents of exoskeleton and unblocked, when i open the file, i get the error, exoskeleton is missing. 


Members (437)






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service