Starling

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.

DOWNLOAD from food4rhino.com

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.

  • djordje

    Looks interesting Mateusz. When can we expect some more examples of this tools?

  • Mateusz Zwierzycki

    @Djordje - Today, I will post some at late afternoon.

  • wang

    A good job !

  • Astro/Naught

    BOOOOM! Ace.

  • fernando molas garcia

    Congratulations and thank you for your contributions

  • Giulio Piacentino

  • Mateusz Zwierzycki

    @Giulio - thanks, and youre right with link, will change it.

  • Astro/Naught

    Oh man, my virus scan does not like me downloading Starling. Anyone else getting this issue?

  • Mateusz Zwierzycki

    @Astro/Naught - dunno why, never heard about this kind of issues here. Scanned it with AV and nothing found, maybe check settings ?

  • Astro/Naught

    Not sure what the issue was. Even if I excluded it from AV it still didn't like the look of it.  It seems to be good now.

  • I_M_F [Iker Mugarra Flores]

    Mateusz what a great tool!!!! is these the development of the discussion of Skeletal mesh? it is supper great....

  • Marios Tsiliakos

    Nice one Mateusz> even better than the one I had imagined from a photo you posted some weeks back... TY.

  • Michael Pryor

    :)

  • Mateusz Zwierzycki

    @Marios T - Thanks !. Those images were made with rather rough vb sketch, there were multiple problems to solve after.

    @Iker Mugarra Flores - Thanks !. Its not related with skeletal mesh at any point.

  • noel hernandez

    is anybody else getting the object: pMCompose (level1) and (level2) exeption errors??? it actually also happened with the latest kangeroo update

  • Mateusz Zwierzycki

    @noel - ok, bug found. Please, download again gha file and delete previous.

  • Philipp

    maybe there is something wrong with me, but i have no this new window after I updated the plugin. everything looks tha same as it was before... rhino 4 

  • Mateusz Zwierzycki

    Philipp - Have you erased the earlier, 0.1 version ? Is there any loading error ? 

  • Philipp

    yeah, I forgot to erase the last version. now all is ok. hope to see examples of how all this staff works! 

  • noel hernandez

    thanks a lot Mateusz! the new update solved those errors

  • Zhang Bin

    The work is so cool!

  • Narath Chhay

    I can not install grasshoper cus my I have only rhino 4.0 and matrix 6.0 Any one can help me?

  • Mateusz Zwierzycki

    @Narath - You mean SR6 (service release 6) ? If so, you can download current update (sr9) at http://download.rhino3d.com/Rhino/4.0/sr/download/

    @Zhang Bin - Thank you.

  • Arie-Willem de Jongh

    Hey Mateusz! Love the Starling plugin dude, really nice work! One question (actually a couple) which im really curious about, how does the pmTruncate component work? How Do you get the neighboring polylines of a polyline to generate the truncated triangles? And how do you determine the 'naked' polylines (the edge ones) You match overlapping points? Also it doesn't give you the truncated polylines when 4 or more polylines come together in a single point, which makes sense if you want to generate triangles only. I was trying something similar but i got kind of stuck and no time unfortunatley. 

    Again really nice stuff dude keep it up!

  • Mateusz Zwierzycki

    Hi Arie-Willem, 

    I devoleped a custom class which uses polylines to create a mesh - so it takes each vertice, remove duplicates, put them in the list, then each polyline checks which point indices is it made of. After some operations like truncation, each face is back then recreated as polyline.

    To get it to work I had to recreate some basic mesh properties to run with my custom class, like : neighbour faces/vertices, adjacent faces, naked status etc. Most properties are still missing, but I dont feel like I have to recreate them. For sure I will make some normal vector estimation properties and flipping function, but that will be discrete to make pmOffset work properly when polylines are not created in uniform direction.

    I dont fully understand your question "it doesn't give you the truncated polylines when 4 or more polylines come together in a single point, which makes sense if you want to generate triangles only".

    If there is some case which will cause truncation work differently, it may be :

    1. New polyline is inserted only when it's "seed" vertice is clothed. I decided to make it this way, cause it seems to be unclear how new face should be created in this case.

    2. If your geometry is some kind of non-manifold, it will also fail.

    *naked vertice is naked if and only if number of faces created with it is not equal to vertices connected by edges to it. This simple formula seems to be the right one, when talking about surface meshes.

  • Arie-Willem de Jongh

    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!

  • Mateusz Zwierzycki

    @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 http://en.wikipedia.org/wiki/Polygon_mesh .

    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).

  • Arie-Willem de Jongh

    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 (http://theverymany.com/) 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!

    Cheers!

  • Mateusz Zwierzycki

    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.

  • Arie-Willem de Jongh

    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:

    http://theverymany.com/constructs/12_art-paris/

    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 :)

  • Christian Schmidts

    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)

  • Mateusz Zwierzycki

    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.

  • Ante Ljubas

    hi there,

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

    greetings :)

    ante

  • phillip

    Hi Mateusz,

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

    Thanks, Phillip

  • Mateusz Zwierzycki

    @ 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 ;)

  • Amir Pourmoghaddam

    Hi Mateusz

    Is the last version work whit rhino 5?

  • Mateusz Zwierzycki

    @Amir : I really dont know. I dont have rhino 5, and Iam assuming that most of us wont upgrade soon. But Iam quite sure that is should work, even with some legacy stuff inside.

  • Vangel Kukov

    Hi Mateusz,
    First of all congrats on the great tools you've developed. Fantastic job. Your programming skills are amazing. I wish to reach your level of knowlidge one day. Can you describe the steps (book titles, tutorials) you followed to master VB couse I've found a lot of matirial that is hardly relevant to Grasshopper Application. Thanks!
    I am using your weighted Laplacian smoothing component to find the laplacian of the mesh ("minimal surface"). The thing is I have other meshes attached to it that I need to follow the first mesh without affecting it. I tried to tweak the weights but it'sjust slowing the vertices not chainging the strenght with witch they effect each other. Can I do something about it? I was thinking to give it a try in kangaroo but with the amount of mesh faces I have it gets too heavy.
    Thanks in advance!


  • Vangel Kukov

    Here is the definition if someone wants to give it a try.

    laplacian.gh

  • Mateusz Zwierzycki

    @Vangel : I dont feel that I understand you clearly - you want naked vertices to stay in place ? If you give a 0 weight to a vertice, it should be stuck in place.

  • Vangel Kukov

    The first mesh (structure) and the smaller meshes (windows) covering the openings share vertices. I need to smooth the first mesh and to pull the rest of the meshes with it by their common vertices so that they follow the smoothed geometry without affecting it.
    Thanks.

  • h

    Are there any help files, or additional examples - other than the ones labeled SiExample 1-5? 

    I'm not sure that I really understand the work flow - I haven't been able to get the remeshing to work, or the curve fitting.

    I'm trying to work from the attached surface: Harrison%20BREP.3dm