Orbital lab

Every real spherical harmonic through l = 3. The superposition keeps evolving; each slider is how much that state is allowed to join in. Numbers on the right are the live coefficient right now.

click to zoom and orbit
interactive · click outside to release
ψ(θ,φ) = Σ clm · Ylm(θ,φ)

Ship it as a webview loader

loader.html on this page is the animation above distilled to ONE dependency-free file: raw WebGL, no Babylon, no CDN, no fonts, no fetch, about 24 KB. It boots instantly, which is the point: it plays while your webview's real content is still loading. Under 10 KB gzipped, zero requests, one draw call over 12,800 vertex-shader-displaced triangles, and about 0.06 ms of JS per frame, so the CPU stays asleep. The wheel has the lab's exact feel: 1.2% per notch, inertia, zoom toward the cursor, and the same spring that always breathes the framing back home. Defaults are the tuned numbers; every knob is a URL parameter, and a fresh random state is rolled at every epoch so it never repeats.

Embed

<iframe src="loader.html"
        style="position:absolute;inset:0;width:100%;height:100%;border:0;background:#0d1117">
</iframe>
<!-- when your app is ready, fade the iframe out and remove it -->

Grab loader.html from this page's Files tab (or clone the repo) and serve it beside your app. It sizes to the limiting axis of any container, portrait or landscape.

Parameters

paramdefaultmeaning
pt4.5playground seconds of free evolution between epochs
dt3seconds to steer onto the mark, and back out
ct0.3seconds before the epoch the outline cheat fades in
st0seconds the mark is held dead still
logo100peak opacity of the flat teal mark, in percent
llead1seconds the logo fade starts before the sit and ends after it
tlead1.5seconds before the epoch the dark lobe fades to teal
ov10 makes the cheat its own act after the steer
intro10 skips the teal logo intro
interact01 arms click-to-zoom (for previews and demos, never load screens)

The three tuned cuts

These are the settings the loop was actually tuned to, saved live while dialing it in. All three ship in the Final tab's snapshot pulldown (marked *), and each maps to loader URL params. What the knobs mean: pt is free play between epochs, dt is how long the dive onto the mark takes, ct is how late the outline cheat is held back (smaller = the sculpting is nearly invisible), st is dead-still hold time, logo is the flat mark's peak opacity, llead starts the logo fade that many seconds before the epoch and ends it that many after, tlead turns the dark lobe teal that many seconds early so the mark reads as one colour by arrival.

cutnumberswhy it feels the way it does
john fav
(the preview below)
pt 5 · dt 0.7 · ct 0.2 · st 1
logo 100% · llead 0.6 · tlead 0.2
The keeper. A 0.7s dive into a real 1s sit, and the teal unifies only 0.2s before arrival, so the dark lobe survives almost to the mark and the colour snap lands WITH the logo. Loader: ?pt=5&dt=0.7&ct=0.2&st=1&llead=0.6&tlead=0.2
john 1
(the default)
pt 4.5 · dt 3 · ct 0.3 · st 0
logo 100% · llead 1 · tlead 1.5
The stately cut. A long 3s dinner call lets you watch the physics converge; the cheat waits until the last 0.3s so you never catch it working; there is NO sit, the whole logo moment lives on its 1s lead, swelling to full teal exactly across the epoch and letting go. Loader: no params needed.
snap 2 pt 5 · dt 1 · ct 0.2 · st 0
logo 100% · llead 0.3 · tlead 1.5
The middle cut. A 1s dive and a tight 0.3s logo flash: punchy, still readable. Loader: ?pt=5&dt=1&ct=0.2&llead=0.3
snap 3 pt 5 · dt 0.7 · ct 0.2 · st 0
logo 80% · llead 0.5 · tlead 1.5
The heartbeat cut. A 0.7s dive with the logo capped at 80% so the 3D still shows through the flash: the mark reads as a pulse, not a poster. Loader: ?pt=5&dt=0.7&ct=0.2&logo=80&llead=0.5

Live preview

This preview IS loader.html, inlined, running the john fav cut. Click it once and your wheel zooms; click anywhere else to give the wheel back to the page.