Geometry/mesh into one continuous surface to populate bubbled hexagons along the surface

They can’t all be exactly the same shape - the differences in size are necessary for it to follow the curvature of the surface.
What’s more, if you want the cells to also follow the boundary, they cannot all be hexagons.

Alternatively you could take a completely regular hexagonal grid, then project and trim it. That way you’ll get all hexagons apart from where they are cut at the boundary, and they’ll be regularly sized in plan (though still with a little variation in 3d because the surface is not flat).

1 Like

That is awesome!

I’ve just bought 7 and i have already 1 reason to need 8 :joy: .
I have the … impudence to ask: will this function come also to 7 or … ?


Nice! If someone doesn’t have R8 I believe Mesh+ (and maybe NGon also) has some Barycentric morphing component for this situation also.

If you have 7, you have access to the v8 WIP all the way up until an official v8 release (which is obviously a way off, since we’ve only just released 7!).
8 is where any new features will be appearing :slight_smile:

I know that…
It’s just that… i have reasons to have 5 installed, 6, 7 because is latest, and now 8 … :upside_down_face:
I already try to use few plugins (i love yak) to leave every workstation directly compatible with the others… using also 8 will mean having four rhino installed on every machine.
Anyway, it’s OT.
I’m happy anyway!


Hi Daniel. I just wanted to better understand the grafted curve command you created in the beginning of the GH.

How did you set up the cells under Crv command… Can I only include hexagon form. (I tried to create new crv command to including hexagon shape only, but the only way i know is to draw the hexagon in Rhnio and assign “set one curve” option under Crv in GH ) Also It would be ok for the cell shape to change at the edges of the roof but not in the middle… so I may need to look into projecting it like you mentioned above. or try running GH with only the same size hexagons for construction purpose

First to explain a bit how this new MorphToMesh component works-

When you first place it on the canvas, it creates reference polygons, from triangle to octagon.
These show you where to place your geometry.

You place any geometric objects you want to morph (curves, surfaces, breps, meshes etc) inside these.
These geometry objects go into the G input of the component (it does not need to be in any particular order or data structure - the component figures out which geometry belongs to which polygon).

M is the mesh you want to morph the geometry onto. It can be a triangular, quad or ngon mesh.
Any geometry inside the reference triangle gets morphed to every triangle in the mesh.
Any geometry inside the reference square gets morphed to every quad in the mesh,
…and so on for the other polygons.

If you know your mesh consists only of triangles, you only need place geometry inside the reference triangle. For the dual output of TriRemesh, we know it should usually consist only of 5/6/7gons, so we only need to create geometry for these 3 shapes.

The ‘O’ input is for the offset distance (or distances) to morph to - i.e. how thick the morphed objects will be. You can input a single value here, or if you want variable thickness, you can give it one value for each vertex of the mesh in M. For instance, here giving the thickness as a function of vertex X coordinate:



It sounds like maybe this isn’t what you are after at all, but are actually looking for a much simpler vertical projection and trimming of a regular hexagonal grid.
(Still, it was a good opportunity to explain a bit about this new feature, and hopefully useful for some others)

If you want strictly all hexagons, then remeshing is not what you want.


Hi Daniel

thank you so much. Yes definitely not remeshing it for this prohect. We just want hexagon shape projected onto the geometry/mesh that bulges out like a bubble. Do you have a reference that I can follow in that field that projects only hexagon bubble onto mesh (maybe allow to change one hexagon size on surface uniformly as well in GH)?

Lunchbox is for surfaces, and the one we are working on is mesh/geometry

while the true grasshopper/kangaroo polymaths return: (185.3 KB)

good luck with that!

1 Like

you’ll find many references

I guess this didn’t happen :frowning:

oh well,

Excuse the messy help,
this might help you get dominant over the subject- uses kangaroo inflation, which can get faulty and cranky (175.7 KB)


1 Like

THIS IS IT! this is dream come true!!!
While putting a hold on Kangaroo command I had to change the size of the hexagon to 2 and the extend X Y to 70

My new computer is thinking for 20 minutes and JUST COMPUTED IT so turning on kangaroo now. Hope it boinks up. once again thank you this is amazing. Can’t wait to bake it

I am really hoping kangaroo computes it… all fingers and toes crossed.

That seems odd - I just opened @corellaman’s file and the simulation was done in a couple of seconds.

It would also be possible to use the same mapping technique shown earlier with these regular projected hexagons.
Either way, I think it would be helpful to clean up the ones around the boundary - trimming surfaces like this gives some messy small panels.

If you change the hexagon parameter (I reduced the size (30%) using the slider from 7.5 to 2, and extend xy: from 25 to 70) , it takes forever to compute Kangaroo. It’s been 30 minutes and it doesn’t look like its gonna happen (too many bubble)

Also, I tried your GH file with just hexagons… and the surfaces are not bubbling up. I just made all three polygons hexagon… I may not did it right

Oh all fun of grasshoppering

That sounds to me like something wrong in the setup.
It’s late here now, but I’ll take a look soon and show a more efficient way to do this.

1 Like

There are a variety of issues,
starting with my distraction,
I failed to pay proper attention.

I should have configured my help with knowledge of these numbers I had no knowledge of.

the file I gave you was a mess, and still is, just less messy - got rid of unnecessary stuff.

unnecessary stuff also includes ultra small fragments along edges, inevitably resulting from splitting hexagons:

If you already have a result in mind,
and know kangaroo can handle it real-time (gh doesn’t like it, though).
So what you can do is:

  1. configure your architecture first,
    for example, the ‘scale’ for the offset panel ‘border’, which can end up being too thin:

  1. simulate (set to yes):

jk it won’t simulate!

Not real-time,
however if you are okay ‘waiting’ a bit,
you should obtain ‘something’!

Using the zombie solver in this case:

Took that amount of time on this computer when set to 25k iterations - can’t say it will take less or more or infinite on yours.

some panels get sacrificed:

I’m actually surprised most panels along the edge get ‘inflated’,
as their mesh beauty is definitely beneath Kangaroo’s taste:

Kangaroo likes remeshed meshes, but my grasshopper doesn’t care:

…which means it’s the end (for now) of my help! (172.1 KB)


This worked perfectly _colleraman Took me less than 1 minute to compute. I am living a dream now.
we tried it with Pufferfish here and it did not fill all the hexagon to the edges, this looks amazing.

thank you so so so much gonna go and cry a bit

Of course Pufferfish doesn’t have anything like this working with hexagons so I am not surprised it didn’t work :smiley: . Got to use the right tool for the right job. Pufferfish morphing is focused on Twisted Boxes which are boxes (4 sided, and also triangles). Mainly I didn’t make this kind of morphing because it already exists in Mesh+ and NGon (Barycentric Mapping). I am glad now that it is in native GH thanks to @DanielPiker (and with the great idea of it providing a template to place the units)

Not so fast!

I remembered dealing with this before while using meshmap, where some meshes, though seemingly ‘okay’, get rejected upon operating on them after they have been mapped.

I inspected the file and made sure I welded it flat, then mapped.

Works more effectively now:

with a reduction in computing time:

Here’s the latest
mshtosrf2 (1).gh (184.9 KB)


it works perfectly thank you :slight_smile: