Origametry/origami-step-by-step-tiny
Origami Step-by-Step Crease Pattern Dataset A multiview image dataset for training models to infer origami crease patterns from 3D visualizations, one fold at a time. Task Given 14 camera views of a partially-folded origami sheet, predict the next crease line to add (edge position + mountain/valley assignment). This mirrors a step-by-step folding process: starting from a blank sheet, each step adds one crease and the model must predict the next one from the… See the full description on the dataset page: https://huggingface.co/datasets/Origametry/origami-step-by-step-tiny.
Origami Step-by-Step Crease Pattern Dataset
A multiview image dataset for training models to infer origami crease patterns from 3D visualizations, one fold at a time.
Task
Given 14 camera views of a partially-folded origami sheet, predict the next crease line to add (edge position + mountain/valley assignment).
This mirrors a step-by-step folding process: starting from a blank sheet, each step adds one crease and the model must predict the next one from the current 3D visualization.
Dataset Structure
Each example contains:
Camera Views (14 per example)
- 6 face views:
face_pos_x,face_neg_x,face_pos_y,face_neg_y,face_pos_z,face_neg_z - 8 corner views:
corner_ppp,corner_ppn,corner_pnp,corner_pnn,corner_npp,corner_npn,corner_nnp,corner_nnn
Splits
Pattern Strategies
Patterns are generated using four strategies for diversity:
Usage
from datasets import load_dataset
from PIL import Image
ds = load_dataset("YOUR_USERNAME/origami-step-by-step")
example = ds["train"][0]
print(example["id"]) # "grid3_3c_0000_step_001"
print(len(example["images"])) # 14
print(example["next_crease"]) # {"edge": [3, 7], "assignment": "M"}
print(example["steps_remaining"]) # 2
# Load one view
img = Image.open(example["images"][6]) # corner_pppFOLD Format
The partial_fold field uses the FOLD format (JSON-based):
{
"vertices_coords": [[0, 0], [0.5, 0], ...],
"edges_vertices": [[0, 1], [1, 2], ...],
"edges_assignment": ["B", "M", "V", ...],
"edges_foldAngle": [0, -180, 180, ...],
"faces_vertices": [[0, 1, 2], ...]
}Edge assignments: B = boundary, M = mountain, V = valley, F = flat (structural).
Generation
Generated using OrigamiAnnotator with rendering via OrigamiSimulator.
- Crease patterns built incrementally via tree search with Kawasaki/Maekawa theorem verification
- 3D renderings produced by OrigamiSimulator (GPU physics simulation) at 60% fold
- Post-simulation intersection checking for quality filtering
