IndexDesignMotion

An index of motion studies

Motion Library

15 studies of motion on the web, each rebuilt from scratch and reduced to the primitives it runs on.

Each study takes one piece of motion on the web that stopped us, rebuilds it from scratch, and names the primitives it runs on. The primitives are the point: a technique that cannot be phrased as one is not yet understood well enough to rebuild — and certainly not well enough to put in a node editor.

Most are rebuilt precedents: a page by someone else, taken apart and put back together in plain canvas, with what the rebuild taught written down beside it. A few are ours. 12 of them are pages here — prose, figures you can drive, and the notes underneath — and every card below is running a live scrap of its own study rather than a picture of one.

Studies

Four scenes that are all the same circles. A 3D globe, then three flat constructions, reached by re-seating one list of geometry rather than by building and tearing down scenes. Scroll is a camera and a blend, not a reveal.

Layout morphProjectionScroll cameraDepth cueTrailPainter sort

Companion

x.ai/bot

The eyes are flat marks lying on the surface of a sphere. Gaze rotates the sphere and the far eye foreshortens into a rotated ellipse. The head is a circle and looks the same from every angle, so the eyes are the only thing that reveals the rotation.

Surface markState machineSpringPointer gazeSchedulerAntipodal pairZ-crossingHandoff

A string is not a block, it is a list of glyphs. Give each one a home, a seat and a place in the queue, and a single 0..1 driver buys you every text effect worth having.

Glyph fieldDepth cue

Curvature

Steven Wittens, acko.net

Every pen tool in every drawing program keeps a node’s two handles symmetric, which guarantees a continuous tangent and nothing else. The curve does not kink, so it reads as smooth. Curvature still jumps at the join, and a comb makes that lie visible in about a second.

Curvature combSolve, not exposeSubdivision

Visibility

Amit Patel, Red Blob Games

Given a point and a plan of walls, the lit region is a single polygon. Once you have it, light is a fill, shadow is its complement, memory is that fill stamped into a mask, and a soft shadow is a handful of those polygons averaged. One computation pays for all four.

Angular sweepAccumulationMask memory

Noisy Boundaries

Amit Patel, Red Blob Games

A region map drawn from a lattice has straight boundaries, and straight boundaries read as a diagram rather than as terrain. There are two ways to break them and they have almost nothing in common: subdivide the geometry, or perturb the classification. Both arrive at the same coastline. Only one hands you a curve at the end.

SubdivisionShared seedField classify

Grass

Bartosz Ciechanowski, Airfoil

A blade of grass is a driven damped oscillator. The wind is one smooth field travelling across the scene; each blade answers it late, and by its own amount. That lag is the entire source of the richness. Drive the same blades directly from the same field and the field reads as a screensaver.

Flow fieldJointed chainSpringDepth cuePainter sort

Orbits

Bartosz Ciechanowski, The Moon

Two bodies pulling on each other trace exactly one history. What that history looks like is a separate question, answered by where you put the origin. Stand still and you see two drifting spirals; stand on the barycentre and you see two nested ellipses; stand on one body and you see the single clean ellipse the textbooks draw.

Reference frameSymplectic stepLayout morphProjectionTrailDepth cue

Nodes and Cables

Weft · CollabOS

A node graph is boxes you can move and curves between them, and almost every question about whether one feels good turns out to be about the curves. The cable is the interface: it says which way the data goes, whether the connection is legal, whether anything is flowing, and whether the branch you are looking at matters at all.

Cable routingMagnetic targetSignal flowReachability dim

ASCII Flow

Iris Lab

It looks like falling code and it is nothing of the kind. Nothing per-character is animated and nothing falls. A handful of soft bodies drift behind a grid that never moves, and every cell asks the same field how bright it should be. The characters are a readout, not a subject.

Flow fieldSymbol quantiseGlyph fieldSpringSchedulerPointer gaze

Mandala

Iris Lab · Circles of Light

Sacred geometry as a parameter space. Three radii, one integer and a rotation, and the Flower of Life, the Seed of Life and the Dharma Wheel all turn out to be points in it. The image is never drawn: it is what falls out of a construction.

