Elbphilharmonie Hamburg by Herzog de Meuron

Any suggestions on how to recreate this kind of geometry? Im trying to recreate both the slick outline of the building elevation and the draped kinda roofscape. I found a tutorial on youtube, but couldnt get it too work (what is going into the entwine battery and bounce solver goal object?!)

Any expertise/help would be greatly appreciated.

Hell, if someone made a working script i’d slip you some money…

But yeah, currently stuck and really need this. Thanks in andvance for any sign of help!

solid different.gh (11.4 KB)


@Quan_Li solution seems to be near from what it is said here

For me if you want to have exact spikes positions it could be better to make a mesh with these points.
If necessary and has the mesh has not a lot of points this mesh could be parametrized with genepools for the height.

After that you extract the 3 points of each face

Then for the fourth point you can move the center of face, circumcenter of face, along normal, along Z or all points on a plane …
Play with the distance in order to have on the quad face just one shape

But this looks like catenary curve and some draping so Kangaroo seems also more appropriate
so the idea is the same has above, make a mesh.
Do some catenary curves between the points, they will be used to guide the draping. Without constraint on borders the draping will become convave view from above.
Make a mesh

Subdivide it for Kangaroo simulation

Make catenary curves on the edges of the faces, and use the same ratio for catenery . From the pictures the ratio seems to be like around 1.25 +/-0.05

Anchor the points of the low res mesh

Add load to the points

Make Catenary curve inside Kangaroo (same ratio as the others)

Gives tension to the shape

Apply the magic

elb sphere.gh (10.0 KB)
elb.gh (63.8 KB)


I don’t think you have a lot of work to do
Put points on a plane or whatever you want

to cover the surface add 2 corners so you will have 12 points.
Make the mesh using connectivity

Make a genepools with 12 heights … and plug that in the script provided.
This part of script

1 Like


My bad I took a Kangaroo (1) component and not a Kangaroo2 !!! I didn’t uninstall Kangaroo (1) as it as components that are not in the 2.
elb.gh (66.9 KB)

Here I changed a bit of doing the mesh. If you want to use points, bake them in Rhino, then plug the pipeline then change the points int rhino.

building.gh (68.1 KB)

1 Like

No Boolean.gh (71.5 KB)
Get the Viper 7 from GitHub.


This works well with Catneray curves

building2.gh (76.5 KB)


Does this shape have a name? I’m making a 3D print of it, but don’t know what to name it.

The base curves are generated by this component in the Viper 7 Plugin.
Maybe this is the correct name.

Get latest version from GitHub, not F4R.
GitHub - zohozer/Vipers: Vipers: Components developed by Tang Chi for Rhinoceros/Grasshopper.

Thanks Quan - I was not aware of that plugin. What’s interesting about it is the way it enumerates the edges. I tried substituting the stock GH dodecahedron and icosahedron objects, but they failed miserably, apparently becausse of the way the surfaces and edges are generated.

I’ll update this post with a pic of my 3D print in a few hours. It’s actually quite nice.

OK - I got the Viper 7 GHA plugin working OK. There sure are a lot of objects there. But none of them match the one you showed. Viper 7 has 6 different polyhedra objects named PolygonA, B, C, D, E, and F. The one that works best is A:


But this is different from your original post and I haven’t been able to find anything in Viper 7 that matches that shape:


Have you tried to right click on the component? That component gives three options.
Nice print!

Ah, of course I missed something simple - a right click! Will try that and see what pops up. With 6 different versions to try I should be busy for a while.

Thanks for the tip.

Well, that’s a pretty big bunch of polyhedra. I did look at them all, and most of them had way too many faces to make reasonable prints at the size I’m able to make. The ones with fewer faces looked better, but their overall shapes ended up being too slim and pointy. I did find this one that looks reasonably printable:


But even this one has small diameter points that could be problematic. I’ll give it a try and see what happens.

Hi, @Birk_Binnard, how did you make the faces warp inward in this one. Certainly, it was not done by Edge Surface like mine, because that one only supports 4 edges. I am curious about what method you have used. K2? like @laurent_delrieu 's first definition?


“how did you make the faces warp inward”

I spent a fair amount of time fussing with the code you posted. It quickly showed me a number of what I call quirks in the GH software. A quirk is something that GH does that is unexpected (at least by me.)

Yes, your method is limited to 4 edges. I didn’t like this much because there are lots of polyhedra that have faces with more than 4 edges. I tend to like those better, so I tried various ways to find a way to make that work. The bottom part of the attached GH file shows how I failed to do that.

The top half is your method unchanged, except for the parts at the end that whack the shape in half and hollow it out. This is what I added to make the shape 3D printable. I have a standard FDM printer, so the only way to print the complete shape is to print 2 halves and join them together, which is what I did. (A large resin printer could do the whole shape at once, but hobbyists don’t have those.)

The bottom half of the file uses standard GH components (except of course for the PolygonA component). This method produces a nice looking result, but I could not use it for 3D printing because it is a collection of trimmed surfaces, and I have been unable to find a way to convert this into something I can deal with - which is of course a closed Brep like your method produces.

I believe the reason I failed has to with the way GH/Rhino deals with surfaces. A trimmed surface actually retains it original untrimmed shape internally, even though GH shows the trimmed result the way you’d expect. But if you try to do something with a trimmed surface the original shape is what gets acted on, and this produces either nothing or an undesired result. This isn’t really a bug, so I call it a quirk.

In my GH file the final SDiff doesn’t work with the PolygonA shape, and I couldn’t find a way to make it work. So I can’t print that one.

30srfs.gh (26.4 KB)

30srfs Edited V0 Create Solid.gh (18.2 KB)

Here is a way to turn the surfaces into a solid after Patch.
Patch is a great idea, never thought of that.
Parakeet is needed.

1 Like

Wow! That’s great - thanks. There are so many add-ons out there I could never figure out which ones would be helpful for the limited kinds of designs I make. But that one solves a key problem I’ve had for quite a while, so I’ll go get it right away.

Thanks again for pointing these add-ons; now I have a whole new series of things to make.

Oops! It turns out I failed to follow the Parakeet installation instructions. They say to copy the files, and not the directory that holds them, into the GH Components folder. I didn’t do that - I just copied the whole directory, and this seems to stop the required Parakeet modules from loading.

So I fixed that and got much better results. What I found out was that the Vipers polygons that have lots of faces don’t produce printable results, but the ones that have fewer faces work well.


Well, unfortunately it didn’t work out so well. The Create Solid component did make each untrimmed surface into a closed brep, but the results did not display in Rhino and the resulting STL file didn’t load into my slicer at all. There was an STL file but even my STL viewer wouldn’t show it.

I’ll do more experiments tomorrow and see what I can find out.