Minimal surfaces

Sorry I’m really busy at work and I couldn’t work on the piece… Anyway you are right! I didn’t notice that rotation in the middle.

The process is the same that @DanielPiker suggested. To make the rounded and more precise shape I used the kangaroo component that pull points to the curve. So I was able to keep the shape close to the drawing.

I was thinking in those days that it’s maybe necessary to separete the mirrored shapes in the middle so to create a little gap and close this with a new mesh. The crease in those case won’t be created!

I didn’t try it but I think in this way, that in theory should work, I could have the problem when I will join everything together because I won’t have the naked vertices in the same position to join… It’s hard to explain I will show the problem when I can work on the model :grin:

If you are using Meshmachine to refine your mesh then try using the FixV input to fix the vertices on the naked edge and make sure these are already in the right positions so that they match the rotated shape.

Still not quite got it really smooth and it’s not quite a closed mesh (although repairs easily in Netfabb) but this is minimal surface through the holes and then pulled out to an arc to get it round…

Starting Mesh…

MeshMachine remesh with crease to pull points out to the arc boundary…

After Kangaroo SoapFilm, TangentialSmooth, Anchor and OnCurve…

Then this rotates and the vertices meet OK to Weld although there is a hole somewhere!

Still feels a long way off the original sculpture in terms of beautiful.

Hello Martyn,
one way to have better looking is to use what is described here.

Volumize using Dendro, I used a thickness depending on the distance from the edges
Quadremesh (in Rhino 7)
Use SubD or Catmull&Clark
From that

to that


Unfortunately I’m R5 and 32bit so I can’t try Dendro yet.

Please have a go at the shape originally posted right at the start. It’s driving me crazy and you always come up with something cool!

I’ll have another look at that link you shared in the meantime!

Nearly there (again, still)… I just need a mesh expert, possibly some C#, to stitch up the seams in the meshes using GH instead of having to do the last bit manually…

The stitching of the gaps where the “S” meets the outer rim effects how smooth this ends up after final subdivision…

Initial relaxed mesh…


This leaves a gap around the edges which is filleted in the original sculpture. I can fill this gap in manually (and tediously) but does anyone know how I could do this in GH? Meshes attached, internalised in GH file. (27.1 KB)

Looks (and feels) great in oak!
I’m getting one hard to machine area right in the centre twist which might be to do with setting Z heights after flipping the block over to machine the back face. Still have a lot of trimming and sanding to do.


There is one last thing about the shape that I can’t figure out… the original looks like it is convex at the top and bottom - it is minimal through the holes but blends to convex as these surfaces meet the edge of the shape - whereas using a mesh relaxation / minimal surface this area will be slightly concave.

It’s hard to see from just the photo though!


The ubiquitous yin-yang symbol holds its roots in Taoism/Daoism, a Chinese religion and philosophy. The yin, the dark swirl, is associated with shadows, femininity, and the trough of a wave; the yang, the light swirl, represents brightness, passion and growth. John Bellaimey explains why we all contain the spirit of yin and of yang – and how we can achieve a balance of both in our lives.

1 Like

How did you do this? What are the Rhino commands?

1 Like

I hope I am not intruding on this topic. The overall description (Minimal Surfaces) is certainly fitting but the specific forms under discussion are different than my current challenge.

I’ve been struggling to generate a smooth shape that is defined by five border conditions: One large square and four smaller circles:

A minimal surface script would appear to be a helpful resource and I have tried using a rhinoscript shared by Danny Boyles here.

I selected the following fixed nodes to initiate the script:

A careful inspection of this image will reveal that I had difficulty avoiding the selection of multiple nodes at once and this complicated what should have been a simple selection of perimeter elements.

All this to say that the mesh that I have been using as a basis for “relaxation” is not behaving as I would like. The existence of edges inside the mesh appear to also be derailing the proper execution of this script:

I have also seen a few tutorials online using the Kangaroo Physics Modelling Grasshopper plug-in by Daniel Piker and I’m wondering if this might be a better approach to achieving the desired result. The tensile structure video examples are pretty amazing. Any help on Grasshopper case studies that might relate to this specific application are greatly appreciated.

Hi Michael,

are you aware of the Sub-D surfaces introduced in Rhino 7? The main issue with direct modelling was always the continuity when modelling such shapes from surfaces. Only an experienced modeler could actually create good shapes out it. Of course there are automated approaches by using Kangaroo or other scripts to yield minimal surface meshes. But are you really in need to create perfect minimal surfaces? The issue with calculated approaches is always the missing freedom in design. I would rather use Sub-D surface modelling and check the curvature analysis for mean curvature converging to 0 (or at least reducing extremes in positive or negative direction).

1 Like

Hi Tom. Wow. I just watched an introduction to Sub-D. That is going to be a game changer. I have spent embarassing hours working on repairing edges, patching holes and creating good curves for curve networks for the Network Surface command. Having said all that… the ability to create minimal surfaces would still be quite useful for many of my architectural modelling applications…but Rhino 7 is definitely something I would like to try sometime soon. Do you think Kangaroo would have much trouble modeling a minimal surface between the five surfaces I’m showing? Thank you for the help.

The initial mesh you choose can have a huge effect. If you can find the time to follow this topic you can see we start with an initial mesh and then subdivide it before the minimal surface bit happens.

MeshMachine by @DanielPiker is a great tool for this.

You can start with a basic mesh and define fixed vertices and boundary curves and MeshMachine will give you a nice mesh which will then relax to a nice shape.

1 Like

Hi @Michael_Cobb,

Something to bear in mind here is that for the curves you show, the only true minimal surface (zero mean curvature) possible is 5 flat patches!
Because it is defined by a balance between the principal curvatures at each point (they have to be equal and opposite), a minimal surface can never form long thin necks like this.

I’m guessing though that what you are actually after is a relaxed surface, as could be formed by a fabric with all parts in tension (just not equal tension in all directions).
Kangaroo can find both true minimal surfaces and more general relaxed surfaces, and it would be fairly simple to set up here.

It’s true as martyn says that the initial mesh is key.
I would actually use a regular quad mesh for this case though - it’s probably easier to control.

Here’s an example setup: (20.4 KB)

Which starts as this simple mesh made in Rhino


This just looks tremendously helpful.Thank you Daniel. I’ve been looking at Shigeru Ban’s Pompidou Center in Paris and taken by the lattice structures he has been able to achieve.

The distance between something that is actually “structurally expressive” and what “looks good” is often deceptively far apart but I thought I would start at least looking at methodologies for replicating these smooth surfaces with wood latticework as a starting point.

Your illustration is right on the dot. I’ll download this grasshopper file and see how far I get. I did manage to get Kangaroo 2 installed.

Interesting what you say about the four circles being the minimal surface. I think I read some information previously in this thread about “necking” and it sounds like that phenomenon is what you are discussing. Among other things, a piece of fabric has the ability to deform as a function of its length in a given direction. I suppose soap film doesn’t perform the same way.

Thank you again for all this. You have me wanting to recall my primitive, and somewhat bygone, understanding of eigen values, gaussian curvature, mean curvature and such…The Kangaroo engine is great and I can’t wait to introduce it to my son who is in the middle of a high school physics class.