Solve one orbitFound pointLayout morphSolve, not expose

Axis Mundi

Iris Lab

Scroll drives one number and every part of the transition is a window on it: the floor releasing ring by ring, the camera descending, the key light swinging across, the two type panels crossing over. What looks like a hero followed by a second section is one continuous room, and the section break is a value between 0 and 1.

Scroll cameraStaggered releaseProximity graphShared seedReference frame

Distance Fields

Iris Lab · 3D Lab

A 576-triangle torus has corners, and no amount of smoothing its normals will remove them, because the silhouette is a chain of straight segments and shading cannot touch a silhouette. Describe the surface as a distance instead: the outline is then exact at any zoom, the normal is the gradient of the field, and the whole scene is three vertices.

Sphere traceDeferred readOcclusion oracleAccumulationField classify

Blockwork

Igloo Inc

An igloo is a sphere somebody had to build out of blocks, and that constraint is the whole read. Lay the courses on a sphere, give every block one shared breath and one local response to the pointer, then draw the points and the links only where the pointer has been. Nothing here is lit and nothing is refracted, and it still reads as a solid object being touched.

ProjectionPainter sortDepth cuePointer gazeProximity graphSpringFlow field

Ten dots in a triangle. Every one is a lamp, every one is permanently solid, and the pointer only picks which lamp burns. What each lamp can see is baked once into a picture and a frame multiplies ten pictures by ten weights and adds them in linear light. The softness is not one trick: it is a long falloff, an averaged penumbra, a supersampled frame, a tone map and a dither, and leaving any one of them out makes it look like a different piece.

Bake the constantSolve one orbitFilled, not unblockedCast wedgeLight falloffAdd in linearRoll off, do not clipBreak bands with a fixed hashDraw it biggerAdditive light

Precedents

Sites, tools and writing worth keeping close. Nothing here is rebuilt — these are the standards to measure work against, and the places a study starts. Filter by tag.

Bartosz Ciechanowski

ciechanow.ski

Every article is a stack of hand-built interactive figures with honest geometry and one handle per idea. The strongest argument anywhere that geometry can carry meaning rather than decorate it, and the figures sit at exactly the scale a Weft patch could output.

Rebuilt here as Grass, Orbits
ResourceExplanatory

Acko — Steven Wittens

acko.net

Mathematics presented as something you can pick up and turn over. The piece on curvature and Beziers is the direct source for the Curvature study. He is not the first person to make those points, but he made them unusually well.

Rebuilt here as Curvature
ResourceExplanatory

Red Blob Games — Amit Patel

www.redblobgames.com

Interactive explanations written to be implemented from, not merely read. Two of them are rebuilt here. The discipline worth stealing is that every figure has exactly one handle.

Rebuilt here as Visibility, Noisy Boundaries
ResourceExplanatory

Lusion

lusion.co

Ribbon and flow-field geometry reacting to the pointer, built into a working site rather than parked in a showreel. Filed as a standard, not a target: nothing here is on the rebuild list, but it is the bar for what a commercial site can be.

Studio3D

Igloo Inc

www.igloo.inc

Built entirely in WebGL by Abeto with Bureaux: procedurally grown ice, a frozen landscape where each project sits inside its own block, and refraction carrying the identity. Filed as a standard rather than a target. What does survive being reduced to flat marks is the construction underneath the glass, which is what the Blockwork study takes.

Rebuilt here as Blockwork
Studio3D

Vercel

vercel.com/home

A product site whose hero is one WebGL2 pass over a precomputed RGBA atlas: three baked light fields in the red, green and blue channels, ambient occlusion in the alpha, ten weights, a photographic tone map and an instanced bloom quad per lamp. The ten dots never move and are never anything but solid; the pointer picks the nearest one and that one burns while the rest go out. Filed twice over: for the restraint, since the interaction is not added to the mark but is what happens when part of the mark goes out, and for the engineering, since the whole soft-shadow scene is three pictures and an addition.

Rebuilt here as Coloured Shadows
StudioInterface

Antinomy Studio

www.antinomy.studio/work

