algorithmic modeling for Rhino

Inflate multiple balloons within a boundary volume (using Kangaroo).

As part of the Grasshopper2 material preview I'm looking to inflate several spheres until they fill up a boundary volume. Sphere volume is allowed to grow without bounds, but the total volume is of course limited to the boundary volume. Spheres are not allowed to intersect each other or themselves. I'd also like the sphere/balloon surfaces to appear to be under tension, so no sharp creases allowed. Some control over the balance between inflation pressure and surface tension will be required. Gravity optional.

Whoever comes up with the best solution will be listed as contributor.

Views: 22829

Replies to This Discussion


I give it a small try refurbishing the nice "raisin" definition by Daniel Picker. For now, it only deals with one balloon and one container...but I'm sure that will be easy to add more volumes. I know that you were asking for multiple volumes, but this could be a good start point.

I've tried adding more "balloons", but I'm still a little bit confused about how the new kangaroo solver and goals deal with data trees in some scenarios...

Check the attached definition and see if this could help. 


I've detected that the problem comes form the volume Goal...I don't understand why it cannot handle more than one item to create the goal :(

Try the definition attached here and try connecting Volume Goal component to makes the solution to fail.


Hi again.

It seams that there is a bug with Kangaroo 2.0.2 that is stopping us from getting the multiballoon solution working. As soon as Daniel give us a solution I'll check the definition again.

I got it working for one balloon myself, but couldn't scale it up to multiple ones.

For sure it's because the bug...just wait then.

Thank you for sharing your scripts!

I am trying to use/adapt this script for an architectural project. I would like to simulate the result of something rotational moulded. I think I might be doing something wrong because I am not getting the same results you have.

The main difference between your script and what I have is that my objects are larger. They are architectural sized.

Also, when I opened your file and ran it the first time the sphere did not inflate into the whole boundary volume. See attached image.

I have been searching for tutorials for how to use kangaroo for inflation within a boundary but I have not found any. Sorry, I am new at this!

I attached the grasshopper script with the alternations. The multiplication widget was out of date so I replaced it.

Thank you in advance for your help!


Hi David-

I just had a bit of fun with this...I am making liberal use of Daniel's Goal interface and doing an end-run around the mesh volume issue by creating a simple face inflation goal. I am also making a dynamic mesh bounce goal that dynamically rebuilds each individual mesh in the solver to test for other vertices being inside or outside, so that they bounce off of each other. I've been curious about making something that allows for dynamic mesh interaction like this...I'm not sure, but I don't think that Daniel has published one that does this doubt it's not very efficient, but at least it gets the job done. Right now it just gets one inflation value for all of the input meshes, but that could be adjusted pretty easily.


Very incremental upgrade...adds variable pressure for each balloon and a couple more slight efficiencies.


:) Nice! 

This is working pretty well. Thanks! I haven't managed to generate the geometry I want yet, I'm still playing with the file before I switch to high quality meshes and find something else to do for a couple of hours...

I noticed unwelded and quad meshes don't work, and it doesn't like singularities either. But I can make the start shapes using WB subdivisions of a mesh box and that works good.

Yes...I think that Mesh.IsPointInside needs a closed and welded mesh to work? It relies on that to negotiate the mesh interactions in the goal. And also the inflate goal is super rudimentary and runs only on triangular faces (creates a cross product from the three particle positions), and I think indeed it does prefer meshes that are more or less evenly trianagulated (I used WB to construct and subdivide an icosahedron for the spheres). I don't know if you've played with Daniel's MeshMachine, but it's great at taking meshes of all kinds and creating clean and even triangulations.

I took a little time off from writing to clean up the code quite a bit, and hopefully make it easier to integrate.





© 2021   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service