Grasshopper

algorithmic modeling for Rhino

Hi everyone,

I'm new in the grasshopper environment so please excuse me if I ask obvious or stupid questions!

I'm trying to model an hexagonal tessellation (as regular as possible) of an arbitrary patched and trimmed surface defined from a 3D boundary (as in img1). The result I'm looking for is something like the other two pictures (2 and 3).

I tried several ways to get a decent result using kangaroo and circle packing, but in this case I'm not able to define automatically the correct amount of circles to populate the geometry with and eventually I have some problems on the boundary's vertices.

I'm sorry to bother you all but I'm really stuck here and I cannot find a solution, any help would be incredibly appreciated. 

Thanks in advance

Views: 5890

Attachments:

Replies to This Discussion

You forgot to attach your definition(s) - do that and help could arrive.

best, Peter

I'm sorry!

I attach an image of my main problems too, I tried to triangulate the points in order to get the final mesh with proximity component but I'm not getting the right geometry...

Attachments:

Hmm ...

... there's a variety of ways to approach this (the best: via Evolute Tools Pro) ... but allow me some moments to test a rather unexpected way:

For a start just these 2 things (the grouped components + one "template" surface + your surface) do that (trimming these hex things to boundaries are not nuclear science):

Of course this is far from resolved but the big issue here is : by what means do you think that the boundaries are going to be treated? (a) relaxing the whole thing via Kangaroo (b) treat/redesign the boundaries differently (and have "equal" as possible modules), (c) ... 

more in a while (if this "method" could result something, he he)

best, Peter

added an unnecessarily big number of components (notice my secret the tree caballeros component that actually does the job) just because that $#%$#%4 GH can't trim this (curves) with that (boundary "ortho" surfaces) properly (I'm not that brave to search SDK for some proper method - if it's available).

ready for Kangaroo?

not quite since there's some "bugs" around (some stuff is trimmed, some not so : tolerance, bad Karma or what?)

more(?) soon(?)

Update:

Like marrying Caroline of Monaco that one (great idea, "minor" issues still around):

1. Maybe David, Daniel and other gurus could explain this:

2. If this could been addressed we could send to Kangaroo (after eliminating similar stuff - obviously) all what it needs for relaxation (using a "similar" method with the one that we use in the tensile membrane peripheral edges).

3. If someone could dig in the SDK and trim the hex things with the surfaces (see definition).

more(?) soon(????)

Attachments:

Hi Peter!

Thank you a lot for your replies! 

Actually I had some problems understanding them, I'm kind of a newbie here hehehe!

I tried to project a grid on the surface, connected to the edges and then relaxed and the result is kind is similar to what I had in mind apart from some vertices I have to adjust! Furthermore I realized I need 5 and 7 edges-node to achieve a more uniform element length.

I upload the definition in case someone has some tips to improve it! (I know it's full of errors and mistakes but it's a WIP)

Thanks!

As I see it you have at least 3 quite different options to choose between here, depending on what aspect is most important to you:

-One is to allow some valence 5 and 7 vertices in the mesh, as you do just above. Another way of doing this automatically would be to use the MeshMachine component from here

-Alternatively if it is essential to have only hexagons, but you are allowing the ones around the edges to be trimmed, then something like the approach Peter shows above should work, and with some relaxation should be possible to get very close to equal edge lengths.

-Thirdly, if you strictly allow only valence 6 nodes/all hexagons, and you also want it to 'node out' at the edges, then I think the best approach is something like the 3rd image in your original post - to manually draw a coarse mesh of a few large triangles approximating your mesh, then subdivide it and pull the corners and edges to your surface while relaxing it.

Thanks Daniel!

About the third way you said, how can I do it?

I can't understand how can I link the (approximately) relaxed length of the elements to the conversion from the surface to mesh...

Is it possible to do that in your opinion?

Thanks for help!

The first step is to draw the coarse mesh, face by face manually in Rhino using Mesh>Polygon Mesh Primitives>3D Face.

Choosing good triangulations here can take a bit of practise - you want to match any important features of your shape such as sharp corners, without wildly distorted triangles, and deciding where you want any irregular (valence 5 or 7) vertices. Sometimes this step can be automated, but I think in many cases it is best done manually, and anyway it should only be a few triangles - Here just 8 triangles give a decent fit:

Then subdivide and relax, keeping the corners fixed and pulling to the boundary curves.

I've skipped the hole here, but to add that I would take this first relaxed mesh and remove faces approximately in the shape of the hole, then re-relax while pulling to the boundaries.

and here with the hole cut

and the definition

Attachments:

Finally - to get the hexagons take the dual (using Weaverbird)

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