# Frozen Splash — `frozen-splash@1.0.0`

A glass-clear splash frozen in mid-air: a crown of points, a central jet and flying beads, with the camera circling it. Loops perfectly.

A splash caught in mid-air: the crown of a drop that has just landed, its scalloped wall thrown up into sharp points each tipped with a bead, a central jet topped by a drop and a scatter of beads flung out around it. The liquid is rendered as glass, so it catches the studio light like ice. Time is stopped but not quite: every bead bobs by a hair and the crown breathes while the camera makes one full circle per loop. Choose the liquid (ice, milk, coral or honey), the number of crown points, the number of beads, the height, the seed, the backdrop colour and whether the camera circles.

- Kind: object; status: published; digest sha256:a46539c6b903621e09e63477ee76c5172b335063291e6421546a19673e19896b
- Role: Object (3D, three.js): a crisp, high-speed-photography look for drinks, water and cosmetics content.
- Implementation: three; entry `src/frozen-splash.js`
- Files: https://aipixelwizard.com/registry/frozen-splash/1.0.0/<path> (`LICENSE`, `asset.json`, `demo.js`, `index.html`, `src/frozen-splash.js`)
- Manifest JSON: https://aipixelwizard.com/api/v1/visuals/frozen-splash/versions/1.0.0
- Runnable demo: https://aipixelwizard.com/registry/frozen-splash/1.0.0/index.html (open over http; it imports sibling packages by relative path)
- Dependencies (exact): `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.

## Exports
- `createSplash({ liquid?, points?, beads?, height?, seed? }) => { group, setProgress(progress), dispose() }` — The splash (pool, crown, jet and beads) as a group about 9 across and 5 tall, resting on y = 0; needs an environment map.
- `LIQUIDS: { ice, milk, coral, honey }` — Liquid colours, opacities and roughness.

## Parameters
- `liquid` (select one of ice | milk | coral | honey, default "ice") — Liquid
- `points` (integer 8–32, default 18) — Crown points
- `beads` (integer 0–160, default 60) — Beads
- `height` (number 0.6–1.6, default 1) — Height
- `seed` (integer 1–999, default 6) — Seed
- `background` (color, default "#141c2a") — Backdrop
- `orbit` (boolean, default true) — Camera circles

## Composition
- Inputs: Time within the loop; the liquid, crown points, beads, height, seed, backdrop and camera.
- Outputs: A full frame rendered in 3D with a studio environment.
- Coordinates: The splash is centred on the y axis on a floor at y = 0; the crown's base radius is 1.55 and it flares to about 2.5; the jet rises to about 1.9; beads fly out to a radius of about 5.
- Lighting: A warm key light with a shadow map and the studio environment; the liquid is glass-like with clearcoat.
- Timing: setProgress(progress) rewrites the crown and positions the beads; frames render in any order.
- Works with: chrome-material, orbit-camera, kinetic-title, number-reveal
- The crown wall is a flared surface of revolution whose top edge follows |cos(points·θ/2)|³.

## Output and loop
- 1080×1080, 30 fps, 16 s, procedural
- Seamless loop: yes — The camera makes one full circle per loop, each bead bobs by whole cycles and the crown breathes by one cycle, so the last frame meets the first.
- Verified 2026-10-05 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (WebGL 2 via SwiftShader (software)); deterministic: yes; loop check: Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255.

## Use it
New project: Create a WebGLRenderer with a studio environment and a shadow-casting light, add createSplash().group and call splash.setProgress(progress) each frame.

Existing project: Copy src/frozen-splash.js; add the group to your scene with an environment map.

Reuse ideas:
- Water brand: Ice, eighteen points.
- Dairy: Milk crown.
- Treat: Honey, few beads.

## Limitations
- The splash is a stylised shape, not a fluid simulation.
- The liquid is transparent without true refraction.

## License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.

Provenance: Adapted from the owner's threejs-sketches/objects-scenes/frozen-splash (MIT) and rebuilt for AI Pixel Wizard in October 2026 as an original studio object: a scalloped crown wall with bead-tipped points, a central jet and flung beads in glass, with a full camera circle on an exact loop.

