Skip to content
Docs
Open Promoeyes
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
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,