Skip to content
Docs
Open Promoeyes
abstract-camera

abstract-camera

ABSTRACT · CAMERA SUITE — shots 17-27 of the RICH-SCENES reel, and the largest of its parts. Eleven shots in which nothing in the set does anything interesting and the CAMERA is the subject.

Read the rig's notes
THE ARGUMENT. The material and repetition suites hold the camera still and
move the WORLD; this one inverts that. They are the eleven moves a camera
can make about a thing that is standing still — crane, orbit, push,
dolly-zoom, lateral parallax, threshold, whip, vertical drop, rise, retreat,
and the corkscrew that combines four of them — and each one is the SAME
159.5 mm phone standing on the SAME floor, so the only variable in the suite
is the move. That is the point: if the phone were doing anything, the reader
would credit the phone.

  · CRANE (17) changes ONE number — height — and reads as grand for it.
  · ARC (18) changes only azimuth. PUSH-IN (19) changes only distance.
  · VERTIGO (20) changes distance and fov TOGETHER, against each other, so
    the subject holds still while the world behind it opens up.
  · PARALLAX (21) changes only x — the FOREGROUND does the reveal.
  · FLY-THROUGH (22) crosses two thresholds. WHIP (23) changes only the look
    direction, and changes it faster than anything else in the reel.
  · GOD'S-EYE (24) is the corkscrew with the corkscrew removed.
  · ASCENT (25) is shot 27 run backwards. PULL-BACK (26) is shot 19 run
    backwards. SPIRAL DIVE (27) is all of them at once, speed-ramped.

  #   scene              dur   transition             device   the shot
  17  s17-crane          7.0   match-move             iphone   4.0 m of pure height, down a colonnade
  18  s18-arc            7.0   match-move             iphone   340 deg around a standing phone at 130 mm
  19  s19-pushin         7.0   dolly-zoom-in gap      iphone   3.6 m to 430 mm, straight, and slower at the end
  20  s20-vertigo        6.5   match-move             iphone   dolly 2.6 m -> 760, fov 12.3 -> 40.5 deg
  21  s21-parallax       6.5   match-move             macbook  1.53 m of x, and a slab does the reveal
  22  s22-flythrough     7.0   whip-pan (0.30)        iphone   two thresholds, and a ramp through both
  23  s23-whip           6.0   match-move             iphone   0.85 s the wrong way, then 132 deg in 0.55
  24  s24-godseye        6.5   match-move             ipad     6.2 m straight down onto a flat tablet
  25  s25-ascend         7.5   match-move             iphone   the corkscrew, run upward, 96 mm -> 8.6 m
  26  s26-pullback       7.5   match-move             iphone   268 mm -> 7.6 m: 82 % of frame to 2.9 %
  27  s27-descent        8.0   (was emerge -> s28-hero)  iphone   8.4 m to 380 mm: a speed-ramped corkscrew dive

THE SPEED RAMP (17, 19, 22, 25, 26, 27) is a camera technique, not a tag. A
frame track just interpolates between the rows it is given, so a ramp is
authored by SAMPLING one smooth curve UNEVENLY rather than by keyframing a
speed. Shot 27 is a single parametric helix — 3 turns, radius 3.3 m to
380 mm, height 8.4 m to 82 mm — with progress along it bent by a
piecewise-smoothstep table (hang · drop · stall · drop · land) and sampled at
31 rows. Every row in every ramped shot carries easing=linear ON PURPOSE:
any other easing re-eases between the samples and flattens the ramp back
into a constant glide.

Six shots run their own table, and the table IS the shot:
  17 crane      0 · 0.03 · 0.34 · 0.86 · 1     a long hang, then a fall
  19 push-in    0 · 0.06 · 0.62 · 1            most of the travel early, so
                                               the last metre takes 3 s
  22 fly-through 0 · 0.06 · 0.30 · 0.68 · 1    slow up to the threshold,
                                               fast through it, slow after
  25 ascent     0 · 0.06 · 0.42 · 1            intimate, then it leaves
  26 pull-back  0 · 0.04 · 0.34 · 1            back-loaded: the retreat
                                               never stops accelerating
  27 spiral     0 · 0.05 · 0.46 · 0.52 · 0.90 · 1

