Loopcast Live
Loopcast Live
One take and no cut: the camera reads a live room close and oblique, battle bar, guests, gifts, chat, then pulls back to the whole page, which stays live the entire time.
A single free-standing slab about a metre wide hanging in a dark void, with nothing else, lit from behind by soft coloured glows and a wash that bleed around its edges. Six beats over 33 s in one close drifting camera: a grazing macro, a slow move down and sweep with racking focus, a square-on hold, a low tracking pass, a rise, then one long pull back to the whole slab, still drifting.
- Length
- 33 s
- Scenes
- 1
- Device
- chrome
- Style
- abstract
- Camera
- continuous take, ultra closeup, tracking, rack focus, pull back
//
LOOPCAST LIVE — 33 s, one take, no voice-over. The reference still (the Loopcast LIVE web room:
nav, a 2 × 2 multi-guest battle, gift tray, viewers and chat) rebuilt as ONE free-standing
ui3d, 1078 × 728 mm, hanging in a dark void. Nothing else is in the world. The camera never
cuts: it reads the page beat by beat, close and oblique, and the page is live the whole time.
THE PANEL. tiktok-live.screens.html (tt-page 1480 × 1000 css + the chat-feed list) →
scripts/html-screens.mts → tiktok-live.screens.json, pasted below as the ui3d's children.
The stage is in the converter's mm (269.44 × 182.05); world_width scales it ×4, so a stage
unit is 4 world mm and a lift of z=100 (0.01 per unit) is 4 mm.
world(sx, sy) = (4·sx − 538.88, 364.1 − 4·sy, lift) — the landmarks the camera aims at:
battle bar y 292.7 · x −353 → 257 ("5913" at −328) timer pill (−47, 274.5)
tiles 1 (−203, 166) · 2 (107, 166) · 3 (−203, −115) · 4 (107, −115)
gift pills gn-1 (−275, −127) · gn-2 (−275, −168) · combo (−197)
gift tray y −291 (icons) · Rose −313 · Lyric Mail −77 · coin box (223, −301)
chat viewport x 270 → 529, y 221 → −309 · input (382, −331) · hearts (501, −287)
top viewers (399, 283)
Edited after conversion (and only these):
· the two full-page wrapper cards are gone: the page's black IS the void, and the raster
budget that went to 98 000 mm² of flat black goes to the closeups instead. The nav keeps a
black panel of its own (nav-bg): thin type over the far void inherits three's DOF blur
· every item carries z=0: the engine's default z is a painter counter (0.01 a unit per
item, shared down the tree), which floats late, deep items centimetres off the panel at
a grazing angle. Coplanar is safe (free ui3d panels paint in document order); the lifts
below are placed by hand instead:
overlays on the guests 4 mm · battle bar + clock 6 · gift pills 10 (combo 11) ·
tray 2 + its gift icons 8 · host pill 3 · nav 1.6–2.4 · heart button 3.2 · hearts 12
· `name=<icon>-filled` → `name=<icon> variant=filled` (the webfont has no -filled glyphs,
so the HTML renders the outline and data-icon carries the filled name through)
· `color=transparent` on the gift images (the fallback fill is painted behind a PNG's alpha)
· the tracks (scroll, swaps, pills, hearts, Ken Burns) and the LIVE badge pulses
Two engine limits the page is built around (both also fixed in the HTML):
· card meshes ignore clip planes on WebGPU (text and images do clip), so no card may leave
its parent's box: the battle split is a blue cover sliding off the pink, the chat has
opaque covers above and below its viewport, scrolls only 182 px, and keeps arriving rows
invisible until they land; the gift pills enter inside their tile
· identical-looking icon surfaces are shared by size + colour + variant (the NAME is not in
the key), so two different glyphs of one colour never share a size
Raster density: a free ui3d rasters at most one frame-width across the whole stage unless
the camera FRAMES an item inside it, so the gift-pill beat is a node-framed key (gn-1,
fill 58): that is what lifts the whole page to closeup density.
LOOK. Unlit UI, exact hexes: no tone curve (film_grain output_transform=2 is the sRGB
encode), grain 0.03, vignette. Depth of field on three's pass, racked per key. Behind the
panel only light: a Loopcast-red glow upper right, a cyan glow lower left, a violet wash far
back, drifting slowly.
THE TAKE (frame smooth=0.55, so the lens chases the keys and never dead-stops):
0.0– 4.4 the battle bar: a grazing macro holds on the pink score as it ticks 5871 → 5894
→ 5913 (0.8, 1.6), then pulls back along the bar as the split shoves right
(3.4, 4.1); the clock o