Live Soap Film

Hi all,

Does anyone know anything about how to replicate the behavior shown in Daniel Piker’s video ‘Live Soap Film’ Live soap film on Vimeo ?

I’ve searched through the forums but can’t find an example of the live component in use, plus I imagine there might be some tricks in the generator of the mesh from the curves which I can’t quite understand.

Thanks for any help or advice!


Here’s one example: Tensile surface from curves:
I was thinking I’d posted more, but maybe not, thanks for reminding me - I’ll share some other examples soon


Here’s a better one - more like what is shown in the video (26.6 KB)
It includes an option to turn on volume preservation for CMC surfaces, plastic drag and bending for the boundaries, and a few different starting meshes to choose from.

Note that although the vertices can redistribute, the total number of vertices stays fixed, and also the number of points on each boundary. So while the starting mesh doesn’t need to be a great mesh, the ratio of boundary points to internal points should be reasonable.
Also, the number of boundaries and the genus (number of ‘handles’) of the mesh stay the same. I’m working on an update though that will also allow genus change.

One thing to watch out for - I’ve realised there’s a bug with the grab goal where occasionally it will cause an error if the simulation is reset and the last grabbed point had an index higher than the number of points in the new simulation - if this happens you can work around it by selecting the grab component,and using Ctrl-X,Ctrl-V to cut it then paste it back in, which works to reset its index.


Daniel, could you please internalise the meshes?


My mistake. I updated the file above now with the meshes internalised



Thank you for the amazing plug-in! My students have fun semester after semester with Kangaroo 2. Regarding the Live Soap Film and the definition that you shared, I’m having some difficulty getting meshes that I created to work with your definition. Attached is a Rhino file with an open ended Box Mesh. I’ve racked my brain trying to figure out why it won’t work. Any advice that you can give would be greatly appreciated.Livesoap_Issue.3dm (71.7 KB)


Glad to hear they’re having fun.
Which definition are you using that mesh with?

If I plug it as an input into the last definition I posted above ( it works.
The ends are too far apart to form a catenoid, so it splits into 2 disks, but if you pull them together it can reconnect.


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.