THE UP VECTOR is the other half of any move that looks down its own axis.
Near-vertically down, up="0 1 0" is nearly parallel to the view direction
and the frame roll goes undefined — the shot jitters or snaps. Three shots
deal with it, three different ways, and the difference is the lesson:
  · 27 SPIRAL authors up per row, starting as the horizontal (sin th, 0,
    cos th) a top-down frame wants and rotating into world up across
    p 0.12 -> 0.58. The horizon swinging into place under you is most of
    what sells it.
  · 25 ASCENT runs that program BACKWARDS — world up at the pad, rotating
    out to the horizontal radial as the camera goes over the top.
  · 24 GOD'S-EYE never comes level at all, so there is nothing to rotate
    into: up stays "0 0 1" for all 6.5 s. A fixed non-degenerate up is the
    correct answer whenever the shot does not change hemisphere, and
    authoring a swing there would put a roll in a shot whose whole claim is
    that it has none.

THE TRAPS IN THIS PART:
  · THE DOLLY ZOOM IS A SOLVED FOV, NOT A KEYFRAMED ONE (20). The subject
    holds its size only if fov = 2·atan(H / 2d) at every row, for one fixed
    framed height H. H = 560 mm here, so 2.6 m -> 760 mm of dolly pairs
    12.3 -> 40.5 deg of fov, and the phone is 28 % of frame height at both
    ends. Author fov independently of d and it is not a vertigo, it is a
    zoom with a dolly in it.
  · A DOLLY ZOOM NEEDS DEPTH BEHIND THE SUBJECT or there is nothing to warp.
    20 spends its whole set on 16 receding rings and two colonnades, and
    that geometry is the effect — over an empty stage the same camera does
    visibly nothing.
  · PARALLAX IS A THREE-PLANE PROBLEM (21). The reveal is solved, not eyed:
    the sightline from camera to the laptop crosses the foreground plane at
    x = 0.469·xcam + 74.3, so the slab has to span (-870, -70) for the
    uncovering to land at 55 % of the track and not at 20 %. Two planes read
    as a wipe; three read as a room.
  · THERE IS NO MOTION-BLUR PASS (23). A whip pan cannot be sold in post
    here, so it is sold by the SET: 18 emissive streak capsules on a 1.6 m
    ring, crossed at ~240 deg/s, plus the reel's highest dispersion at 2.6.
  · A BEAT UNDER A SHADER GAP IS A BEAT NOBODY SEES (22 -> 23). Shot 23 opens
    held 132 deg the wrong way, and that hold was 0.30 s behind a 0.45 s
    blend — so the premise of the shot played entirely inside a wash. The
    hold is 0.85 s now and the gap is 0.30. Anything a shader transition
    covers is not on screen, whatever the scene clock says.
  · A DEVICE NODE IS ITS CENTRE, NOT ITS BASE. Every device tag's `fit`
    recentres its GLB on the bounding box, so standing one on a floor means
    floor + half the body's VERTICAL extent — 79.75 for an iphone, 118.9 for
    a macbook, and (H/2)|cos th| + (D/2)|sin th| for anything rotated, which
    puts the flat ipad of shot 24 at 3.2 mm and not at 140.3. Author the
    surface height itself and the device sinks halfway into it.
  · A FLAT DEVICE INVERTS THE FRAME (24). An ipad at rotation "-90 0 0" has
    its screen-up along world -Z, so a camera looking straight down at it
    with up="0 0 1" renders the UI upside down. up="0 0 -1" is the fix, and
    it is the only camera in the reel that carries one.

