Skip to content
Docs
Open Promoeyes
light-guide

light-guide

LIGHT GUIDE — new-scenes shot 06 (Act I · light and perception), built off images/rows/s4_5.png: a thick clear filament snaking across a dark table, one amber pulse lit at its near end · the pulse deep in the bends, visible where the glass turns · the filament plugged into a phone's port, the pulse crossing into the chassis and running on inside the UI.

Read the rig's notes
MOBILES ONLY. One iphone, lying face-up on the table, top pointing away.
The filament terminates physically at its bottom edge — the port — and
nothing else in the scene is a device.

THE CLAIM. One moving thing, two sides of the glass. The pulse is an
emissive sphere whose position track IS the filament's centreline
sampled by arc length at 48 rows (constant speed, 1227 mm in
4.7 s) — the generator owns the bezier, so the pulse cannot leave
the glass. It carries its own point light (decay 0, 120 mm cutoff, README's
mm-scale rule) so the tube walls and the table light up around it as it
passes. Total internal reflection is what makes the pulse invisible on
the straights and visible at the bends: five glow sprites sit at the
entrance, the two bend apexes, a scratch on the long straight and the
port coupler, each with an opacity spike of ±0.12 s keyed to the moment
the pulse's arc position passes it — the sparks are timed by the same
parameterisation, not eyeballed. At 5.6 the pulse reaches the port,
fades inside the chassis, and the UI's amber line runs from the port end
of the glass up the screen 5.7 → 7: 30 short segments lit in
order, so the line has the same read as the pulse — a front, not a fade.