Motion graphics discipline applied to a portfolio: timing, type and cut, with very little 3D anywhere. The counterweight to the two above — a comparable sense of depth from almost none of the machinery.

StudioMotion graphics

Rive

rive.app

State machines as a first-class authoring model, which is exactly the abstraction Companion needed and had no name for. James: never got into it, it always felt unintuitive and not worth leaving After Effects for. The hopes he had for it are part of what led to Weft.

ToolMotion graphics3D

Family

family.co

Interface elements that behave like physical objects, with state visibly travelling between them. Spring and handoff applied to product UI instead of to a character.

StudioInterfaceMotion graphics

p5aholic — Kenichi Yoneda

p5aholic.me

Generative work made from very few marks. Filed under studio although it is one person, because the body of work has a house style. The constraint this collection keeps rediscovering, held deliberately for years.

StudioGenerative

Stripe Press

press.stripe.com

Books rendered as page furniture: physical objects sitting inside ordinary layout, at a level of restraint almost nobody attempts commercially.

Studio3DInterface

Codrops

tympanus.net/codrops

Not a reference so much as the technique library the references borrow from. Worth mining for one specific effect, never worth cataloguing whole.

Collection

Cables.gl

cables.gl

A node editor in Weft’s family, aimed at realtime visual patches. Peer rather than precedent: worth an hour to see which of Weft’s gaps it has already solved, and how it chooses to present them.

ToolPeerGenerative

Figma Weave

weave.figma.com

Weavy, acquired by Figma and relaunched as Weave in 2026: a node canvas that wires twenty-odd generative models together with real editing operations, layers, type and blends included. Comfy for people who did not want to learn Comfy. Two things are worth taking. The graph is the prompt, so an edit is a change to one node rather than a re-run of a paragraph. And a finished graph can be published as a tool with typed inputs, callable from outside the canvas, which is the answer to what a Weft patch becomes once it works.

Rebuilt here as Nodes and Cables
ToolPeerGenerative

Nodi3D

nodi3d.com

Grasshopper’s model taken to the browser for parametric 3D modelling. The other pole from cables: same family, entirely different application.

ToolPeer3D

The primitives

Written as operations rather than as effects, because that is the form a node editor can consume. Every study above is a combination of these.

