algorithmic modeling for Rhino
Hello Community,
I am working on my thesis project and I want to transform a surface into triangles of different size. I successfully created equal triangles along this surface but since two days I have trouble with creating triangles that differ in size. I want the middle section of the surface to have large triangles and small triangles on the edges. I have added a sketch (picture: desired result)
So far I tried either surface division or lunchbox triangle patterns to start from. Is it possible to move points along a surface with image sampler? When I tried image sampler the triangles didn't connect to each other anymore. Is there a different way, maybe to create surface divisions that differ in size?
I kept the different attempts in the grasshopper file and added some notes, too.
I would really appreciate some tips / hints. I just started to learn Grasshopper for this specific task so please give me a rather slow answer. It would help me a lot.
Tags:
This ist the Grasshopper file:
And this makes more sense.
Preview ["wire"] option is real-time, the other [pieces] is very slow: use it only after fixing the mapping domains and the points.
Hi Peter,
I am really impressed with all your effort and quality of help you provided me with. I was truely motivated and tried to get it all together. Thanks so much. I still couldn't get it to work fully. I worked on it the whole day and I now got a pattern that I wanted to generate. I edited another approach from co-de-it, got the triangles to look the way I want and I couldn't manage to plug it into your very cool system.
Would you mind to look at it again? I think its not much missing there, maybe just something I don't understand fully yet. I attach my efforts of today:
anyways I want to thank you for all your help you gave me already.
Er ... there's indeed some freaky havoc going on (you are a bad boy). Easy to fix but my Kepler Quadro does weird things with your objects (for instance zoom extends displays nothing/zero/nada etc etc) thus how can I fix things that I can't see?
Anyway the issue here is that you haven't got the gist of what a surface (as target to the Morph Method used) is. And you also haven't got the gist of what a "guide" bounding box is.
For instance (mapping polylines for speed):
Why this happens? Well ... a surface may appear as surface but in fact could be a Brep with a single Brep Face: a freaky thingy that is in fact a "portion" of a surface (BrepFace underlying surface) according some trimming info. Brep stands for Boundary Representation.
The Morph Method uses the underlying surface and thus you get the as above result.
More chaos to the chaos soon.
And after a generous dose of Vodka (critical if you can't see a thing) here's some light in the chaos (or the other thing).
1. Using 2 test cases that MAY appear the "same" ... but they are not:
2. Using 2 modes (preview and pieces).
So in the first case the mapping applies to the underlying surface thus things go "outside" the trimmed "visible" thing.
So in fact your initial question "slightly modified" is: how can I map stuff to a BrepFace ?. More on that freaky matter soon.
Actually ... well ... is "very simple" (kinda): forget mapping, spread random points in a trimmed surface, then use rather a decent Ball Pivot algo (general case) than Delauney (doesn't work well in non "flattish" collections) for the triangulation, then get the polylines, then use Curve.PullToBrepFace... blah, blah.
Load R file first.
BTW: Here's the classic way to do a random triangulation on a BrepFace - your trimmed Surface in fact (Note: Delauney IS NOT the thing to use here - try it and see the results).
Unfortunately using a Ball Pivot algo for the triangulation that is strictly internal (meaning that I can't post it here).
And this is a "static" demo upon doing a Ball Pivot mesh (mesh is provided as internalized ... but not the way to do it, try MeshMachine as well) via random points on your trimmed surface and then making the pieces (or the curves).
Using 2 Methods that are (a) slower than any Toyota [Curve.PullToBrepFace: available as component], (b) slower than any Harley Davidson [ Surface.ShortPath AFAIK not available).
Required R file: Surface_randTriangulation_v14D_issue_1
Hi Peter, thanks again for your help. I wanted to post a picture of the result you helped me get to: it is a door concept for 3D printed buildings
Well ... I was thinking that if we replace "tiling" with "slicing" ... maybe the attached can help you the one way or the other.
It works using a widely used "technique" in programming known as recursion: i.e. a Method (i.e. a piece of code) does something and then calls itself for doing the same thing working on the results of the previous phase. The "loop" repeats until a threshold (say: max loops/iterations etc) is reached.
Notify if you need solids out of these pieces (or maybe a "slice width" option).
Load Rhino file first for the test cases.
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2025 Created by Scott Davidson.
Powered by