Live Soap Film


Thank you for the quick response! You found the issue. The ends were too far apart.
Thank you again for looking into this. It is greatly appreciated. My students and I thank you. If you’re interested here is a link to a recent tutorial I made for my students using Kangaroo 2.


1 Like

Hi Daniel!

My apologies for not thanking you sooner! This is a really cool definition.

I only had one question. You referred to working on an update where you are able to change the genus or ‘handles’. I’m not too sure what these are exactly, if they’re not the boundaries? In this updated scenario the topology would still have to maintain the starting mesh?

Thanks again, we’re getting really close to be able to prototype this sort of thing in Kangaroo!


1 Like

Indeed - those Frei Otto experiments were a big inspiration

About the genus changes -
In the current version there is no way to start from a simple disk and deform it into something like this…

…even though this still has only one simple loop as its boundary. This is because it has a topological ‘handle’. Note that handles are different from holes here (holes are closed boundary curves).
I plan to release next a version where both holes and handles can be created and destroyed interactively. (Handles can sort of be destroyed already - if you stretch a tunnel too far it will collapse into a single thread,

but they never really go away, and if you bring the sides back together you can often get them to open back up again)


Ah I see what you mean by handle now, thanks for the explanation.

May I ask where this updated version sits on your list of priorities? I imagine you have quite a few things on the go, so I was just wondering whether this might be a few months away or so?

We’re currently looking at how these types of forms could be prototyped digitally and then integrated into a fabrication process. So super keen to help out any way we can we the development.

Daniel Piker, I downloaded the formula you posted, but it looks like this. What’s wrong?

Hi @zfq947254420
There was a bug in an old version of the rod component, but it was fixed several service releases ago.
Which version are you running? This will probably be fixed by updating Rhino.

Hi @DanielPiker, am I correctly assuming that SoapFilm does not work with large input meshes (large, as in big dimensions). I change the mesh in your original example to be roughly 3000 mm in length. The mesh collapses onto itself.

My goal is to make CMC surfaces with a bbx of up to 5 x 5 x 5 m.


02 (19.6 KB)

Your file works fine at that scale without the volume constraint - just one of the tunnels collapses leaving a single saddle (the same happens with real soap).

I see the volume constraint does depend on the units though. I can look at changing this, but easiest way for now is just to use a different scale for the form-finding - the shape will be the same.

1 Like

Hi Daniel, thanks for getting back. The collapsing tunnel was what I was wondering about and I understand how it is correctly resembling a real soap film. Is there another way to optimize towards CMC, with larger sizes, while preventing that tunnel from collapsing? Eventually achieving the same result, as if one would optimize the smaller scale version of your example and scale it up afterwards?

If not with Kangaroo, any input about papers describing methods to achieve discrete CMC would help. I found some information here, but only for meshes with non-triangular faces: On Discrete Constant Mean Curvature Surfaces | SpringerLink.
Bobenko also seems to have something on the topic, but I could not access the book yet: Discrete Differential Geometry. Integrable Structure

Just turn on the volume option to find CMC surfaces like this: (19.6 KB)

You can then change the volume to change the relative size of the tunnels.

Hi Daniel, thanks for all the answers. I am having a hard time getting the examples to work on other geometric inputs - even simple catenoid configurations (please see image below) with reasonable dimensions of a 40 mm radius (numeric value and real world). I tried LiveSoap and SoapFilm with TangentialSmooth.

LiveSoap (15.7 KB): The tunnel collapses with volume false. With volume true, no result is computed. I tried many different values. I am wondering how the volume parameter works. Is there a paper describing the method you implemented?

SoapFilm w. TS (14.8 KB): Starts well but never converges and ends with a collapsing mesh. Also the strength values between SoapFilm and TS are quite disproportionate to avoid a fast collaps.

Thanks! S

1 Like

What is the ratio you are using for the separation between the circles to their radius?

No stable minimal surface solution exists when this is above ~0.663, so collapsing is the correct behaviour. (That is to say, you can’t have long thin catenoids)

1 Like

The below example is at radius/distance = 40/50 = 0.8.

If the mesh resolution is increased, collapse can be prevented. Still getting folded triangles though:

Everything above is done with

Yes, 0.8 is indeed larger than 0.663

This means there is not a stable soap film between those rings.

Thanks, that was it. Just for others reading this. Above I flipped the ratio numbers.

