Skip to content
Docs
Open Promoeyes
abstract-kit

abstract-kit

ABSTRACT · KIT — shots 01-05 of the RICH-SCENES reel, and the part that declares everything the other seven parts spend.

Read the rig's notes
THE ARGUMENT. One normalised kit — chamfered cube · icosphere · torus ·
capsule · thin ring · quad · torus-knot hero — and six materials, and
nothing in the whole reel that is not a parameterisation of those parts.
Shot 01 is that claim laid out in a row; 02-04 are the three distributions
(grid · ring · spline-cascade) run over it; 05 is the shot the MATERIAL
suite is built on and hands off through its own orb.

  #   scene              dur   transition             device   the shot
  01  s01-kit            8.0   match-move             iphone   seven shapes in a row, then the index on glass
  02  s02-grid           6.5   match-move             macbook  77 cubes, one radial wave, tracked past a laptop
  03  s03-orbit          7.0   match-move             iphone   hero knot, three rings, a 140-dot shell
  04  s04-cascade        6.5   flash-through-white    ipad     45 capsules on a diagonal delay
  05  s05-glass          6.5   (was through=s05-orb-hero)  iphone   glass over an emissive backdrop

THE PORT DECISIONS THAT LIVE IN THIS PART:
  · CASCADE PITCH (04). The source page tipped its capsules about their BASE
    at an 86 mm pitch. A promo node rotates about its own centre, so each
    capsule pairs 90 deg of rotation.x with a -31.5 mm drop (H/2 - r) to land
    flat on the same floor — same end pose, no pivot rig. But a tipped
    capsule then reaches half its own LENGTH past its slot, and at 86 mm the
    fallen rows merge into one sausage. 130 mm is the first pitch where the
    field still reads as pins.
  · GLASS TRANSMISSION (05). 0.40 reads as white plastic; 0.85 reads as
    glass. The difference is not the number, it is that shot 5 builds a haze
    backdrop BEHIND the orbs first — transmission shows what is behind the
    mesh, and over an empty stage a high value renders a black ball.
  · THE LINEUP IS AUTHORED, NOT LAID OUT (01): 162 mm pitch across seven
    slots, because a <row> would re-measure a spinning torus-knot every
    frame and breathe the whole line. A container is right when the content
    changes size; here nothing does.
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. s05-glass closed on `transition=through through=s05-orb-hero transition-duration=0.9 through-feather=0.08 through-tint=#ffb347 through-tint-fade=0.5` 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-kit.promo --width 1920 --height 1080
Preview: /packages/runtime/index.html?project=promos/primitives/scenes/abstract/abstract-kit.promo
Topic
scenes
Scenes
5
Kind
reference rig
//
    ABSTRACT · KIT — shots 01-05 of the RICH-SCENES reel, and the part that
    declares everything the other seven parts spend.

    THE ARGUMENT. One normalised kit — chamfered cube · icosphere · torus ·
    capsule · thin ring · quad · torus-knot hero — and six materials, and
    nothing in the whole reel that is not a parameterisation of those parts.
    Shot 01 is that claim laid out in a row; 02-04 are the three distributions
    (grid · ring · spline-cascade) run over it; 05 is the shot the MATERIAL
    suite is built on and hands off through its own orb.

      #   scene              dur   transition             device   the shot
      01  s01-kit            8.0   match-move             iphone   seven shapes in a row, then the index on glass
      02  s02-grid           6.5   match-move             macbook  77 cubes, one radial wave, tracked past a laptop
      03  s03-orbit          7.0   match-move             iphone   hero knot, three rings, a 140-dot shell
      04  s04-cascade        6.5   flash-through-white    ipad     45 capsules on a diagonal delay
      05  s05-glass          6.5   (was through=s05-orb-hero)  iphone   glass over an emissive backdrop

    THE PORT DECISIONS THAT LIVE IN THIS PART:
      · CASCADE PITCH (04). The source page tipped its capsules about their BASE
        at an 86 mm pitch. A promo node rotates about its own centre, so each
        capsule pairs 90 deg of rotation.x with a -31.5 mm drop (H/2 - r) to land
        flat on the same floor — same end pose, no pivot rig. But a tipped
        capsule then reaches half its own LENGTH past its slot, and at 86 mm the
        fallen rows merge into one sausage. 130 mm is the first pitch where the
        field still reads as pins.
      · GLASS TRANSMISSION (05). 0.40 reads as white plastic; 0.85 reads as
        glass. The difference is not the number, it is that shot 5 builds a haze
        backdrop BEHIND the orbs first — transmission shows what is behind the
        mesh, and over an empty stage a high value renders a black ball.
      · THE LINEUP IS AUTHORED, NOT LAID OUT (01): 162 mm pitch across seven
        slots, because a <row> would re-measure a spinning torus-knot every
        frame and breathe the whole line. A container is right when the content
        changes size; here nothing does.
    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 l