algorithmic modeling for Rhino

Hello everyone,

I've been working on a school project that will be 3D printed, and most of it consists of a chainmail jacket.

After modeling what the jacket silhouette will look like, I have been trying to find a way to array the chainmail on these surfaces - apparently there is not a 'surface array' component in Grasshopper, but anyways, since the surfaces are not perfectly rectangular, it's necessary that the chains are arrayed in consistent UV distances, instead of segmentation of the U and V directions (as seen on my current work).

Knowing the way chainmail is built, I'm aware that it's gonna take some extra adjustments on the joinery areas, so any solution that does the minimum above is good enough. It's important that this is done parametrically so the jacket will be adjustable to different figures as the curves/surfaces are modified.

Any suggestions are highly appreciated!

Views: 2763


Replies to This Discussion

Pretty cool!  But 3D printing?  That would be something to see.  I explored a few ideas but am an amateur at this stuff.

First bit of advice: as always when working with a model that can have THOUSANDS of elements (chain links in this case), work first at low resolution to reduce compute time and avoid freeze-ups!  When the model looks right you can increase resolution (i.e., the number of contours/links in this case).

The first effort ( is getting points at the intersection of contour lines from two planes, XY and YZ, then getting surface normals for those points to 'Orient' the pair of links.  This required ignoring all the extraneous points (due to multiple surfaces making up the "polysurface") returned by 'Srf CP (Surface Closest Point)' using two criteria: the 'D (Distance)' value and the 'uvP' coordinates that indicate an edge point (x=0 or 1, y=0 or 1).

Using the YZ plane worked well for the front and back surfaces but results in sparse points on the sides.  Using the XZ plane instead has the opposite effect.  Would be great if they could be blended somehow (animated gif):

Ultimately, it would probably work best to treat the body section and the arm as two different cylinders with contours conforming better to each surface separately.

The second method ( uses only XY contours and 'DivLength' (divided by length), similar to a brick wall:


3D printing, yes! Crazy idea, I know... let's see if I can make it this "tech-style" come to life, fingers crossed!

Thanks so much for the advice and efforts, it'll help a lot - I'm taking the time to study and understand each case (as I'm the real amateur here) and I'll try to simplify the surfaces and segment them in order for this to work.

Really appreciate it!

I spent more time than I care to admit yesterday messing around with just the sleeve.  Code that is VERY SPECIFIC to this model, stitching surface edges together and such - code that will most likely break when you change the surface pieces.

There is a problem at the top and bottom seams where sharp edges make the links stick out instead of lie flat.  Ultimately, the best result might require handling each of the two links separately instead of as a locked pair, so their overlap distance can vary with point density.

The challenge, of course, is that the "bodice" and sleeve are each poly-surfaces so some of the tricks you can do with surfaces (division, normal vectors) are much harder.  If you can construct the bodice and sleeve as whole, single surfaces instead of a collection of surfaces, it will be much easier.  Not trimmed surfaces either.  The front and back of the bodice might be separate surfaces, similar to how a shirt is made.

P.S.  I don't know how you stitch the pieces of chain mail together at the seams, though...?

You're absolutely right, modeling a single surface instead of a polysurface when possible will help tons, I'll work on that (at first I found it too difficult if not impossible with the amount of detail I wanted, but I'll have to settle for simpler surfaces).

Traditionally, chainmail is made as a whole, the stitches/seam are the chain links themselves, and you're able to create sleeves using an 45% angle as shown in the video below I found on my researches.

I'm thinking that I might not be able to find all the resources I need for this to be printable within the generative design possibilities, so I'll probably have to do some "manual labor" and get it stitched/linked (the chains cannot overlap or come .5mm closer in any point) but that should be fine considering I knew what I was getting into.

You could try to quad mesh your surface, for example with

Rhino WIP/6/Serengeti

You can use Evolute TMAP

Or Instant Mesh

I used instant mesh with your surface and I get this. But I had to join edges, to extract mesh from rhino, weld it (in GH) bake it and export it as OBJ file then quad mesh it in Instant Mesh. I must have kept just half of the vest in order to have symetry. 

After that you could use box morph in order to  put a patter on each quad. I did something like that here :

With the mesh you could also use the edges, center in order to orient your rings, something like that

Quad mesh in obj


Hi Laurent!

All these tools look excellent, but unfortunately none of them seem to be available for Rhino for Mac, my platform :/ it's funny, apparently there is only Grasshopper out of all the Rhino plugins. I would think Mac is the top choice for designers but apparently not within the 3D modeling world :P

Anyways I appreciate very much your interest to help!

Instant mesh seems to be available for Mac OS X
It is not in rhino but could be useful to remesh.






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2023   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service