rolling
rolling
ROLLING — sixteen shots of ONE camera move: a far device at the end of a dressed corridor, and a straight push toward it down the axis that ROLLS about the view axis (z) at a constant rate the whole way in.
Read the rig's notes
THE MOVE. Every shot is the same programme on a different set:
· the device stands at the origin, screen to +z, and never moves;
· the corridor between the lens and the device is dressed with set
pieces that float in space — nothing spins, nothing is keyframed
into the camera's way; a few pieces drift 15-30 mm over the shot,
the way loose objects do in a still room;
· the camera sits ON the axis (x = y = 0) and only travels in z, at a
constant speed for the first 60 % of the shot and then on one
smooth deceleration into the landing; the roll rides the same
progress, constant then settling, from its opening angle to level.
It arrives level exactly as the device fills the frame — the
landing is the only level frame in the shot.
THE SET IS IN FLIGHT. Every dressing piece, device and panel drifts
ACROSS the corridor on one straight position track — 60-100 mm/s,
the pace of something loose in orbit, held for 4.5 s and then eased
out over the last 1.5 s — toward and across the axis the camera
travels down. No rotation channel anywhere in the file: every angular change
on screen is the lens.
ROLL IS THE UP VECTOR. There is no roll channel. A frame row's
up="x y z" is the camera's own up, so for a lens looking down -z a roll
of th is up = (sin th, cos th, 0), and the roll is authored by sampling
that per row. Rows stay under 20 deg apart: the track interpolates the
vector, not the angle, and a 180 deg step would pass through zero.
ONE PROGRESS TABLE, ONE CLOCK (13 rows per 6 s shot):
p(u) = 1.25 u for u <= 0.6 (constant speed)
p(u) = 0.75 + 1.25 (u - 0.6) - 1.5625 (u - 0.6)^2 after (slope -> 0 at u = 1)
z = z0 + (z1 - z0) p th = th0 (1 - p)
rows: 0 .104 .208 .313 .417 .521 .625 .729 .826 .902 .957 .989 1
Every row is easing=linear on purpose — the table IS the easing, and
any other row easing would re-ease between the samples.
THE CROSSINGS ARE SOLVED, NOT EYED. The camera reaches depth z at
t_p = 6 p^-1((z0 - z) / (z0 - z1)). A piece's track is x(t) =
dir * v * (T(t) - t_c), where T(t) = t up to 4.5 s and then eases out
(4.5 + 0.75 (1 - (1 - s)^2), s over the last 1.5 s), and t_c is solved
so that at t_p the piece is already its own radius plus 250 mm past
the axis, still sliding away: t_c = T(t_p) - (r + 250) / v. The walls
of 03, 04 and 09 are the exception: a slab a metre tall passing at 250 mm
fills the frame top to bottom and reads as a hit however clear it is,
so they clear by their half-width plus 1300 mm and drift at 100 mm/s: every wall crosses the
axis metres ahead of the lens or before the shot, and is a metre or
more off it, sweeping the corner, when the lens goes by. The
shards of 02 follow the same rule at their half-diagonal plus 500 mm,
and the pilasters of 03 the wall rule. So each
piece crosses the centre of frame while the lens is still 1.5-3 m
off, and slides out of the corner in the last second before the lens
reaches its depth. Pieces the lens passes early have crossed before
the shot opens; pieces deeper than the landing cross in the first
three seconds, so by the landing they are half a metre off the axis
and out of frame. Vertical offsets are kept within 140 mm, because a
19-degree half-frame loses anything higher within the last metre.
Each piece's opening x is -dir * v * t_c; its rows are 4.5 v linear
then 5.25 v eased, dir alternating piece by piece.
THE DRESSING is taken from the new-scenes shots, one idea each:
echo-compression glass lens discs on steel rods with an amber core,
a row of instruments receding down a hall (01)
electrostatic a loose field of gold dust in dim haze (02)
gimbal-room concrete pilasters, a stone plinth, a lit slot,
three loose spheres (03)
h3a-ring-exit panelled walls with warm vertical strips, a black
podium with a lit rail (04, 09)
and three shots dress the corridor with the PRODUCT instead: devices
hanging in space at their own tilts and free-standing ui3d panels —
phones (05), tablets and browser windows (06), a swarm of panels (07).
Every device is an iphone/ipad/laptop/chrome element with its own ui;
every panel is a ui3d with world_width in mm; none of them rotates.
THE DEVICE IS FAR. At 3.6 - 4.2 m and 38 deg a 160 mm phone is ~6 % of
frame height. The landing distance is solved for 62 % of frame height:
d = H / (2 * 0.62 * tan 19) so iphone 380 · laptop 620 · ipad 680 ·
imac 1100 (mm). DOF rides the device: focus=<device id>,
so the near pieces soften as they sweep past and the device is the one
thing sharp from frame 1.
# scene dur device roll dressing
01 s01-stands 6 iphone -90 lens-disc instruments on rods, hall columns
02 s02-dust 6 laptop +180 gold dust field, eight dark shards
03 s03-pilasters 6 ipad -120 concrete pilasters with slot lights, plinth, spheres
04 s04-strips 6 imac +60 panel slabs with warm strips, podium and rail below
05 s05-phones 6 laptop +120 twenty iPhones in flight, ten floating cards
06 s06-tablets 6 iphone -180 iPads, browser windows, wide panels
07 s07-swarm 6 ipad +90 twenty-one ui3d panels, laptops and phones around
08 s09-panels 6 imac -90 wall panels with strips and seams, a back wall
09 s10-spheres 6 iphone -90 the STANDS rig with spheres
10 s11-capsules 6 iphone -90 … with emissive capsules
12 s13-icons 6 iphone -90 … with extruded Tabler icons
13 s14-fbx 6 iphone -90 … with the FBX icon meshes
14 s15-rings 6 iphone -90 … with tori
15 s16-cubes 6 iphone -90 … with chamfered cubes
17 s18-glyphs 6 iphone -90 … with text3d words
18 s19-crystals 6 iphone -90 … with icosahedra and cores
Shots 1-15 hand off with transition=through on their own device: the
screen you have just arrived at becomes the window onto the next
corridor, which opens already rolled; s19 closes on transition=none.
Shots 9-16 are the STANDS rig repeated exactly — same camera, same
hall, same ten flight tracks — with a different body on each stand,
so the ten pieces can be compared like for like.
UNITS: millimetres. No audio (primitives reel).
Verify: npm run promo:pug -- verify --in promos/primitives/abstract/camera/rolling.promo
Preview: /packages/runtime/index.html?project=promos/primitives/abstract/camera/rolling.promo- Topic
- abstract
- Scenes
- 16
- Kind
- reference rig
//
ROLLING — sixteen shots of ONE camera move: a far device at the end of a
dressed corridor, and a straight push toward it down the axis that ROLLS
about the view axis (z) at a constant rate the whole way in.
THE MOVE. Every shot is the same programme on a different set:
· the device stands at the origin, screen to +z, and never moves;
· the corridor between the lens and the device is dressed with set
pieces that float in space — nothing spins, nothing is keyframed
into the camera's way; a few pieces drift 15-30 mm over the shot,
the way loose objects do in a still room;
· the camera sits ON the axis (x = y = 0) and only travels in z, at a
constant speed for the first 60 % of the shot and then on one
smooth deceleration into the landing; the roll rides the same
progress, constant then settling, from its opening angle to level.
It arrives level exactly as the device fills the frame — the
landing is the only level frame in the shot.
THE SET IS IN FLIGHT. Every dressing piece, device and panel drifts
ACROSS the corridor on one straight position track — 60-100 mm/s,
the pace of something loose in orbit, held for 4.5 s and then eased
out over the last 1.5 s — toward and across the axis the camera
travels down. No rotation channel anywhere in the file: every angular change
on screen is the lens.
ROLL IS THE UP VECTOR. There is no roll channel. A frame row's
up="x y z" is the camera's own up, so for a lens looking down -z a roll
of th is up = (sin th, cos th, 0), and the roll is authored by sampling
that per row. Rows stay under 20 deg apart: the track interpolates the
vector, not the angle, and a 180 deg step would pass through zero.
ONE PROGRESS TABLE, ONE CLOCK (13 rows per 6 s shot):
p(u) = 1.25 u for u <= 0.6 (constant speed)
p(u) = 0.75 + 1.25 (u - 0.6) - 1.5625 (u - 0.6)^2 after (slope -> 0 at u = 1)
z = z0 + (z1 - z0) p th = th0 (1 - p)
rows: 0 .104 .208 .313 .417 .521 .625 .729 .826 .902 .957 .989 1
Every row is easing=linear on purpose — the table IS the easing, and
any other row easing would re-ease between the samples.
THE CROSSINGS ARE SOLVED, NOT EYED. The camera reaches depth z at
t_p = 6 p^-1((z0 - z) / (z0 - z1)). A piece's track is x(t) =
dir * v * (T(t) - t_c), where T(t) = t up to 4.5 s and then eases out
(4.5 + 0.75 (1 - (1 - s)^2), s over the last 1.5 s), and t_c is solved
so that at t_p the piece is already its own radius plus 250 mm past
the axis, still sliding away: t_c = T(t_p) - (r + 250) / v. The walls
of 03, 04 and 09 are the exception: a slab a metre tall passing at 250 mm
fills the frame top to bottom and reads as a hit however clear it is,
so they clear by their half-width plus 1300 mm and drift at 100 mm/s: every wall crosses the
axis metres ahead of the lens or before the shot, and is a metre or
more off it, sweeping the corner, when the lens goes by. The
shards of 02 follow the same rule at their half-diagonal plus 500 mm,
and the pilasters of 03 the wall rule. So each
piece crosses the centre of frame while the lens is still 1.5-3 m
off, and slides out of the corner in the last second before the lens
reaches its depth. Pieces the lens passes early have crossed before
the shot opens; pieces deeper than the landing cross in the first
three seconds, so by the landing they are half a metre off the axis
and out of frame. Vertical offsets are kept within 140 mm, because a
19-degree half-frame loses anything higher within the last metre.
Each piece's opening x is -dir * v * t_c; its rows are 4.5 v linear
then 5.25 v eased, dir alternating piece by piece.
THE DRESSING is taken from the new-scenes shots, one idea each:
echo-compression glass lens discs on steel rods with an amber core,