THE FILAMENT. path3d, dims=3, 9.2 × 9.2 mm square section (the
reference's acrylic bar), centreline at y=4.6 so it sits ON the table.
Ten waypoints make the S — a run in, a left bend, a right bend, an exit
parallel to the phone's long axis — threaded into 11 cubic beziers by
Catmull-Rom, then a straight 150 mm run into the port. The phone is
placed ON the exit ray, so the filament meets the port by construction.
Material: transmission is force-disabled reel-wide (materials.ts, the
transmission-flicker TODO), so the acrylic is alpha-blended front faces
under a clearcoat — dark where the table shows through, bright where the
rims catch an edge, and the pulse inside it stays visible.

POSE. Phone centre (22.46 4.2 -502.46), rotation "-90 0 -45" — Rx(-90) after
an in-plane spin, so it lies face-up with its top toward (0.707, -0.707).
Port = centre − 79.75·top = (-33.9, -446.1). The filament's last 2 mm sit
inside the port so the GLB hides the cap.

CAMERA. Macro tabletop (plan §1b, item 6): one continuous move that opens
wide on the filament's near end and follows the pulse down into the port,
landing on the coupler at 5.6. focus= is the pulse node on every row, so
the rack follows the light; dof_range 90 / dof_blur 6 is the shallow
depth the sheet's frames have.

LOOK — plan §2: one accent (#ffb347), one cool (#7ad7ff), hz0/hz1/hz2 matched
and parked high (a lobe straddling the floor plane clips in the reflector
pass), reflector-ground table, fog to the background. Post row 06: bloom
0.85 / 0.80, camera_dof named so film_grain lands after the lens, fxaa
last. Rim lights sit HIGH (y ≥ 600): a low area light mirrored in the
table is a crisp cyan rectangle at the horizon.

BEATS (scene seconds): 0.9 the pulse enters · 2.7 first bend
· 4.1 second bend · 5.6 the port · 5.7 → 7 the line
runs up the screen. Capture beats: 1.4 (entry) · 3.4 (bends) · 6.6 (port).

IN THE REEL this scene runs transition=match-move (0.8 s) on match=hero
into s07-contour-harvest. Standalone here, so transition=none.

NO AUDIO — primitives scene; add at assembly time.

Verify:  npm run promo:pug -- verify --in promos/primitives/scenes/abstract/new-scenes/light-guide.promo
Capture: nx run tools:capture:webgl -- --project promos/primitives/scenes/abstract/new-scenes/light-guide.promo --width 1920 --height 1080 --times "1.4,3.4,6.6"
Preview: /packages/runtime/index.html?project=promos/primitives/scenes/abstract/new-scenes/light-guide.promo
Topic
scenes
Scenes
1
Kind
reference rig
//
    LIGHT GUIDE — new-scenes shot 06 (Act I · light and perception), built off
    images/rows/s4_5.png: a thick clear filament snaking across a dark table,
    one amber pulse lit at its near end · the pulse deep in the bends, visible
    where the glass turns · the filament plugged into a phone's port, the
    pulse crossing into the chassis and running on inside the UI.

    MOBILES ONLY. One iphone, lying face-up on the table, top pointing away.
    The filament terminates physically at its bottom edge — the port — and
    nothing else in the scene is a device.

    THE CLAIM. One moving thing, two sides of the glass. The pulse is an
    emissive sphere whose position track IS the filament's centreline
    sampled by arc length at 48 rows (constant speed, 1227 mm in
    4.7 s) — the generator owns the bezier, so the pulse cannot leave
    the glass. It carries its own point light (decay 0, 120 mm cutoff, README's
    mm-scale rule) so the tube walls and the table light up around it as it
    passes. Total internal reflection is what makes the pulse invisible on
    the straights and visible at the bends: five glow sprites sit at the
    entrance, the two bend apexes, a scratch on the long straight and the
    port coupler, each with an opacity spike of ±0.12 s keyed to the moment
    the pulse's arc position passes it — the sparks are timed by the same
    parameterisation, not eyeballed. At 5.6 the pulse reaches the port,
    fades inside the chassis, and the UI's amber line runs from the port end
    of the glass up the screen 5.7 → 7: 30 short segments lit in
    order, so the line has the same read as the pulse — a front, not a fade.

    THE FILAMENT. path3d, dims=3, 9.2 × 9.2 mm square section (the
    reference's acrylic bar), centreline at y=4.6 so it sits ON the table.
    Ten waypoints make the S — a run in, a left bend, a right bend, an exit
    parallel to the phone's long axis — threaded into 11 cubic beziers by
    Catmull-Rom, then a straight 150 mm run into the port. The phone is
    placed ON the exit ray, so the filament meets the port by construction.
    Material: transmission is force-disabled reel-wide (materials.ts, the
    transmission-flicker TODO), so the acrylic is alpha-blended front faces
    under a clearcoat — dark where the table shows through, bright where the
    rims catch an edge, and the pulse inside it stays visible.

    POSE. Phone centre (22.46 4.2 -502.46), rotation "-90 0 -45" — Rx(-90) after
    an in-plane spin, so it lies face-up with its top toward (0.707, -0.707).
    Port = centre − 79.75·top = (-33.9, -446.1). The filament's last 2 mm sit
    inside the port so the GLB hides the cap.

    CAMERA. Macro tabletop (plan §1b, item 6): one continuous move that opens
    wide on the filament's near end and follows the pulse down into the port,
    landing on the coupler at 5.6. focus= is the pulse node on every row, so
    the rack follows the light; dof_range 90 / dof_blur 6 is the shallow
    depth the sheet's frames have.

    LOOK — plan §2: one accent (#ffb347), one cool (#7ad7ff), hz0/hz1/hz2 matched
    and parked high (a lobe straddling the floor plane clips in the reflector
    pass), reflector-ground table, fog to the background. Post row 06: bloom
    0.85 / 0.80, camera_dof named so film_grain lands after the lens, fxaa
    last. Rim lights sit HIGH (y ≥ 600): a low area light mirrored in the
    table is a crisp cyan rectangle at the horizon.

    BEATS (scene seconds): 0.9 the pulse enters · 2.7 first bend
    · 4.1 second bend · 5.6 the port · 5.7 → 7 the line
    runs up the screen. Capture beats: 1.4 (entry) · 3.4 (bends) · 6.6 (port).

    IN THE REEL this scene runs transition=match-move (0.8 s) on match=hero
    into s07-contour-harvest. Standalone here, so transition=none.

    NO AUDIO — primitives scene; add at assembly time.

    Verify:  npm run promo:pug -- verify --in promos/primitives/scenes/abstract/new-scenes/light-guide.promo
    Capture: nx run