Given a 3D trajectory, we generate a rigid-foldable crease pattern whose folding moves a point along it. An autoregressive diffusion model writes the pattern one vertex unit at a time, conditioned on the trajectory. On 500 held-out curves, the best of 16 generated designs comes within 5% of the curve's reach for 86% of them; the closest of a million training designs does so for 52%.
A degree-4 vertex is the smallest unit of rigid folding: once its incoming crease folds, its sector angles fix the other three folds, up to a choice between two branches. We therefore generate a whole unit as one token. Generating creases or vertices separately would leave the state incomplete, since a unit's motion is defined only once all four of its angles are known.
The units form a tree rooted at the driving crease, and motion passes only from parent to child. We generate along this tree, so each new unit attaches to one whose motion is already fixed; an order that does not follow the tree would condition on branches the new unit does not depend on. Here the tree is a single chain to the tracked vertex, at most 8 units long, and the model decides where it ends.
Our analysis points to two choices that matter: generating autoregressively, one unit per token, so every unit is sampled knowing the motion it inherits; and conditioning on the target, so the crease pattern is generated as the controller of that motion. A Transformer encodes the 32 curve points, a causal Transformer decoder reads the units placed so far with their layout on the paper, and a small diffusion head samples each token's geometry and class. The model is trained on 300k random patterns folded in simulation; at test time we draw a few designs, fold each, and keep the closest.
We first test on trajectories from the training distribution, 500 held-out curves. The model's designs follow them closely, much more closely than the best designs found by searching the training set.
| Method | Curves within error (best of 16) | Median error | Median Fréchet | Samples that build | ||
|---|---|---|---|---|---|---|
| ≤ 2% | ≤ 5% | ≤ 10% | ||||
| Nearest training designs (1M pool) | 10.6% | 51.8% | 85.4% | 4.9% | 7.3% | 100% |
| Ours, no guidance (guidance 1) | 46.0% | 84.8% | 97.8% | 2.1% | 3.3% | 71.5% |
| Ours, guidance 1.5 | 51.2% | 85.8% | 96.6% | 1.9% | 3.1% | 72.0% |
Pick a held-out test curve below. Every design is a generated pattern folded in simulation.
Each token adds one unit. After every token, the pattern so far is folded and the path of the vertex the next unit grows from is traced.
The closest prior work, Hochuli and Stankovic (H&S, Journal of Mechanisms and Robotics, 2025), learns an unconditional generative model of crease patterns. A β-VAE decodes a whole pattern at once, as vertex positions and an adjacency matrix, and nothing in its latent space enforces rigid foldability, which a single wrong entry can break: only 0.1% of its samples are valid, and a normalizing flow on the latent space raises this to 10%. Since the model does not see the target, every new target needs a search: a genetic algorithm explores the latent space, folding and scoring about 15,000 designs over 2.7 hours. We instead sample designs conditioned on the target, one rigid unit at a time, so only crossing creases make a sample invalid, and 16 designs per target suffice.
| Parameters | Training data | Training | Valid samples | Designs folded per target | Time per target | |
|---|---|---|---|---|---|---|
| H&S 2025 | 200M | 8M | 53 h | 10% | 15,000 | 2.7 h |
| Ours | 11M | 300k | 12 h | 76% | 16 | 13–21 s |
We also ran our model on curves from their benchmark and scored the results with their objective (lower is better). Their targets are shapes without size or heading, so we try 648 placements of each, sample 10 designs at each, and keep the best. We compare scores, not search cost.
| Curve | Genetic algorithm | Ours |
|---|---|---|
| Helix | 14.2 | 6.53 |
| Spherical bi-angle | 4.26 | 2.87 |
| Triangle | 4.93 | 5.06 |
| Sine | 2.88 | 7.27 |
Below, a hard test curve is scaled or turned about its start, step by step, and at every step the model draws 32 designs; we pick one design per step for the whole range, with a penalty for every change of design. The picked design can be kept over long stretches, with only its geometry adjusted, while the error stays low and well below the nearest training designs picked the same way. This works because the generative model generalizes between designs and learns the features that matter, rather than recalling the designs it has seen.
Curves moved away from the training distribution are matched less well: the share of test curves within 5% drops from 88% to 39% when they are halved in size and to 11% when they are turned 90° about their start. About 28% of raw samples do not build because their creases cross, and long spirals and helices are still hard to match.
Next, we will optimize patterns with several branches so that two points follow two trajectories at once.