STL Pillow – Flatten 3D Models into Plush & Papercraft Patterns

Drop in an STL (or use the example bear), draw seam lines on the surface, and get numbered, true-size sewing or papercraft pattern pieces plus a preview of how the stuffed result will look. A browser homage to Pillow by Yuki Igarashi and Takeo Igarashi (Smart Graphics 2008). Everything runs in your browser; your model never leaves your device.

or drag & drop an STL onto the viewer

Pattern sheetstrue size, print at 100%

Model v1.0

Orient:

Seams

Split along:
Seams must form closed loops to split the surface into pieces. A dangling seam becomes a dart (sewn to itself). Grey patches are still closed; red ones failed.

Flatten

Click a patch to highlight it in 3D. Stretch is the RMS change in edge length between the surface and the flat piece; under 5% sews up faithfully, over 15% wants another seam.

Pattern & export

Pages are true size: print at 100% and check the 20 mm box. Pieces bigger than the paper get their own page and a warning. For those, or for a big toy, use Poster PNG and tile it across sheets with Rasterbator, setting its output width to the size printed on the poster so the scale stays true.

Stuffed preview

The paper's model: every vertex is pushed along its normal (stuffing pressure), then each edge is pulled back to the length it has in the flat pattern (cloth doesn't stretch). The checks are 10 mm on the pattern, so you can see where the fabric stretches or bunches.

How STL Pillow works

This is a browser re-creation of the workflow in Pillow: Interactive Flattening of a 3D Model for Plush Toy Design by Yuki Igarashi and Takeo Igarashi (Smart Graphics 2008, LNCS 5166, pp. 1-7). Their prototype was a Java desktop program that, as far as I can tell, was never released publicly, so I built the loop it describes: import a model, draw seam lines on it, flatten each outlined region into a 2D piece, number the matching edges, simulate the stuffed toy, and go round again until you like it. They used it to sew teddy bears and to design a two-metre inflatable bear.

  • Load & simplify. STL triangles are welded into a real mesh. Big models are reduced with quadric edge collapse to the Simplify to budget, which keeps the flattening interactive and the cut lines smooth.
  • Seams. In Draw seam mode your stroke snaps to the surface: each movement is joined to the last by the shortest path along mesh edges, so seams always lie exactly on the model. Strokes that end near their start close into loops. Auto-segment clusters faces by position and normal (a cheap cousin of the D-Charts method the paper cites) and seams the cluster borders; Split along cuts on a centre plane. Erase removes a whole stroke.
  • Flatten. Each region that is a topological disk is parameterised with LSCM (least-squares conformal maps, which the paper also cites) and then refined with a few as-rigid-as-possible iterations so edge lengths match the surface. The paper used ABF++, an angle-based method; ARAP suits fabric better because it preserves lengths and area. Regions with holes or handles still flatten but are flagged, since they will overlap until you add a seam.
  • Numbered edges. Seam lines are split into segments at every junction. Each segment gets one number, printed on both pieces that share it, with notches at the ends, exactly like the paper's paired-number view. Turn on Connectors to see the matching lines instead.
  • Pattern sheets. Pieces are rotated to their tightest bounding box and shelf-packed onto real paper sizes at true scale, with a 20 mm calibration box on every page. Plush adds a sewing allowance (solid cut line, dashed sew line). Papercraft puts a glue tab on one side of every seam and a fold line under it. Export as a single multi-page SVG, print straight to paper or PDF, or render one big poster PNG. Pieces larger than a sheet, or a toy you want huge, go through the poster: upload it to Rasterbator, which tiles an image across many pages, and set its output width to the millimetres printed on the poster.
  • Stuffed preview. The paper's two-step model: move every vertex outward along its normal to mimic stuffing pressure, then restore each edge to the length it has in the flat pattern. Because the pieces are sewn along the seams, the mesh rounds out where a patch had to stretch and stays tight where the pattern is faithful.
  • Sewing time. Section 3 of the paper fits hand-sewing time to seam length. Cutting costs 1.1 s per cm plus 3.2 s per corner; sewing costs 22 s per cm plus 80 s per knot; the total is three times the cutting cost (cut the paper, trace, cut the cloth) plus the sewing cost. The estimate updates with every seam you add, so you can trade a better shape against an extra hour of stitching before touching any fabric.

Matching seams. Seams follow mesh edges, so a raw outline zigzags at triangle scale. Each seam is smoothed once in 3D and that same curve is carried into both pieces through their own flattening, then every numbered edge is nudged to the seam's true length, so the two sides of a seam sew together without easing. The Seam match stat shows the worst remaining difference; anything over about 8% is flagged.

Tips: a plush pattern wants 6 to 12 pieces for a simple animal; a papercraft model wants many more small, flat-ish patches (try Auto patches at 16 to 24). Keep every piece's stretch low and the stuffed preview will match the model closely. Keyboard: O orbit, D draw, E erase, Cmd/Ctrl+Z undo a stroke. The example bear is sculpted from metaballs in-page, in the spirit of the Teddy-modelled bears in the paper.

Changelog (v1.0)
v1.0 - Oct 25, 2026
  • Initial release: load an STL, draw or auto-generate seams, flatten with LSCM + ARAP, numbered pattern pieces on true-size pages
  • Plush (sewing allowance) and papercraft (glue tab) styles; SVG, print/PDF, and poster PNG export for Rasterbator
  • Stuffed preview using the paper's pressure + edge-length simulation, and its sewing-time estimate
  • Quadric mesh simplification, procedural example bear
▲