WHAT THIS SUITE SHARES, as against the other two. It keeps near-free
repeated geometry and the single accent colour, and drops the other three on
purpose, replacing them with three of its own:
  · ONE SUBJECT, UNMOVED. The same phone, the same 79.75 mm centre, the same
    floor at y=0, in ten of eleven shots. A suite about movement cannot also
    be about what is moving.
  · A SET THAT ONLY EXISTS TO BE PASSED. Colonnades, receding rings, floor
    strips, foreground slabs: every one of them is there to give the move a
    rate, and none of them is the shot.
  · A SOLVED CURVE, SAMPLED. Nothing here is eyeballed between two poses —
    each move is a function of one progress variable, and the rows are that
    function evaluated. It is why the ramps can be re-timed by editing one
    table instead of dragging twenty keyframes.

FOG in this part pushes far out to 9-26 m, because a shot that travels nine
metres and fogs at two has erased its own destination.
THE UNITS. 1 page unit = 100 mm. The kit is fist-sized (a 100 mm chamfered
cube, a 98 mm torus), the cameras sit 600-1200 mm out, and the devices render
at true physical size — 159.5 mm of iphone standing next to a 100 mm cube is
the whole reason the shots read as objects on a table rather than as
graphics. Every length in this file is a millimetre.

LOOK — shared across every part:
  ink        #e9e6df   dim  #7c7970   line  #23232a
  mark       #ffb347   the one accent; every emissive surface is this
  cool       #7ad7ff   the dark stage's side source
  warm       #ffa25e   its opposite
  backgrounds  s1 #101116 · s2 #0b0c10 · s3 #05060a · s4 #121014 ·
               s5 #04050a · s6 #04040a · s7 #0a0b0f

HAZE. Three lobes, hz0/hz1/hz2, matched across every scene, so the room is
continuous under the cuts. Colours per shot are the shot's own key/fill:
amber + cool on the studio shots, cool + warm on the dark stage. They drift on
a linear position track — no pulse, no decay, sizes 900-2600 mm so they read
as LOBES against the near-black background, never as a full-frame wash.

POST. bloom -> unreal_bloom, grain/vignette -> film_grain, then fxaa last on
every shot to settle thin-edge crawl. prismatic_dispersion is authored ONLY
on the shots that carry chroma-split as a look (spread 0.01) — running it at
spread=0 elsewhere is a full-screen pass per frame doing nothing.

THE EXPOSURE LADDER. Bloom strengths sit BELOW the source page's and the
thresholds well above them, and that is a port decision, not a transcription
error: the page shaded with no lights at all and its bloom picks highlights
out of an already-dim frame, where this reel has real area lights shaping
real device hardware. What survived: ambient 0.09-0.16, one area key at
1.5-2.6, env intensity 0.16 (dark stage) to 0.5 (studio). Anything above that
and the reel stops being a dark reel.

FOG is per-shot, tinted to that shot's background (fog(color= near= far=),
near/far x100 like everything else). It is what stops each floor plane from
reading as a lit grey slab behind the subject.

CAMERA GRAMMAR. Every shot is one continuous move authored as a <frame>
track: explicit position/look_at rows, and a node= fill= row wherever the
shot lands on its device. The device landing is the added beat — the source
page never framed anything, so each shot has somewhere to arrive.

NO AUDIO. This is a primitives reel: no VO clips exist for it and no music is
authored, so there is no <audio> block. Add one at assembly time.
SPLIT FROM abstract.promo. This file is one of eight parts cut out of the
943 KB abstract.promo; the reel-level document that used to head that file is
now README.md in this directory. Scene bodies are byte-identical to the
original.

BOUNDARY. s27-descent closed on `transition=emerge through=s28-hero transition-duration=0.9` when it had
a successor in the same file. It is the last scene here, so it carries
transition=none; restore the line above it when re-concatenating.

