Reconstructed from 24 frames
Camera, movement and light, measured from the source
Without the original scene and movement data, the pixels themselves are the reliable reference. Every parameter in this version is derived from them or taken from the 1987 source code.
The camera is where it was in 1986
Fitted to the frame data: the eye is at (−6, 3.32, −6), looking at 45° across the chequerboard diagonal, almost level, with the horizon at row 97 of 200 and a focal length of 215 pixels when using square image pixels. The figure stands at the world origin.
Movement recovered from the pixels
Ball centres, head, hands, feet and joint bend directions were measured in all 24 frames. The ball path is a Fourier fit with three harmonics per coordinate, with a reprojection error of about 2 pixels, placed on a slightly tilted 3D juggling plane. The hands move on a plane just behind it, so they meet the balls even from a freely positioned camera. Each ball completes its circuit in three loops, with the three balls one-third of a cycle apart.
Materials and shading from the 1987 source
Seventy spheres use the materials and colours from robot.dat and the lighting model from rt1.c: wrap ambient (n·ẑ + 1.5) · 0.4 × 0.25, one distant light with cos/r², binary white highlights above cos² > 0.95, recursive mirror reflections × 0.9, hard shadows and no gamma correction. The floor is an exact port of gingham(): tiles three units wide, mirrored across both axes, including the double band at the origin visible in the original.
A figure that also works from the side
The body follows Ben Hanke’s slimmer, camera-independent 3D pose, with fixed arm and leg lengths. Two-bone inverse kinematics keeps the hands and feet at their measured targets, so the balls do not pass through the head or torso when viewed from other angles.
The ‘ding’ measured from a real Amiga
One ding per loop, at the catch: an almost pure 1 kHz sine wave with a stepped envelope in 50 ms intervals, lasting about 0.5 seconds. It was measured from Ernie Wright’s recording of a real Amiga’s audio output. Web Audio plays the sample like tape: at speed r, its pitch rises by r and its duration shortens to 1/r, including when the speed changes during playback.
Every pose can be checked against the original
A verification mode renders each of the 24 poses at 320 × 200 for pixel-by-pixel comparison with the original frames. This makes the reconstruction verifiable, including after later changes.