Beaded Bracelet Simulation in Kangaroo

Hey, everyone,
I’m trying to simulate beaded bracelets using Kangaroo, but I’m running into problems. My current method is kinda glitchy, and I’m having trouble getting the results I need. First, I played around with the Rod component for the rope part. But I can’t figure out how to handle collisions between the rope and beads.
@DanielPiker (16.3 KB)

1 Like

This is interesting. I tried to put together my own definition before looking at your file.

I’m using the Sphere Collide component to keep the beads from colliding which is quicker and easier to set up compared to pairs of Rigid Body Collisions which rely on mesh inputs. In my case the beads are nurbs. I’ve tried a few things to simulate the rope and I’m not fully happy with it yet.

It would be nice if the curve on which the beads slide until they collide was affected by the weight of the beads. (36.7 KB)

I’ve played around some more…

Wouldn’t such a beaded bracelet have spheres between the cylindrical parts to keep them apart? (31.5 KB)

1 Like

Thanks, @martinsiegrist . As you mentioned, my key aim is to create a responsive interaction between the curve (string) and the beads, so that they influence each other. It’d be awesome if @DanielPiker had time to review our algorithm to make it faster.

1 Like

Hi @Mahdiyar

Here’s an idea for using some faster capsule collisions for this. (16.3 KB)

It makes use of a goal I wrote previously for keeping points on a moving polyline and allowing them to slide along it.
It’s not quite right for this yet, because only the end points of each bead are kept on the chain, so the chain can bend within the bead.

I think maybe it could maybe be modified though and flipped around so that instead of the 2 points of each bead sliding on the chain polyline, the polyline points slide on the bead line segments. For that to work though the goal would need to be modified to allow points to slide off the ends.


Here’s a version with a modified goal as described above. It pulls a point onto a line segment only when the closest point is between the segment ends, and the distance is less than a given threshold: (20.1 KB)