The making of

Loader bench

1 / 9

Every cube is the same size, and every cube sits on a grid.

The whole bouquet is built from one size of cube, placed on whole-number grid positions. Because every cube is identical and aligned, the renderer always knows how any two cubes stack — that is what keeps the drawing simple and correct.

2 / 9

A cube is drawn as its three visible faces, each in its own shade.

From the camera’s angle you can only ever see a cube’s top and two sides, so those three faces are all that is drawn — the three faces behind are skipped. Each visible face gets its own shade, and the shade comes from the light’s angle.

3 / 9

Cubes are drawn from the farthest to the nearest.

There is no depth buffer. The cubes are sorted by distance from the camera and drawn in that order, far to near, so a nearer cube always paints over a farther one. While the cubes are flying in, the order is kept fixed for the whole flight so nothing flickers.

4 / 9

Only the cubes the camera can see are drawn.

The model has 3,014 cubes. 1,495 of them are fully enclosed by neighbours and can never be seen, so they are never drawn. From the front, another 809 sit exactly behind the cube in front of them, so they are skipped too. 710 cubes make the picture.

5 / 9

Every face gets one of five shades, and the light moves with the camera.

Every cube face points one of five ways, so the shade for each direction is worked out once per frame from the light's angle, and every cube reuses those five numbers; the light is attached to the camera, so when the camera goes around, a face's shade changes smoothly and no cube is ever recoloured.

one cube · light moves with the camera
the whole bouquet · same light

6 / 9

The bouquet never moves. The camera and its light go around it.

From out here the bouquet sits still on its axis while the cubes fly in and, later, scatter. What looks like the bouquet turning on the main page is the camera circling it with the light attached, so every face keeps its shade.

7 / 9

The bouquet is generated from about forty numbers.

No cube is placed by hand. A generator builds it part by part — stems, paper, greenery, blooms, ribbon — from about forty parameters. Change one and the whole bouquet regenerates.

8 / 9

Every cube’s position during the fly-in is a formula of one number, p.

The assembly is not a recording. Every cube’s position is computed from a single progress value, p, so dragging p back and forth always gives the same picture. Nothing is random: every jitter comes from the cube’s own index, which is why it replays exactly.

9 / 9

Scrolling sets a second number, q, that scatters the cubes.

The dispersal works the same way: q goes from 0 to 1 with your scroll, and every cube’s scattered position is a formula of q. Scroll back and q falls, so the bouquet reassembles.