
Aurora Borealis
Background3DSeamless loop12 seconds
Bioluminescent jellyfish pulsing and drifting through deep water, their tentacles trailing beads of light, shafts of light far above. Loops perfectly.
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
The preview runs the same code your AI receives. These settings travel with the hand-off.
Translucent jellyfish with scalloped bells ribbed by radial canals and a glowing ring inside, pulsing in sharp squeezes and long rests, long tentacles with waves running down them and beads of light travelling along, frilly oral arms, marine snow falling through the water and shafts of light from far above. They drift on slow loops at different depths, the nearer ones bigger and brighter, the far ones fading into the blue, while the camera sways a little. Choose the colours (deep blue, violet, aqua, warm or a mix), how many jellyfish, their size, how fast they pulse, how many tentacles, the marine snow, the light from above and the glow.
src/jellyfish.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses the demo harness only for the demo.
src/jellyfish.jscreateJellyfish({ palette?, count?, size?, pulse?, tentacles?, snow?, shafts?, glow?, seed?, aspect? }) => { scene, camera, swarm, setSize(width, height), update(time, loopSeconds), dispose() }createBloomPass(renderer, { width, height, glow?, exposure?, grain? }) => { render(scene, camera, output?), dispose() }planSwarm({ count?, size?, pulse?, palette?, seed?, aspect? }) => [{ position, scale, pulses, phase, tilt, orbit, seed, palette }]PALETTES: { blue, violet, aqua, warm }three@0.185.1 (source) — Renderer, instanced bells and ribbons, and the bloom targets.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: Perspective, 38° field of view, the camera 7.5 units from the origin; the jellyfish drift between z = -4.5 and z = 0.5.
Lighting: Self-lit: every surface glows (a rim light that grows with the angle, canals, a ring of organs); distance dims them into the blue.
Timing: update(time, loopSeconds) sets the loop time; every position is a closed-form function of it, so frames render in any order.
npm install
npm run render -- jellyfish/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:92909ee711deba84…
Background3DSeamless loop12 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop10 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop12 seconds

3D object3DSeamless loop8 seconds

Effect2DSeamless loop8 seconds

Background3DSeamless loopPortrait8 seconds