# Chrome Orbit — `chrome-orbit@1.0.0`

A little sculpture garden of liquid-chrome shapes, with the camera circling it in a perfect loop.

Chrome shapes arranged on a dark stage — a knot (or a morphing chrome blob) surrounded by spheres, a capsule, a ring and a cube — while the camera glides all the way around and back to the start. Change the metal colour for gold, the shine, the light warmth and the camera path. It is built from the Chrome Material, Orbit Camera and (optionally) Iridescent Blob ingredients.

- Kind: example; status: published; digest sha256:2e51cbb9db219ac37d027aa8fb1b216e7840763ceda4c8b9fa10e27ee47d62a1
- Role: Complete example scene.
- Implementation: three; entry `demo.js`
- Files: https://aipixelwizard.com/registry/chrome-orbit/1.0.0/<path> (`LICENSE`, `asset.json`, `demo.js`, `index.html`)
- Manifest JSON: https://aipixelwizard.com/api/v1/visuals/chrome-orbit/versions/1.0.0
- Runnable demo: https://aipixelwizard.com/registry/chrome-orbit/1.0.0/index.html (open over http; it imports sibling packages by relative path)
- Dependencies (exact): `three@0.185.1` (source) — WebGL rendering.; `chrome-material@1.0.0` (source) — Material and environment.; `orbit-camera@1.0.0` (source) — Camera motion.; `iridescent-blob@1.0.0` (source) — Optional centrepiece geometry.; `apw-runtime@1.0.0` (source) — Harness and export tools.

## Exports
- `createDemo({ canvas, width, height, params, fps, duration }) => { renderFrame(info), dispose() }` — Builds the scene.

## Parameters
- `centrepiece` (select one of knot | blob, default "knot") — Centrepiece
- `tint` (color, default "#ffffff") — Metal colour
- `roughness` (number 0–0.45, default 0.06) — Shine: Lower is a sharper mirror.
- `lightWarmth` (number -1–1, default 0.15) — Light warmth
- `turns` (integer 1–2, default 1) — Turns per loop
- `cameraDistance` (number 5–12, default 7.2) — Camera distance
- `cameraHeight` (number 0.5–5, default 2.2) — Camera height
- `background` (color, default "#0a0a0f") — Background

## Composition
- Inputs: Parameters only.
- Outputs: A rendered Three.js scene.
- Coordinates: Y-up, stage centred on the origin.
- Lighting: Studio environment from chrome-material.
- Timing: Pure function of progress — seamless loop.
- Works with: —
- Ready to run: tested together in this example.

## Output and loop
- 1080×1080, 30 fps, 8 s, procedural
- Seamless loop: yes — Whole camera turns, whole centrepiece turn, periodic blob morph.
- Verified 2026-10-02 in Chrome 151.0.7922.137 headless on Linux 7.0.0-31-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: Download the pack, npm install, npm run serve, open chrome-orbit/1.0.0/index.html. Export with npm run render -- chrome-orbit/1.0.0.

Existing project: Use demo.js as a wiring reference: add the chrome material, studio environment and orbit camera to your own scene rather than replacing it.

Reuse ideas:
- Replace the shapes with your own model or logo and keep the camera loop.
- Use the gold preset for a luxury product backdrop.
- Lower the camera height for a dramatic hero angle.

## Limitations
- Shapes reflect the studio, not each other.

## License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License (see LICENSE in this folder).
- three.js 0.185.1: MIT (https://github.com/mrdoob/three.js)

Provenance: Original code written for AI Pixel Wizard in October 2026.

