
Dupin Cyclide
3D object3DSeamless loop16 seconds
A soap film stretched in a wire frame, swirling with real interference colours as it drains. Loops perfectly.
In Science & maths, Light, glass & shine, Liquids
Next: Dupin CyclideSurprise me
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
How quickly the film thins towards the top, where it turns to pale silver.
Changes the swirl pattern.
The preview runs the same code your AI receives. These settings travel with the hand-off.
A film of soapy water held in a wire frame in a dark studio, glowing with the interference colours of a film a few hundred nanometres thick: golden and magenta bands where it is thick at the bottom, swirling teal and violet as the liquid flows, thinning to a pale silver at the top. The film is see-through, ripples gently, and its colours shift as the frame turns. Choose the frame (a bubble wand, a wire bent into a saddle, or two rings holding a catenoid), the wire's metal, a close-up macro view where the colours fill the screen, how much the film swirls and drains, and the backdrop.
src/soap-film.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/soap-film.jscreateSoapFilm(renderer, { frame?, wire?, swirl?, drain?, seed? }) => { group, thickness, radius, update(time, loopSeconds), dispose() }createFilmEnvironment(renderer, { intensity? }) => { texture, dispose() }WIRES: { chrome, brass, copper, black }three@0.185.1 (source) — Renderer, geometry and physical thin-film iridescence.chrome-material@1.1.0 (demo) — Renderer setup (filmic tone mapping).apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: The frame's radius is 1.2; the film faces +z (the catenoid's axis is vertical).
Lighting: The film's colours are reflections: use createFilmEnvironment (or any environment with a broad bright area in front) as scene.environment, over a dark background.
Timing: update(time, loopSeconds) is a pure function of time; frames render in any order.
npm install
npm run render -- soap-film/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:aba05979ce403521…
3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

Effect2DSeamless loop8 seconds

3D object3DSeamless loop8 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop15 seconds

3D object3DSeamless loop9.6 seconds