Origami folding - kangaroo constraints

I am creating a Kangaroo definition to simulate the folding of some simple origami modules.

I have set up some basic goals (i.e. gravity, inflation etc.) and am now trying to articulate the mountain and valley folds to control the way that the mesh folds into itself.

I am relatively new to grasshopper and kangaroo, however, from my understanding I cannot use the hinge component for rectangular faces.

Can anyone give me advice on how to define the folding behaviour? One tutorial I found mentioned using an angle constraint for origami, however did not implement it.

Attached is a basic kangaroo script and a screenshot marking the respective mountain and valley folds. Both sides should fold as in the screenshot (although without the deformation happening on the rectangular faces shown here).

22_11_30_origami_module.gh (20.0 KB)

Hi @em_8
I’ll look at your definition, but the easiest way to stop quadrilateral faces from bending is to draw lines for both their diagonals and set these as Length constraints.

1 Like

Much appreciated! I have given that a go on all the quad faces but still seem to get this diagonal bending… if you have any further suggestions let me know :slight_smile:

This was enough to get me hooked.

22_11_30_origami_module_dp.gh (27.4 KB)

Here’s your definition with both diagonals and planarization added for the quad faces.

However, one thing (not specific to simulation) to point out here is that this shape violates something called the (now proved) bellows conjecture, which says that no closed polyhedron can fold in a way that changes its volume while keeping rigid faces.

So the only way this object can fold is by stretching. This isn’t always a problem - since depending on the material some amount of stretch and flex of faces is usually possible, and there are some great non-rigid-origami multi-stable designs, such as Kresling modules or Tomoko Fuse’s pako pako.

When simulating though, non rigid origami can take a bit more tweaking of the strengths, since you need to allow enough stretching for it to be able to fold, whereas with true rigid-origami you can just make the edge length strengths massively higher than other actuation goals so they become effectively rigid.

Hi Daniel,

Thank you, this is really useful information. I had prototyped in paper so was hoping it was possible to make a digital model, definitely makes sense with the stretching needed.

Also - I assume that currently the volume goal is acting from the centroid of the polyhedron, is this correct? And if so, is there a way to specifically define the coordinates for this?


The volume goal applies pressure to the vertices of each of the faces, in the direction of the surface normal of each face. These directions won’t generally all be away from a single point.