
Astrolabe
3D object3DSeamless loop16 seconds
A polished gold pocket watch whose hands show any time, with a ticking, beating or sweeping second hand.
In Machines & clockwork, Craft & heritage
Next: AstrolabeSurprise me
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
How the second hand moves in real time.
Fast speeds turn the clip into a time-lapse.
The domed glass over the dial. It adds reflections; turn it off for the clearest dial.
The preview runs the same code your AI receives. These settings travel with the hand-off.
A pocket watch made entirely in code: a lathe-turned gold case with a domed glass crystal, an enamel dial with Roman numerals or applied batons, blued-steel Breguet hands, a knurled crown and a chain. Set the time it starts at and how fast time runs, from real time with a quartz tick to a time-lapse where the hands race round. Pick the case metal and the dial.
src/pocket-watch.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/pocket-watch.jscreatePocketWatch({ finish?, dial?, numerals?, chain?, crystal?, anisotropy? }) => { group, setTime(seconds, { motion?, showSeconds? }), dispose() }handAngles(seconds, motion = 'tick') => { hour, minute, second }watchSeconds(info, { start?, rate? }) => numberdrawDial({ dial?, numerals?, size?, dialRadius? }) => HTMLCanvasElementthree@0.185.1 (source) — Geometry, physical materials, transmission glass and shadows.chrome-material@1.1.0 (demo) — Demo uses the shared studio: environment light, cove, floor and contact shadow.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: Watch units: case radius 1, dial facing +Y, 12 o'clock toward -Z. The back rests on y = -0.16 and the chain lies at that level, so lift the group by 0.16 × its scale to stand it on a floor.
Lighting: Image-based (scene.environment) for the metal; add a shadow-casting directional light for hand shadows on the dial.
Timing: setTime(seconds) is a pure function of the time shown; frames render in any order.
npm install
npm run render -- pocket-watch/1.0.1 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.sha256:46845304579551a8… · other versions: 1.0.0
3D object3DSeamless loop16 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds