algorithmic modeling for Rhino



Starling_0.2 mesh tools. These components enable mesh parametrization, so it behaves like a surface - you can evaluate points at any place etc.

In 0.2 release, Starling enabled quasi-polyhedral mesh tools. These new components are organized in a new panel called "Alchemists" : 

How do they work ? You create polyline and each component converts it into polygonal mesh. Then it computes what it has to do. In the end component outputs polylines again, changed in some manner depending on components function.


Why truncation and dual ? Because with these two operations you can make most of mesh operations as described HERE. I.e. ambo (rectify) is truncation with amount of 1.

Special thanks to : Michael Pryor for constant help&support and David Rutten for great advices.


It's highly recommended to use Starling with Weaverbird and [uto] MeshEdit.


More examples explaining new components soon.

Location: Europe
Members: 394
Latest Activity: Feb 19

Discussion Forum

slExamples : Curve fitting 2 Replies

Started by Mateusz Zwierzycki. Last reply by Bret Vanderhyden Nov 10, 2015.

Simple(I hope) question: Mesh from PM polylines 1 Reply

Started by Oliver Bucklin. Last reply by ng5 Alex Mar 25, 2015.

SLFastMesh problem 2 Replies

Started by Federico Landi. Last reply by Federico Landi Jan 27, 2014.

slExamples : Remeshing 6 Replies

Started by Mateusz Zwierzycki. Last reply by h Jul 13, 2013.

Your projects. 1 Reply

Started by Mateusz Zwierzycki. Last reply by machinehistories May 8, 2013.

slExamples : Rapid minimal surfaces with Sl and Wb 10 Replies

Started by Mateusz Zwierzycki. Last reply by Julio Radesca Feb 18, 2013.

Your suggestions. 2 Replies

Started by Mateusz Zwierzycki. Last reply by Mateusz Zwierzycki Sep 5, 2012.

Starling polyline tools example 1

Started by Mateusz Zwierzycki Aug 1, 2012.


Started by Mateusz Zwierzycki Jul 31, 2012.

Legacy releases

Started by Mateusz Zwierzycki Jul 31, 2012.

Comment Wall


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

Comment by Mateusz Zwierzycki on November 30, 2012 at 3:02pm

@ Ante : Well, I dont think its possible with starling, sorry...

@phillip : All new stuff is now under development, unfold too. There are some minor bugs with this script, please be patient ;)

Comment by phillip on November 30, 2012 at 8:19am

Hi Mateusz,

I remember you were talking about including like an unfold component to starling. Is this still going to happen? Are there any news on that? Was this a dream?

Thanks, Phillip

Comment by Ante Ljubas on November 22, 2012 at 4:31am

hi there,

how would i approach aligning a mesh according to principal curvatures? any idea?

greetings :)


Comment by Mateusz Zwierzycki on September 7, 2012 at 11:22am

Christian : Yes, thats not fully working for now, I will add uniform normals method in next release.

Arie-Willem : Yes, that might be the correct and more intuitive method, I just say that CA approach is suprisingly elegant one.

Comment by Christian Schmidts on September 7, 2012 at 10:50am

Hello Mateusz,

i just found one thing: using the pmoffset component the mesh is offseted in different directions. I guess it has do something with the inner rotation of the polylines (clockwise/anti-clockwise)?

(dont know why but you have to click on the gif so see all the frames)

Comment by Arie-Willem de Jongh on September 7, 2012 at 10:08am

The way i understood it and set up my script is: (mesh needs to be triangulated)

1) Select a seed vertice (or multiple) in your mesh

2) loop trough the connected faces of the seed vertice and get the list of connected vertices (cull out the seed and previous vertices)

3) Add those faces to a list (your stripe list)

4) randomly pick a new seed from the vertices and repeat from 2

in short thats the process and you already get pretty nice results more or less like:

Of course Marc Forness uses more advance scripts but i believe the base is more or less like what i described above. I would love to take a peak into the scripts he uses :)

Comment by Mateusz Zwierzycki on September 7, 2012 at 9:31am

Not knowing much about his work - for me it looks like patterns were obtained with cellular automata. Ive been experimenting with it earlier, and this is the effect. Other patterns may be also obtained with this approach, by changing CA settings. Some really useful patterns may be acquired using oscillating CA like paper-rock-scissors like this.

Comment by Arie-Willem de Jongh on September 7, 2012 at 9:17am

Thanks again for the clear explanation, its really clever to 'copycat' the way meshes are build up to achieve the desired effect but with polylines! 

Im also messing around with rhino common + meshes to analyse more complex topologies to in the end get strips or other topologies with the goal for 'easy' assembly. More or less what Marc Forness ( is doing.  I have it working, but it is still buggy. Unfortunately I only have time in the weekends.

Looking forward to the updates of this and if you need some help let me know!


Comment by Mateusz Zwierzycki on September 7, 2012 at 6:07am

@Arie-Willem : That's true - Rhino doesnt care about ngons :D That's why I had to write a custom class to handle this type of geometry. To understand how its made, you need to know how mesh is build - Vertices are stored as list of 3d points, faces as lists of vertex indices. There are other types of meshes in CG - see .

In fact, I use rhino mesh only to copycat it's functionality which enables to do some neat stuff. I think it would be hard to remake starling polymesh tools with standard gh components.

So how do I go from polylines to polymesh : Loop through all polylines, check each it's vertice, add it to polymesh vertices list if and only if its a new one (preventing duplicates). Each polyline is technically list of points, so the trick is to replace points with mesh vertices indices and create for each polyline list of integers (indices).

Comment by Arie-Willem de Jongh on September 6, 2012 at 7:36pm

Thanks for your explanation! Nevermind my comment it is actually not true I just checked that. I mean if your valence at a vertice is more than 3 (like 4 if you have a quad grid) you should get a diamond shape.  Which is the case. The thing is i forgot to flatten (doh) the output of my rectangular component :) see image

Rhino doesnt support ngons so how do you translate a polyline with a vertice count >4? Or your using the logic of how meshes are build to get the result?

Thanks again!


Members (394)






  • Add Photos
  • View All

© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service