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