Plateau’s Laws, Soap Bubbles & Grasshopper

The Grasshopper script simulates a random soap bubble cluster starting from 3 soap bubbles of known radii based on Plateau’s Laws. All surfaces in a bubble cluster are spherical, including films dividing two adjacent bubbles.

A list is used to store valid bubbles generated through a Hoopsnake sequence and a number of custom components calculate correct bubble intersection in line with Plateau’s Laws.

Author: stratocaster47

Live music maniac

14 thoughts on “Plateau’s Laws, Soap Bubbles & Grasshopper”

      1. Actually I’m not an expert in grasshopper, that is the reason that I was wondering if is possible to have the definition. Do you know if is possible?

      2. Hi @Pablo, have you clicked on the images of the blog post by Andrei? The printscreens are very high resolution so quite easy to reproduce, just double click on your Grasshopper canvas to get the right components – It would be good for you to try in order to learn before getting the entire file which was very hard work. Trust us, this is a much better way to learn the tool than getting finished scripts! Keep us updated with your struggles and we will help.

      3. Hi Arthur, Thanks for the recommendation and help. I will keep you update if I get any problem.

      4. Andrei, really AMAZING!
        I just met with a professor for minimal surfaces in germany.. he would, but could not help!

        I am a international artist, mostly doing sculptures of complex bubble forms (all ‘outer’ forms) and themes of self organization for years.
        Outer bubble forms are relatively simple to calculate for me,
        yet still challenging to physically execute with stainless steel intersecting spheres.

        Since some months I am trying to do the ‘inner’ structures of bubbles in steel – and large too.
        So the challenge here is programming in Grasshopper.

        My Rhino skills are adequate, but in Rhino, Boolean differences will not allow me to calculate with Plateau’s Laws to get the proper ‘inner’ intersections!
        After much research, you seem to be the ONLY genius to be able to do this!!! Congrats!

        It is very kind that you posted the Grasshopper screen-shot.
        Still, I must ask- because it is over my head to re-create it,
        I wonder if I can interest you in some kind of cooperation- against interest, credit, fee, or even swap for an artwork?

        I have read the advice on this blog: “It would be good for you to try in order to learn before getting the entire file which was very hard work. Trust us, this is a much better way to learn the tool than getting finished scripts!” –

        than try to do their work as well !!!

        So, please have a look to my website to see I am serious and to be turned on I hope.
        See: the ‘Stemmer’ (bubble) series, and the ‘Self Organizing Still Life’ works (videos of interactive-granite sculptures).

        If you are interested / curios in any way to know more about the project – please contact me via my email posted on my website.

        Beyond similar interests and the joy of merging disciplines,
        I hope to make it worth your while in any way!

        Best Regards, David

  1. I’m having some trouble creating the bubble clusters and the bubble list. Do you have an idea of how should I make these components?

  2. Dear all,

    I am very happy to see people are still interested in my work and appreciate your questions. I look forward to your feedback as well.

    The clusters are in the first image. They are needed for the definition in the second image.

    It is all pretty basic, it’s the first Grasshopper definition I ever made, five years ago already. You should have no trouble recreating it. In case you have specific questions, please use the grasshopper forum and post a link here; I will reply there:


  3. Hey Andrei, I have a few questions about the script. The link you posted to the old grasshopper forum is down so I will ask here. Firstly where does the hidden wire of the generic data parameter “wormhole” lead to? Is it to the original 3 bubble list before hoopsnake? or to the feedback output to hoopsnake?

    The other part I am having trouble with is the verification process of steps 5.1/5.2. The split tree component does not take any integers for masks so I converted them to data paths (i dont know if that is causing a problem). Furthermore it seems to be weeding out the 4th bubble even if it is valid, leading to a failure for the hoopsnake component. I’m also assuming that you are supposed to feed the data component on the far right of the script back into the feedback component correct?

    Any help or insight would be greatly appreciated, It took me many hours to filter through and replicate all the wires. Really amazing, and rigorous script!


    1. Also, I am finding I have to simplify the output of the feedback on the hoopsnake component to get it to work for the first round, yet I do not see it in your script. When it is not simplified the random selection of bubbless a b and c are unable to read the path information in the correct format. It does not proceed to any further iterations at the moment. Any thoughts?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: