Kangaroo Water bubbles :)

Thank you @DanielPiker it make sense now. Length default value was 10.

I will keep experimenting, I probably will develop a sense for these things…

I want to try with 2 or 3 bubbles and see how I can interact with them …

Thanks again

What is the reason you have multiplied length two 2? Can’t you just make more subdivisions?
Or you keep initial length and then set target one?

I added the length multiplier just to make it easier to start from the current length as the target length (by making the multiplier 1) and gradually increase it.
Making more subdivisions is tricky to do while the simulation is running. Generally if you want to change the number of particles and what they connect to during simulation it requires scripting.

I’ve also been playing a bit with simulation of liquid blobs:

and here’s an experiment I made with dynamically reconnecting them:


It looks AMAZING. It is basically what I was trying to get too. But I don’t want to copy your solution, I want to understand how it works.
My goal is to create a dynamic tool for bubble diagrams… something like this

Can you give me a hint how to start :wink:?

Oh man it looks so nice :+1:

Try the definition from here:

1 Like

Thank you will do

awesome @DanielPiker, that reminds me of this simulation.


Hi @ErickVasquez it does look great.

Hi @DanielPiker thank you for the example you gave I think I starting to understand how it works.
Can I ask a couple of questions:

  1. What the difference between solvers ? Solver, Step Solver and Bouncy
  2. Which one to use in what situation?
  3. What show component does?

4.And most important is why interaction is so slow, or to be more precise why Rhino viewport do not respond while simulation is running?
And I can’t double click on a Boolean Toggle in Grasshopper, I have to click escape to be able to do it.

I have attached two videos with Solver (where rhino is not responding) and Step solver (where viewport works but one mouse click at a time)

Thank you.
squishycurves.gh (24.3 KB)

