
Cathedral of a Butterfly
Background3DSeamless loopPortrait8 seconds
A moon over a midnight sea; the camera withdraws to show the sea sits inside a giant oyster and the moon is its pearl. Iridescent nacre, ray-traced reflections. Loops.
Combine several clips and hand them over together from your sequence.
It plays exactly as rendered and has nothing to adjust. The preview runs the same code your AI receives.
A full moon hangs over a dark sea, with its rippling reflection below. The camera withdraws and light unfurls across mother-of-pearl: the sea is held inside a monumental oyster, hinged and opened to about 76 degrees, and the moon is the pearl resting in it, reflected in the black water. The layered shell halves, the iridescent nacre with its growth rings, the contact shadows and the ray-traced pearl reflection are all computed in the shader, and every animated part completes whole cycles, so the 12 seconds loop exactly. The film has no settings.
src/moon-pearl.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/moon-pearl.jscreateMoonPearl() => { scene, camera, setSize(width, height), update(time), dispose() }three@0.185.1 (source) — Renderer and a full-screen shader material.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: Composed for a 4:5 portrait frame and measured by the frame height: in a wider frame the picture stays centred at full height and its background fills the sides; in a narrower one, such as 9:16, the sides are cropped.
Lighting: Moonlit: a bright pearl reflected in rippling water, iridescent nacre and contact shadows.
Timing: Moon and sea first; the camera withdraws and light unfurls across the shell to show the oyster; the view then returns to the moon.
npm install
npm run render -- moon-pearl/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:33f4ebf6db0f59d0…
Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds