Simulating Paper Folding: Triangular Mesh staying flat in Kangaroo2

I am trying to simulate the bending of a flat, triangular sheet of paper into a developable surface.

The Goal: I want to reduce the angle between two of the triangle’s edges (effectively folding the paper) while keeping the surface geometrically correct (no stretching). Additionally, I want to constrain the tangency/slope at one of the straight edges.

The Problem: I have set up a Kangaroo2 definition with a meshed surface. While the mesh deforms, it stays pinned to the XY plane—the “loose” edge doesn’t bulge or lift into 3D space as real paper would.

Current Setup:

  • I am using EdgeLengths and Anchor

  • I am looking for a “Bend” or “Hinge” goal to simulate paper stiffness, but I’m unsure which Kangaroo2 component replaces the old Kangaroo1 “Bend” command.

I’ve attached the .gh file. Any advice on how to get the mesh to “pop” into 3D or how to properly constrain the edge slope would be greatly appreciated!

Or, if anyone can think of an alternative approach rather than using Kangaroo, I am pretty new to Rhino, so I might be missing a more straightforward method.

surface.gh (17.3 KB)

Hi @David_Rombaut

If the bending is all happening in the same direction(i.e. all the ruling lines are parallel) so that the result is an extrusion, then this can be simulated using the Rod goal to get an elastica curve.


strip_bend.gh (14.1 KB)

This can also be generalised to a strip of non-uniform width, by using the Angle goal with its strength varying according to the strip width.

If the sheet is bending in a way where the ruling lines do not all stay parallel, then you would need to use the Hinge goal instead. If you know in advance the directions your ruling lines will follow on the surface, then you can divide the surface into quads following these directions and keep the quads planar. If the ruling directions are unknown, or changing during the movement, then it gets a bit harder (because the bending can’t be completely separate from in-plane stretching), but you can model it by using TriRemesh to get a fairly dense mesh then applying hinges to that.
See here for one related earlier discussion:

1 Like