
Seifert Surface
3D object3DSeamless loop16 seconds
A glossy Klein bottle with no inside or outside, turning while a cutting plane sweeps through it to show how the tube threads itself. Loops perfectly.
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
How far the plane sweeps; 0 leaves the bottle whole.
The preview runs the same code your AI receives. These settings travel with the hand-off.
The Klein bottle: a surface with no inside and no outside, whose neck bends back and passes through its own wall to join its base. Shown in its figure-eight form as a glossy shell turning in studio light while a cutting plane sweeps through it again and again, opening the surface so you can see how the tube threads itself. Choose the finish (iridescent, chrome, glass or gold), whether a net of curves lies on the surface, the mesh fineness, how far the cut sweeps (or none), the turns per loop, the size of the ring, the backdrop colour and whether the camera sways.
src/klein-bottle.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/klein-bottle.jscreateKleinBottle({ finish?, lines?, detail?, cut?, turns?, waist? }) => { group, setProgress(progress), dispose() }FINISHES: { iridescent, chrome, glass, gold }three@0.185.1 (source) — Renderer, geometry and shader materials.chrome-material@1.1.0 (demo) — Studio environment light, backdrop and contact shadow.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: The bottle is centred on the origin, about 5 across, hung 3.3 above the floor; the cutting plane is perpendicular to x in world space and starts clear of the bottle and sweeps in to cut away about two-thirds of it, twice per loop.
Lighting: A warm key light with a shadow map and the studio environment.
Timing: setProgress(progress) sets the turn and the plane; frames render in any order.
npm install
npm run render -- klein-bottle/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:31a33f1c68ab941e…
3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop9.6 seconds

3D object3DSeamless loop16 seconds

3D object3DSeamless loop12 seconds

3D object3DSeamless loop16 seconds