Ok did a couple of simple tests just to see when Rhino and Grasshopper starts to have a problem.

  1. With 10 lines starching with Kangaroo length everything works fine
  2. With mesh stretch of 10by10 cells works fine
  3. But as soon as I increase cells num to 25 everything just stops ((

Just to explain a bit better. It looks like while kangaroo is running a simulation rhino and Grasshopper viewports do not respond, only when simulation is finished Rhino and Grasshopper are back to normal. But a s soon as you change something and simulation kicks in all stops and the only way to get control back is to hit “esc” multiple times to quite the simulation.

I have attached the video. Watching others simulation videos I think it is only Mac version problem.

@DanielPiker and @dan could you please take a look?
Maybe It just a system setting you have to change?

Thank you guys

Test_set.gh (8.8 KB)

Thanks @arten

I hadn’t realised this was happening on Mac. I usually work in Windows, and had only tested smaller simulations on my Macbook. It looks like something strange is going on with the Kangaroo updates blocking Rhino/Grasshopper interaction. We’ll have to look into it. Thanks for the videos and letting us know.

To answer the other question about the different solvers:
‘Solver’ should usually be the first choice. It updates the output as it is automatically iterating, and tries to converge as fast as possible.
‘Bouncy Solver’ also updates the output as it is automatically iterating, but particles have more momentum, so they bounce around more. This makes it slower to converge, and potentially less stable, but is sometimes preferred for the visual effect, and can make it easier to see what is happening when the regular solver converges too quickly.
‘Step Solver’ doesn’t iterate automatically like the others, it only takes a step and updates the output when the input updates. The main use for this is creating animations from a slider. If you connect a slider and use Grasshopper’s built in animate slider function, it means it will capture one frame for each solver update, which will give a smoother animation than using a screen capture.
‘Zombie Solver’ does all the iterations (either to convergence or reaching the max iterations limit set) before updating the output, so you only see the final result. This makes it behave more like a normal Grasshopper component, and can be useful if you want to include Kangaroo in another looping plugin like Galapagos.

1 Like

Thank you Daniel for very detailed explanation. I will keep learning Kangaroo.
Maybe I would consider installing Win over bootcamp so I can work.

Should I somehow report a bug ?

Thank you for your help

Hi @DanielPiker,
How to slow down the simulation? I am doing a simple particles / gravity sim and it is very fast.
I tried to use Step solver, bout it looks like I doing something wrong…

btw watched your lecture at STRELKA , very interesting :wink:

Particles.gh (11.9 KB)

Hi - just change the force to a smaller number - e.g. -0.1 or -0.01.

I was really hope to to use real world numbers?
Lowering the force only works with step solver, don’t understand why it doesn’t work the same way with simple solver?

Hi @arten,
Your simulation only has points falling under gravity, with nothing else resisting it or holding them together, so they will just fall straight down to infinity.
If you want them to be chained together, add Length goals between them. If you want them to hit the floor, add a Floor goal.
With the Bouncy solver and Step solver, you have an option called ‘Iterations’ or ‘SubIterations’, which control how many internal iterations the solver takes between updating the output. The default is 10, but if you reduce it to 1 the result will move more slowly.
As I said in my descriptions in my last post, the main intended use of the StepSolver is for slider animations, not interactive display like this. Here I’d normally use the Bouncy Solver.
The simple solver behaves differently because it is trying to reach the final equilibrium solution in as few iterations as possible, not to show the dynamics.

Also - I wrote a longer description of how Kangaroo deals with dynamics in this thread

Hi @DanielPiker Thank you. Everything is clear.
Sorry for so many questions, I found lots of tutorials on Kangaroo 1, but it is a bit different from version 2.

Hi @DanielPiker,

After a week of working with Kangaroo , I now think I know how to work with it, thanks for your help.
Even got the step solver working.

Can I ask I hope last questions (for a time being):

  1. Am I correct in saying that Kangaroo is not physical calculation/ analysis tool. It is a form finding tool. For a example there is no reason for me to use real gravity to get to the form I want? I need to find a form first and then use different structural and material analysis tools on it and iterate until I got a desired result.

2.What will you recommend (plugin or approach) to set a specific parameters to structural members. Say I have a bending rod or plate, how would you specify max bend factor for wood or sheet of metal?

  1. In step solver how to sync number of iterations with animation slider? So it animates until kangaroo is converged.

4.For some reason I was avoiding Kangaroo fro a long time, but you have created an amazon tool. The only thing is Mac version is super slow (it is not interactive). Do you have timeframe for fixing it? And is Kangaroo still in development?

Once again thank you

Great to see your progress.
To try and answer your questions:

Kangaroo is primarily a form-finding tool, but it can also be used for analysis with real values of material stiffness, load and deformation, for certain types of structures.

When form-finding there is no need to use real values for gravity or stiffness. Just like Otto, Gaudi and Isler making models with hanging chains and inverting to find compressive forms, or dipping wires in soap to shape tensile membranes, it is not a direct simulation of the building materials, but a process which makes use of key physical behaviours of the model material to generate a geometry with particular properties that will be useful for the later actual built structure
(the chain does not resist bending, so hangs in a shape of pure tension, the soap film stretches into a shape with equal tension in all directions).
The actual magnitude of the tensile forces in the chain or soap are not important for this step.
(though if you want to be really accurate, you do need to pay some attention to how you set up the relative weight and stiffness distribution in the form-finding simulation)

For analysis you can set real material stiffness values and get numerically meaningful deformations for things like cables, space frames with only axial forces, and bending rods in Kangaroo. See here for another thread on this. There is also a Grasshopper plugin by Cecilie called K2Engineering which uses Kangaroo and adds components to make setting up these simulations with real units and materials easier, with more tools for pre-stress and analysis.
For more detailed analysis of things like plates, shells and beams in Grasshopper, I’d recommend looking at Karamba. For volumetric analysis of solid parts I’d recommend Scan-and-Solve

For capturing animations using the slider and the Step Solver, one thing to be aware of is that for the ‘Animate’ input parameter, the actual value isn’t important - it only matters if it is zero or not. It is just a way of making use of the built in slider animate function of Grasshopper (which automatically updates a slider in increments and captures a frame for each). As long as the slider starts from zero, it begins by resetting the simulation, then each time the slider updates(to any positive value) it triggers a Kangaroo update (which means as many internal iterations as you have set in the ‘SubIterations’ input).
The way I generally use it is to move the slider around manually to see how many iterations it takes to reach the point in the simulation I want the animation to stop at, then right click the slider and choose animate, setting the frame count to this number of iterations divided by my SubIterations setting.

Finally, about the interaction speed in Mac. I do want to fix this, but I’m afraid I don’t know enough yet about what causes the issue to know how long this might take.


Hi @DanielPiker,

Thank you for detailed explanation, very helpful. I found an old Kangaroo manual online it helps as well, unfortunately it doesn’t describes all the components. But to be honest springs and rods will be more than enough just now.

It is what I did as well :wink: thought maybe you had a different approach))

Do you need any help testing on a Mac? I can help.