My (mis)adventure with meshes

Some time ago I made this:

and then I saw a photo of the Chinese Olympic’s Ice Skating pavilion - the one with the large rectangular puffed outside panels. So I thought I’d try using puffed up hexagons instead of rectangles for a somewhat different shape.

I learned how to make a puffed up hexagon like this by using Kangaroo:

But when I tried to use SrfMorph I got (of course) the error message about “you have to use a Brep” because (of course) Kangaroo produces meshes.

So I tried a couple of ways to turn the Kangaroo mesh into a Brep. Using Quadremesh etc. produces this:

and using Faceb etc. produces this:

(es, I used different values for Kangaroo’s Pressure parameter for these results.)

The problem I had with both of these was the very long times my Ryzan5 based PC took to show the results on my Rhino screen. It actually never showed anything - I got impatient and cancelled it after several minutes of no visible results.

My new final shape uses 840 of the puffed up hexagons, and I figured the problem was the total number of squares or triangles produced by the mesh ==> Brep processes. So I proceeded to make my own approximation of a puffed up hexagon using 6 Loft surfaces that looks like this:

Clearly not as nice as the smooth Kangaroo one, but Rhino rendered it in about a minute and was able to export my final result as an STL file in around 20 seconds. It’s a 14 hour print in process now but looks pretty good so far:

Obviously I know nothing about how Rhino’s internals work, but it’s pretty clear to me that Breps are the way to go for making any geometry that has lots of individual parts. I reckon I could find a way to be more patient if I had a real job to do this sort of thing, but since I don’t that’s not going to happen.

Now if only there was a way to smooth out those sharp edges…

Share some geometry. I’m sure a few people have ideas how to make this more smooth….

Here’s a quickie I whomped up containing all the geometry etc. I disabled the SrfMorph so the GH file would load quickly. Here’s what the Geo objects are:

Kangaroo output: a puffed 2D hexagon that’s what I started with but never let SrfMorph run to completion

Puffed Brep: The results of converting the Kangaroo meshed output to a Brep

Loft Cell: The 6-loft cell I made to approximate the Kangaroo output

WavyPlanter2: the 2 Loft surfaces (outside & inside) that define the final result. The Item component picks only the outside surface for the SrfMorph to arrange the puffed cells on.

When SrfMorph is enabled my system takes 9.9 seconds to complete. When I select it it takes about 25 seconds to display on my Rhino screen. My PC has 2 screens - one for GH and the other for Rhino.

I’m guessing there is no easy solution to this, but hopefully I’m wrong about that.

Example.gh (313.2 KB)

chocolate dome v0.gh (58.9 KB)

Can be applied to any sides regular polygon
Needs Weaverbird and NGon

chocolate dome v1 checherboard.gh (59.3 KB)
v1.
Checkerboard version

Thanks. I’ve not heard of Ngon so I will check it out.

Here’s a way you can quickly get these puffed out shapes as SubDs for a collection of polylines, without plugins or SrfMorph

bulgePolylines.gh (17.6 KB)

Good grief Daniel, your solution is (for me at least) simply mind boggling. I get that you are a McNeel person and are aware of things I could never even dream of, but how you figured that out is just amazing. I don’t know that I’ll ever understand exactly why it all works, but I’ll have plenty of things to look at for quite a while now.

A couple of notes on some details:

I see how Trimesh works and therein lies a bit of trickiness that I’m not sure how to deal with yet. The issue is the reverse curvature my base shape has. When I combine your method with my base geometry I get this:

The reason, of course, is the Trimesh hexagons are planar shapes and the size I made them is too big to follow all the indentations on my base shape.

So I scaled down my shape a bit and got something that looked OK, but in reality it is unprintable because of this:

Fixing that gap closes both the top and the bottom, so something else has to be done.

The good news is your solution can be Capped. I was surprised that doing that results in a Closed Brep, which means I can easily SDiff the inside shape and get a nicely printable result:

The top edge looks a little wonky in places, but reducing the size of the hexagons a bit will minimize that. It should be fairly easy to come up with a good compromise.

Finally, I do miss the regularity HexGrid gives the final result, but what I’ll probably do is post both results so people can decide which one they prefer.

Thanks again for your truly elegant solution - I guess that shows what is possible when you really know what you’re doing.