Stoatworks Labs

Crumple

Crumpled paper for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Crumple — Crumpled paper for Resolume
No screenshot — this one is configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. The clip is printed on a sheet that is crumpled — big folds first, then smaller ones inside them — and can be smoothed back out again, under a desk lamp. Crumpled paper is facets and creases: each facet is flat, because a sheet will bend one way without stretching but not two, and the facets meet along straight creases. The sheet here is exactly that, up to four generations of it summed.

Where the sheet tilts, the print on it has to come from somewhere. The ink does not stretch with the paper — it is pulled in. The in-plane displacement that keeps the sheet unstretched is solved, one Fourier mode at a time, and the print is read from where the sheet pulled it, so a straight line crossing a crease bends there. That kink is the tell of real crumpled paper, and no texture laid over a picture can produce it.

Each facet takes the lamp at its own angle, normalised so a flat sheet is exactly the picture; the ridges throw shadows when the lamp is low; and the fibres that break along each crease are measured on the sheet as crumpled, so Flatten smooths the sheet and leaves the marks. Crumple is made to be animated, and the audio can scrunch the sheet to the music.

  • Up to four generations of flat facets and straight creases, big folds first
  • The print pulled in where the sheet tilts, so it kinks at every crease
  • Crumple and Flatten to animate: the crease marks stay when the sheet is smoothed
  • A lamp with elevation, azimuth, ambient, shadows and sheen
  • Audio Scrunch: the level and each kick crumple the sheet further
  • Height, Normals and Stretch views
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and honestly early. The sheet is measured rather than asserted, and tools/verify.sh runs the lot: across a straight ridge of slope 0.5 the print pulls in by ½s²·2W = 0.03000 of the frame to within 1.1e-4 at the finer Details, in x and on its side in y, with no sideways stretch; each facet of a known ridge is lit by Lambert to 1e-7 under lamps from two directions; a ridge's shadow ends within 2.2e-3 of H/tan e; Crumple 0 is exactly the picture, padded host textures included; crumpling only ever deepens the sheet and its facets tile the frame; and every host GL binding comes back as the host left it. Six deliberately wrong models are all detected, and all 20 controls measurably change the picture. Render cost on macOS is 0.1–0.3 ms/frame for a still sheet and 2.3–2.9 ms for a moving one, 720p to 4K. It has been loaded into Resolume Arena 7.27.1 on Windows, on a software rasteriser in a VM with no GPU. Arena registered and listed it, all 26 controls came back as declared, it rendered, every one of the 22 swept controls moved the picture, and Arena logged no errors. It has never been loaded into Arena on macOS, and nothing is known about its performance on Windows. The stretch is the small-slope one, and the sheet is a heightfield that never folds over itself. No real audio has reached it in a host. There is a browser demo, which is a port rather than the plugin; no OpenFX port and no user guide. Check it in your own rig before trusting it in a show.

Watch it running

Crumple video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead