
Brass Governor
3D object3DSeamless loop12 seconds
The bare movement of a music box: a pinned brass barrel plucks a steel comb, tooth by tooth, as the gears turn. Loops perfectly.
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
Whole turns of the barrel in each loop.
Changes the wood grain.
The preview runs the same code your AI receives. These settings travel with the hand-off.
The heart of a music box laid bare on a walnut base: a brass barrel studded with pins turns slowly, and each pin that comes round lifts the tip of one tooth of a steel comb and lets it go, so the tooth swings and settles (a little exaggerated so the eye can follow it). The pins spell out a tune, repeated every turn. At the end of the barrel a toothed gear spins a pinion and a small fan, and a winding key turns on its own post. Choose the tune (a lullaby, a waltz or rising chimes), the metal of the barrel, plates and gears, how many times the tune plays per loop, and how far the teeth swing.
src/music-box.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses chrome-material only for the demo.
src/music-box.jscreateMusicBox({ tune?, finish?, turns?, exaggerate?, seed?, anisotropy? }) => { group, teeth, axisY, notes, steps, update(time, loopSeconds), dispose() }TUNES: { lullaby, waltz, chimes }FINISHES: { brass, gold, copper, silver }three@0.185.1 (source) — Renderer, geometry and physical metals.chrome-material@1.1.0 (demo) — Studio environment light, backdrop, floor and contact shadow.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: 1 unit = 10 cm. The base is 9.2 × 7.4; the barrel (radius 1, length 5.4) lies along x at y = 2.1; the comb of 18 teeth lies in front of it towards +z.
Lighting: Physical metals: needs scene.environment; a shadow-casting key light draws the teeth's and pins' shadows on the plate.
Timing: update(time, loopSeconds) is a pure function of time; frames render in any order. The notes list gives the moment of every pluck for syncing sound.
npm install
npm run render -- music-box/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.sha256:3e8aa3a3373e60e2… · other versions: 1.0.1
3D object3DSeamless loop12 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop10 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop20 seconds