Crease pattern (SVG / FOLD) → STL sheet with living hinges → 3D-print flat → fold by hand into a 3D origami shape.
INPUT: Crease pattern (mathematical model of an origami fold)
↓
PROCESS: Generator converts fold lines into living hinges in a 3D model
↓
OUTPUT: STL of a flat sheet with V-grooves on every fold line
↓
PRINT: Print the flat sheet (no supports needed)
↓
FOLD: Fold along the lines → 3D origami shape in PLA / PETG
Rigid panel [thickness 1.5–2.0 mm]
|
Fold line [thickness 0.4–0.8 mm, width 1–2 mm] ← living hinge
|
Rigid panel [thickness 1.5–2.0 mm]
Mountain fold → V-groove on the bottom face
Valley fold → V-groove on the top face
Bidirectional → grooves on both faces (neutral fold)
Recommended materials:
PETG — best for living hinges (flexible, durable)
PLA — works, but cracks at small bend radii
TPU — most flexible, but holds a folded shape worst
You will need to dial in panel_thickness, hinge_thickness and groove_width for your printer / nozzle / material combo. Start with the values above and iterate.
| Project | URL | Why it matters |
|---|---|---|
| OrigamiSimulator | github.com/amandaghassaei/OrigamiSimulator | WebGL simulator + STL/OBJ export of folded state |
| FOLD format | github.com/edemaine/fold | Standard JSON format for crease patterns |
| rigid-origami | github.com/belalugaX/rigid-origami | Python: automatic generation of rigid crease patterns |
| origami-printing | ealitt.github.io/origami-printing | Image → SVG → 3D model with living hinges |
| Flexifier | printables.com/model/505713 | Generator for flexi print-in-place models |
| CurvedCreases | github.com/amandaghassaei/CurvedCreases | Curved-fold patterns |
| Oriedita | oriedita.github.io | GUI editor for crease patterns |
Suggested reading order:
OrigamiSimulator— already exports STL, fastest way to validate end-to-endFOLD format— understand the data model for crease patternsrigid-origami— Python library for procedurally generated patterns
Language: Python 3.10+
3D mesh: trimesh or numpy-stl
Geometry: numpy, shapely (2D ops)
CAD: OpenSCAD (parametric models via Python API)
Format in: SVG (crease pattern) or FOLD (JSON)
Format out: STL
Optional:
- svgpathtools → parse SVG fold lines
- ezdxf → DXF export (e.g. for laser cutting)
origami-stl-generator/
├── README.md ← this file
├── crease_to_stl.py ← main generator
├── living_hinge.py ← living-hinge parameter module
├── fold_parser.py ← FOLD format parser
├── svg_parser.py ← SVG crease-pattern parser
├── models/
│ ├── basic_fold.fold ← test: single fold line
│ ├── waterbomb.fold ← waterbomb base
│ └── crane.fold ← crane (full model)
├── output/
│ └── *.stl ← generated files
└── tests/
└── test_generator.py
# 1. Install deps
pip install trimesh numpy shapely svgpathtools
# 2. Reference reading
git clone https://github.com/amandaghassaei/OrigamiSimulator
git clone https://github.com/edemaine/fold
# 3. Calibration print
# Print a 60×60 mm tile with a single fold line down the middle:
# panel_thickness = 1.5 mm
# hinge_thickness = 0.4 mm
# groove_width = 1.0 mm
# material = PETG (or PLA)
# Bend until it cracks → record the minimum bend radius.
# Use that to calibrate your real prints.MIT.