Projection
Real 3D positions flattened by an explicit camera. The source of every honest 2.5D read.
Layout morph
One set of geometry under several layouts, blended point-by-point. How a scene becomes another scene without being rebuilt.
Depth cue
Alpha, scale or weight standing in for lighting. Cheap, flat, and more legible than shading.
Scroll camera
Scroll drives a camera through one continuous scene instead of revealing stacked sections.
Glyph field
Text broken into individually addressable characters with a home and an away position.
Surface mark
A flat shape living on a curved surface, foreshortened along its own normal. Buys rotation from almost no geometry.
Spring
Damped follow. Nothing snaps, and stiffness/damping carry most of the perceived personality.
State machine
Named modes with their own laws AND their own look, so the state is readable before you test it.
Scheduler
Jittered periodic events. What makes a thing feel alive when nobody is interacting with it.
Z-crossing
Objects passing behind each other. The single cheapest cue that sells depth in a flat scene.
Antipodal pair
Two marks at +axis and -axis of a rotating axis. Continuous by construction, with no phase to wrap.
Trail
Motion history drawn as decaying echoes. Reads as speed without any blur pass.
Painter sort
Explicit far-to-near draw order. Replaces a depth buffer with one sort per frame.
Pointer gaze
Continuous, saturating response to pointer position rather than discrete hover states.
Curvature comb
Signed curvature drawn as hairs along the normal. Makes a discontinuity visible that no amount of staring at the curve will show.
Solve, not expose
Give the user the outcome they care about and solve for the parameter underneath. Turns a handle into a result.
Subdivision
Recursive splitting with the endpoints held fixed. Detail on demand, from de Casteljau to a coastline.
Angular sweep
Sort events by angle about a point and walk them once. Turns an occlusion question into a one-dimensional scan.
Accumulation
Average many exact solutions instead of blurring one. Penumbra, motion blur and antialiasing are the same move.
Mask memory
Persistent state kept in an alpha channel rather than in a data structure. No grid, no bookkeeping.
Shared seed
Key the randomness on identity rather than on draw order, so two independent consumers agree without talking.
Field classify
Ask each pixel which region owns it instead of constructing a boundary. Cheap to perturb, impossible to stroke.
Flow field
One continuous field that everything samples, so unrelated objects agree about the world for free.
Jointed chain
A body integrated joint by joint. Stiffness falling along its length is what makes a tip whip and a base hold.
Reference frame
Re-origin the same simulation. Most of what is confusing about a system is a frame problem, not a physics problem.
Symplectic step
Step so that a long-running simulation stays put. Energy is allowed to wander; it is not allowed to run away.
Symbol quantise
A continuous field read out through a fixed grid of discrete marks. The grid is the resolution; the alphabet decides whether it reads as a picture or as texture.
Solve one orbit
When an arrangement maps onto itself, the distinct cases are its orbits, not its members. Solve one of each and read the rest through the transform that carries them there. The cost then tracks how symmetric the arrangement is rather than how big it is, so a more symmetric shape is cheaper per element, not dearer.
Found point
Points discovered rather than placed: the intersections a construction produces. Compass and straightedge as a data structure.
Cable routing
A connection drawn as a curve whose handles carry the direction. The handle length is the design: it grows with distance, holds a floor, and grows again when the target is behind the source.
Magnetic target
A hit area sized for the decision rather than for the mark. It can grow until it touches its neighbour, and that is the ceiling.
Signal flow
One moving mark per connection, on live connections only. Direction and liveness for free; put it on everything at once and it is wallpaper.
Reachability dim
Walk backwards from every output and dim whatever you never touch. Dead work looks dead, and a large graph becomes readable without being rearranged.
Proximity graph
Links drawn between things that are near each other right now, so connections form and break on live distance. The neighbour cap is the design: uncapped it stops reading as objects and starts reading as a hairball.
Staggered release
One event given a per-element delay taken from a spatial coordinate. Which direction the delay runs in decides where the expensive part of the effect happens.
Sphere trace
Step along a ray by the distance to the nearest surface. The scene is an equation, so there is no silhouette to tessellate and no resolution to choose.
Deferred read
Render normals and depth first, then draw the picture from those. Non-photoreal modes become image filters instead of geometry problems.
Occlusion oracle
Answer whether a point is visible by asking the scene directly rather than running a hidden-line algorithm. One ray, per pixel, against the same function the renderer already uses.
Bake the constant
Split what moves from what does not, render the part that does not once into a picture, and let the frame be a weighted sum of pictures. It buys quality that would be unaffordable per frame, and it costs the freedom to change the thing you baked.
Filled, not unblocked
A shadow disappears when another light reaches into it, not when the thing casting it stops existing. Obstacles stay obstacles; what changes is how many directions light arrives from.
Add in linear
Light adds where it is proportional to energy, not where it is proportional to display value. Summing sRGB piles the mid-tones up and clips them; sum in linear, tone map the total, convert once at the end.
Roll off, do not clip
A sum of lights exceeds one, and what happens next is the whole look. Clipping gives flat white shapes with hard borders; a compression curve keeps the shape of the highlight and desaturates it the way film does.
Break bands with a fixed hash
A long smooth gradient bands in eight bits. A hash keyed on the pixel breaks the bands and stays put; the same idea reseeded every frame does the same job in a still and boils in motion.
Draw it bigger
Render into a backing store larger than the box and let the browser resolve it down. The cheapest smoothness there is, and the easiest to forget, because nothing about the code looks wrong without it.
Cast wedge
A shadow built as geometry from the tangents of a light and an occluder rather than found per pixel. Two rays and a cap, exact at any zoom, one polygon.
Additive light
Overlapping light sums instead of covering. Two lamps make a third colour, and a shadow becomes the absence of one of them rather than a dark shape.
Light falloff
Brightness as a function of distance. The exponent is the mood, and it is a bigger decision than the colour: too shallow and the light floods the frame, leaving no dark for a shadow to be seen against.
Handoff
State visibly travelling between UI elements, so a system reads as a set of actors.