FOLD (Flexible Origami List Datastructure) is a file format (with extension
.fold) for describing origami models: crease patterns, mountain-valley
patterns, folded states, etc. Mainly, a FOLD file can store a mesh with
vertices, edges, faces, and links between them, with optional
2D or 3D geometry, plus the topological stacking order of faces that
A mesh can also easily store additional user-defined data.
One FOLD file can even store multiple such meshes in "frames"
(but this feature is not yet supported in any code).
FOLD is similar in spirit to the OBJ format (and other similar formats) for storing 3D meshes; its main distinguishing features are easy parsing, easy extensibility, the ability to disambiguate overlapping faces with stacking order, and the ability to define edges and thus edge properties (such as mountain-valley assignments) and arbitrary polyhedral complexes. (Without edges, OBJ cannot distinguish between two faces sharing two consecutive vertices from faces sharing an edge.) In addition, FOLD can support linkages (with 1D edges but no 2D faces).
FOLD Software Tools
Here is software supporting the FOLD format, built both within this project and by other people:
- FOLD viewer loads and display a given .fold file, useful for visualization and testing
- Amanda Ghassaei's Origami Simulator supports FOLD input and output
- Tomohiro Tachi's Freeform Origami supports FOLD input and output
For simple web apps, add this tag to your HTML:
(or save a local copy of
and use that).
Then, if you add
you can access the library via
For Node apps, just
npm install --save fold;
then access the library via
The FOLD library API
documents the available modules and functions for manipulating FOLD objects.
If you have a
.fold file, first parse it with
to get a FOLD object.
The FOLD format was invented by three people:
We welcome your feedback and suggestions! The goal is for all software in computational origami to support FOLD as a common interchange format.