18
Motion, asserted

No Filter

A studio site for a studio of one — a WebGL brand mark, a Matter.js block pit, wire ropes you can drag, and a harness that gates every change.

TypeScript nextjsgsapthree.jsmotion
click to turn
A wire

Fourteen verlet points, gravity and distance constraints, pinned at both ends. Drag either frame.

Home — the Open Aperture, in WebGL
running Home — the Open Aperture, in WebGL
npm run verify
tokens   138/138   computed styles vs the token table
motion   283/283   durations, eases, distance travelled
visual   judged    screenshot diffs, reviewed by eye
budget     7/7     bundle, route weight, triangles,
                   Lighthouse

Two parallaxes had never once run — gsap.quickSetter(el, "yPercent", "%") silently writes nothing. 267 assertions passed the whole time; none measured distance travelled. Nine now do.

The catch worth telling

Redrawing the card thumbnails added a few dozen elements to each card, and verify:motion reported that the custom cursor no longer lagged the pointer — pointerover fires for every element crossed, so one sweep re-pinned the disc twenty times.

Fixing it failed a different assertion. Two checks had been in direct contradiction — one demanding the disc snap on a move, the other that it lag on the same move — and only the bug satisfied both. Nothing had ever been red, so nobody had read them together.

One loop
motion tokensdurations · easesdistances, written down npm run verifytokens 138 · motion 283visual · budget 7probes for a 2nd rAF asserts GSAP tickerthe only loopno secondrequestAnimationFrame Lenissmooth scroll ScrollTriggerpinned · scrubbed Matter.js56 bodies · block pit verlet rope14 points · wire rig REDUCED, NOT DELETED a light that follows the pointer stays; a colour that changes on its own goes

GSAP’s ticker drives Lenis, ScrollTrigger and Matter. There is no second requestAnimationFrame anywhere, and verify:motion probes for one.

The block pit — every tile a real dependency
running The block pit — every tile a real dependency

Simulate it, delete the tuning

The wires began as a Bézier with a hand-tuned sag term, which was fine until the frames became draggable. A formula has no memory: no swing, no settle.

Simulating it deleted both tuned numbers. Sag is gravity on a rope cut longer than its gap, and “a stretched wire straightens” is not a rule anyone wrote.

Every label is true

There are no stock photographs. Every thumbnail is a specimen plate drawn in code: FIG.04 is the work’s real position in the twelve, and the code is the plate’s actual seed. Where there is no real edition number the field is left out rather than invented.

Several of the twelve case studies are chapters on this site.

Outcome

N0-filtr

Chapter 19
Santioni

A study of santionispirits.com — a 100% WebGL experience — rebuilt at two fidelity tiers.

continue
18 — No Filter
scroll · drag · ← →