Capture: nx run tools:capture:webgl -- --project promos/primitives/scenes/abstract/abstract-camera.promo --width 1920 --height 1080
Preview: /packages/runtime/index.html?project=promos/primitives/scenes/abstract/abstract-camera.promo
Topic
scenes
Scenes
11
Kind
reference rig
//
    ABSTRACT · CAMERA SUITE — shots 17-27 of the RICH-SCENES reel, and the
    largest of its parts. Eleven shots in which nothing in the set does anything
    interesting and the CAMERA is the subject.

    THE ARGUMENT. The material and repetition suites hold the camera still and
    move the WORLD; this one inverts that. They are the eleven moves a camera
    can make about a thing that is standing still — crane, orbit, push,
    dolly-zoom, lateral parallax, threshold, whip, vertical drop, rise, retreat,
    and the corkscrew that combines four of them — and each one is the SAME
    159.5 mm phone standing on the SAME floor, so the only variable in the suite
    is the move. That is the point: if the phone were doing anything, the reader
    would credit the phone.

      · CRANE (17) changes ONE number — height — and reads as grand for it.
      · ARC (18) changes only azimuth. PUSH-IN (19) changes only distance.
      · VERTIGO (20) changes distance and fov TOGETHER, against each other, so
        the subject holds still while the world behind it opens up.
      · PARALLAX (21) changes only x — the FOREGROUND does the reveal.
      · FLY-THROUGH (22) crosses two thresholds. WHIP (23) changes only the look
        direction, and changes it faster than anything else in the reel.
      · GOD'S-EYE (24) is the corkscrew with the corkscrew removed.
      · ASCENT (25) is shot 27 run backwards. PULL-BACK (26) is shot 19 run
        backwards. SPIRAL DIVE (27) is all of them at once, speed-ramped.

      #   scene              dur   transition             device   the shot
      17  s17-crane          7.0   match-move             iphone   4.0 m of pure height, down a colonnade
      18  s18-arc            7.0   match-move             iphone   340 deg around a standing phone at 130 mm
      19  s19-pushin         7.0   dolly-zoom-in gap      iphone   3.6 m to 430 mm, straight, and slower at the end
      20  s20-vertigo        6.5   match-move             iphone   dolly 2.6 m -> 760, fov 12.3 -> 40.5 deg
      21  s21-parallax       6.5   match-move             macbook  1.53 m of x, and a slab does the reveal
      22  s22-flythrough     7.0   whip-pan (0.30)        iphone   two thresholds, and a ramp through both
      23  s23-whip           6.0   match-move             iphone   0.85 s the wrong way, then 132 deg in 0.55
      24  s24-godseye        6.5   match-move             ipad     6.2 m straight down onto a flat tablet
      25  s25-ascend         7.5   match-move             iphone   the corkscrew, run upward, 96 mm -> 8.6 m
      26  s26-pullback       7.5   match-move             iphone   268 mm -> 7.6 m: 82 % of frame to 2.9 %
      27  s27-descent        8.0   (was emerge -> s28-hero)  iphone   8.4 m to 380 mm: a speed-ramped corkscrew dive

    THE SPEED RAMP (17, 19, 22, 25, 26, 27) is a camera technique, not a tag. A
    frame track just interpolates between the rows it is given, so a ramp is
    authored by SAMPLING one smooth curve UNEVENLY rather than by keyframing a
    speed. Shot 27 is a single parametric helix — 3 turns, radius 3.3 m to
    380 mm, height 8.4 m to 82 mm — with progress along it bent by a
    piecewise-smoothstep table (hang · drop · stall · drop · land) and sampled at
    31 rows. Every row in every ramped shot carries easing=linear ON PURPOSE:
    any other easing re-eases between the samples and flattens the ramp back
    into a constant glide.

    Six shots run their own table, and the table IS the shot:
      17 crane      0 · 0.03 · 0.34 · 0.86 · 1     a long hang, then a fall
      19 push-in    0 · 0.06 · 0.62 · 1            most of the travel early, so
                                                   the last metre takes 3 s
      22 fly-through 0 · 0.06 · 0.30 · 0.68 · 1    slow up to the threshold,
                                                   fast through it, slow after
      25 ascent     0 · 0.06 · 0.42 · 1            intimate, then it leaves
      26 pull-back  0 ·