Is it possible that this does not exactly correspond to a physical catenoid? I did a quick physical test with the original radius 40, distance 60 and was able to produce the soap film while pulling apart the rings. Why could that be?

Secondly, why is it related to mesh resolution? With a denser mesh, I can achieve more distance?

Sorry, for bugging you.

I meant to say separation/diameter.
Still, diameter 80, separation 60 is I believe theoretically not stable without volume constraint.
Do you have a photo of this 0.75 ratio soap catenoid?

As for the resolution, if the equilibrium shape is stable but close to an unstable one, small differences in momentum could carry it past the stable point, especially if the starting shape is far from the equilibrium one.
If you need to find a minimal surface which is just on the brink of stability, you could start with an anchor strength 1 on all internal points and gradually slide it down to zero.
Think of it like trying to find this dip in the energy landscape. If it starts too high or goes too fast it can easily roll past the local minimum.

1 Like

Thanks for the clarification regarding the ratios. I’ll take a photo tomorrow, need a second person to do so.

1 Like

It sounds like you were maybe trying to do this by hand and eyeballing the distances? which could explain a misreading like this.
There’s a well established limit theoretically and confirmed experimentally though, which is why I’m quite confident that you made some mistake in your measurement (you might get a longer catenoid momentarily, but as it’s unstable I think it won’t last more than a fraction of a second).

Here’s an example showing that Kangaroo’s LiveSoap does indeed agree with the theoretical value and pop the catenoid into two disks (the Goldschmidt solution) right on cue at the predicted ratio (13.5 KB)

The above is for actual minimal surfaces, but if you want you can also generate stable tensile surfaces which are not minimal in Kangaroo by using EdgeLengths with a LengthFactor of zero. This will let you stretch it into any ratio you like without it popping. The shape won’t be a minimal surface, but it will all be in tension.


Hi Daniel,

thanks for the papers, links and all the clarifications. It is greatly appreciated!

Please find the photos of the soap film test below: For the first test (no photos) I indeed eyeballed the diameter along the yard stick. For the second test when I did the photos, I calculated the exact circumference. The diameter in the first test was slightly too wide. After adjusting the circumference, it was only possible to get to approx. 50 mm (.625 ratio). Which is pretty much the theoretical ratio of .663 - my shaking hands ;).

Edit: Just for others reading this: As mentioned by Daniel above, with physical tests you can get to ratios above .663 dynamically, but the films are not stable. This added to the exaggerated result from the first test.

The earlier collapse of coarser meshes makes total sense after your explanation with the dip in the fitness landscape.

What’s most relevant for us is to achieve the CMC property of the surface. You mentioned minimization of edge lengths for tensile structures? Would this also achieve CMC? As far as I understood it is not sufficient.


Nice experiments.
I confess I’ve never actually tried this with measurements physically myself, so it’s nice to see confirmation.
I imagine getting much closer to the theoretical limit would require strict laboratory conditions, as it’s the equivalent in my green sketch above of trying to balance the ball on a vanishingly small bump on the side of a steep hill, so little vibrations would tip it over.

Area minimization with a volume constraint (as with LiveSoap with ‘UseVolume’ on) should produce CMC surfaces. Minimizing edge lengths alone indeed won’t give CMC surfaces.
Some shapes are a bit easier to achieve as stable CMC surfaces - for example, with minimal surfaces most shapes with handles or tunnels collapse, but the additional volume constraint can make some of these stable.

However, lots of the spatially interesting CMC surfaces such as the ones in that Polthier paper you link are unfortunately not physically stable (despite being true CMC solutions). These critical point solutions are a bit like geodesics between 2 points on a sphere. Generally there will be 2 different arcs between them on the same great circle, both these arcs are geodesic, but an elastic cable would only be stable on the shorter one.

These unstable solutions aren’t as easy to model with Kangaroo - it will generally be like physical modelling, so ones that pop there will pop in simulation.
Finding CMC surfaces within fixed boundaries is relatively easy, but anything closed tends to just pop to a sphere, and trying to find something periodic with handles, the handles quickly pop.

Sometimes it is possible though. For instance, if you know some symmetry properties of the correct solution, enforcing these can sometimes be enough to stabilise it without distorting it from CMC.

I am interested in finding better ways to simulate the unstable minimal and CMC solutions though. For discrete quad versions you can use the Koebe polyhedron method I was talking about recently over in this thread.
For something more general it might require some changes to the solver though.

1 Like