CoolFace
Datasetpublic

Origametry/origami-direct-tiny

Origami Direct Crease Pattern Dataset A multiview image dataset for training models to predict complete origami crease patterns from 3D visualizations. Task Given 14 camera views of a folded origami shape, predict the complete crease pattern as a FOLD JSON (vertices, edges, mountain/valley assignments). Dataset Structure Each example contains: Field Type Description id string Unique sample ID (e.g., grid4_4c_0000) images list[string] 14… See the full description on the dataset page: https://huggingface.co/datasets/Origametry/origami-direct-tiny.

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes57downloads
Dataset Card

Origami Direct Crease Pattern Dataset

A multiview image dataset for training models to predict complete origami crease patterns from 3D visualizations.

Task

Given 14 camera views of a folded origami shape, predict the complete crease pattern as a FOLD JSON (vertices, edges, mountain/valley assignments).

Dataset Structure

Each example contains:

FieldTypeDescription
idstringUnique sample ID (e.g., grid4_4c_0000)
imageslist[string]14 PNG paths — 6 face views + 8 corner views
folddictComplete crease pattern in FOLD format
difficultystring"easy", "medium", or "hard"
num_creasesintNumber of mountain/valley creases

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

SplitExamples
train12
val1
test2

Pattern Strategies

StrategyDescriptionInterior vertices
gridCreases on NxN gridGrid intersections
singlevertexRadial creases from center1 (center)
multivertexRandom interior connectionsN random points
parallelParallel lines at an angleNone

Usage

python
from datasets import load_dataset
from PIL import Image

ds = load_dataset("YOUR_USERNAME/origami-direct")

example = ds["train"][0]
print(example["id"])              # "grid4_4c_0000"
print(len(example["images"]))     # 14
print(example["num_creases"])     # 4

# Access the complete crease pattern
fold = example["fold"]
print(fold["edges_assignment"])   # ["B", "B", ..., "M", "V", ...]

# Load a view
img = Image.open(example["images"][6])  # corner_ppp

FOLD Format

The fold field uses the FOLD format (JSON-based):

json
{
  "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 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

Related