Grasshopper

algorithmic modeling for Rhino

How can I morph geometry between two irregular surfaces?

Hi, I am wanting to create a pattern of geometry that morphs between two surfaces with different curvature (first image).

So far I have managed to pattern a cylinder between two parallel surfaces but this definition fails when I apply it to the irregular surfaces.  I would like to be able to divide the irregular surfaces with points that run along the edge of the surfaces so that the pattern fills the entire area in between.  

I am new to Grasshopper so unsure whether this is the most suitable definition to use and I am open to any suggestions of how to go about this, thank you.



Views: 2334

Attachments:

Replies to This Discussion

That's very easy:

1. Assuming that you have the mini surfaces on hand (I've used C# for that [that does a lot of other things as well] BUT don't bother with this since getting the surfaces out of the division points is easily doable with native components - see comments inside def).

2. Create reference boxes (blendBox) between these surfaces of yours - notice the user controllable "variable" domains AND the fact that mini surfaces have domains (0-1).

3. Map any bounding box (that "engulfs" a given object) into the boxes from 2.

PS: Notify if you want other "morph" examples (I have a lot)

Attachments:

To indicate the possibilities I've added a brep (Rhino is VERY slow in this occasion) and most importantly Bob (PS: Bob morphs up-side down but blame Karma, he he):

PS: Load Rhino file first

Attachments:

Hey, thanks for your reply.  As I am new to Grasshopper I don't fully understand some parts of your definition but I did try applying it to the two irregular surfaces.  It does work, however the cylinders run off the edge of the surface, is that because the surface was previously trimmed?  Also, I would like the cylinders to morph flush with the curves of the surfaces, at the moment they cut straight across.

Hi Nicole

1. Which part is difficult to get? (BTW: assuming that you forget the way that the sub surfaces are made - the C#, that is).

2. Indeed a trimmed surface is ... er ... not a "surface" ... it's a Brep. Meaning that this component gets a (potential) Brep and works with the underlying surface (== no trimming info):

I could very easily provide a way to create sub surfaces by respecting [according to a variety of criteria] the boundary (+ potential hole) ... but it's also in C#:

But ... you can do that using the Mesh UV NATIVE component (and "convert" the meshes to surfaces if this is what to want).

3. "Flushing" the geometry with the surfaces ... well ... in the case of cylinder is very easy (I'll add an option for that ASAP) ... but in the case of the test Brep (and Bob The Sponge) ... well that's a bit more complex.

BTW: by option (and to simplify things) I mean using  a crude way to do it: make 2 "tmp" offset surfaces (north/south) morph the object using these and then trim it against the originals (it works under certain conditions AND NOT for the Bob).

4. If on the other hand you want to spread some random points on these Breps (actually in one and then projecting them to the other) and then use the axis for creating the cylinder (and extending it a "bit") and then trim the cylinder against the "boundaries" (surfaces) ... well ... that's another animal and it should being addressed differently (but is easy).

Spend a couple of minutes more on that (V2, that is):

Yellow are the original surfaces, cyan are the offseted ones (as explained above)

1. Good news: it works either as in V1 (not flushed objects: fast):

Or (flushed objects: VERY SLOW since Rhino is not a solid modeller hence all the "solid" ops are very slow):

2. Bad news: Split (slightly faster than the boolean intersection/difference used) yields open Breps (trimmed surfaces) thus I guess that is out of question.

3. Ugly news: SLOW

more soon (+ the V2 tested a bit more)

Hmm ... a pile or worms that thread of yours (BTW: def still restricted to untrimmed surfaces) :

1. The offset approach (for flushing the objects) it works with a "convenient" object like your cylinder but doesn't make sense in other cases (see the demo stuff  provided). NOTE: If the offset is off ... the thing that makes all the work is "auto" deactivated as well (to prevent chaos).

2. All the options available are in a red group (including the offset at the left-most part of the definition). To summarize: options are (a) offset or not [MEANING: flush or not], (b) choice of the test object,, (c) show the tmp solids used [flush], (d) follow the offset route [flush] or work as in V1 (that is 100 times faster).

3. Appears that I can't do anything with regard the SLOW issue: is the way that Rhino does business (Split is out of question as explained above - but is not a hare either).

Load Rhino file first.

Attachments:

Thanks for your all your suggestions and explanations Peter, I will have a closer look at the definition and experiment with what I can create.

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service