Skip to content
Docs
Open Promoeyes
abstract-features

abstract-features

ABSTRACT · FEATURES — five demonstrations, each ONE thing the product does, performed on the device's own glass with the camera tight enough to read it, in the abstract reel's grammar. A feature scene is 3.5 s: the action lands at 0.8–1.2 s, the result is complete by 2.4, and the last second holds. The world around the device is the reel's stage — mirror floor, haze, one halo — and the caption stands beside the device in space.

Read the rig's notes
  #   scene           dur   transition     device   the feature
  01  f01-tap         3.5   match-move     iphone   one button presses; a result panel slides in from the right
  02  f02-type        3.5   match-move     iphone   a field types four words; a card appears under it per word
  03  f03-cascade     3.5   match-move     iphone   one master toggle flips; six rows follow it down the column
  04  f04-chart       3.5   match-move     laptop   seven bars rise in a dashboard card, then the total ticks in
  05  f05-swipe       3.5   —              iphone   three cards swipe off left; the counter pill updates each time

17.5 s of scene + four gaps (3.2 s) ≈ 20.7 s on the wall. Every scene also
stands alone: cut one out, set transition=none, and it is a feature beat.

THE UI IS THE ANIMATION. Every screen item is a <ui> card or text with its
own opacity / position / scale rows, in the screen's own millimetres (the
iphone stage is 71 × 154, the laptop's 346 × 223). Nothing is a video.
The presses use the reel's press grammar (1 → 0.955 → 1, easeOutBack up).

THE TYPING (f02) is five text nodes of growing length swapped by opacity —
a text item has no substring channel — so each word lands as a unit and
the card for it appears 0.2 s later. That is the feature: type, get a thing.

THE CAPTION stands in the world, not on the glass: an eyebrow ("FEATURE")
and a line in ink, worldHeight 26–40, OVER the device 40 mm behind it, so
the camera's push moves both together. (Beside the device it collides with
the glass at this framing — the phone is 53 % of frame height here.)

MATCH. Every device carries match=hero (the laptop in f04 too, so the
phone → laptop → phone gap is the reel's own s06/s07/s08 move); all five
scenes carry hz0/hz1/hz2.

LOOK — carried unchanged from the abstract reel:
  ink   #e9e6df    dim  #7c7970    line  #23232a
  mark  #ffb347   cool #7ad7ff   warm #ffa25e

POST. bloom → film_grain → fxaa; no dispersion in this file.
  shot            bloom  thresh  grain / vignette
  01–05           0.55   0.84    0.011 / 0.30

NO AUDIO. Primitives reel; add at assembly time.

Capture: nx run tools:capture:webgl -- --project promos/primitives/scenes/abstract/parts/abstract-features.promo --width 1920 --height 1080 --times "1.4,3.2,5.6,7.5,9.8,11.8,14.2,16.1,18.4,20.4"
Preview: /packages/runtime/index.html?project=promos/primitives/scenes/abstract/parts/abstract-features.promo
Topic
scenes
Scenes
5
Kind
reference rig
//
    ABSTRACT · FEATURES — five demonstrations, each ONE thing the product does,
    performed on the device's own glass with the camera tight enough to read
    it, in the abstract reel's grammar. A feature scene is 3.5 s: the action
    lands at 0.8–1.2 s, the result is complete by 2.4, and the last second
    holds. The world around the device is the reel's stage — mirror floor,
    haze, one halo — and the caption stands beside the device in space.

      #   scene           dur   transition     device   the feature
      01  f01-tap         3.5   match-move     iphone   one button presses; a result panel slides in from the right
      02  f02-type        3.5   match-move     iphone   a field types four words; a card appears under it per word
      03  f03-cascade     3.5   match-move     iphone   one master toggle flips; six rows follow it down the column
      04  f04-chart       3.5   match-move     laptop   seven bars rise in a dashboard card, then the total ticks in
      05  f05-swipe       3.5   —              iphone   three cards swipe off left; the counter pill updates each time

    17.5 s of scene + four gaps (3.2 s) ≈ 20.7 s on the wall. Every scene also
    stands alone: cut one out, set transition=none, and it is a feature beat.

    THE UI IS THE ANIMATION. Every screen item is a <ui> card or text with its
    own opacity / position / scale rows, in the screen's own millimetres (the
    iphone stage is 71 × 154, the laptop's 346 × 223). Nothing is a video.
    The presses use the reel's press grammar (1 → 0.955 → 1, easeOutBack up).

    THE TYPING (f02) is five text nodes of growing length swapped by opacity —
    a text item has no substring channel — so each word lands as a unit and
    the card for it appears 0.2 s later. That is the feature: type, get a thing.

    THE CAPTION stands in the world, not on the glass: an eyebrow ("FEATURE")
    and a line in ink, worldHeight 26–40, OVER the device 40 mm behind it, so
    the camera's push moves both together. (Beside the device it collides with
    the glass at this framing — the phone is 53 % of frame height here.)

    MATCH. Every device carries match=hero (the laptop in f04 too, so the
    phone → laptop → phone gap is the reel's own s06/s07/s08 move); all five
    scenes carry hz0/hz1/hz2.

    LOOK — carried unchanged from the abstract reel:
      ink   #e9e6df    dim  #7c7970    line  #23232a
      mark  #ffb347   cool #7ad7ff   warm #ffa25e

    POST. bloom → film_grain → fxaa; no dispersion in this file.
      shot            bloom  thresh  grain / vignette
      01–05           0.55   0.84    0.011 / 0.30

    NO AUDIO. Primitives reel; add at assembly time.

    Capture: nx run tools:capture:webgl -- --project promos/primitives/scenes/abstract/parts/abstract-features.promo --width 1920 --height 1080 --times "1.4,3.2,5.6,7.5,9.8,11.8,14.2,16.1,18.4,20.4"
    Preview: /packages/runtime/index.html?project=promos/primitives/scenes/abstract/parts/abstract-features.promo
promo#abstract-features(width=1920 height=1080 fps=30)
  materials
    // the abstract reel's six materials, carried whole so this file grades on its own
    physical#clearcoat(color=#15161a metalness=0 roughness=0.45 clearcoat=1 clearcoat-roughness=0.06 envmap-intensity=1.1)
    standard#metal(color=#d8d8dc metalness=1 roughness=0.22 envmap-intensity=1.25)
    standard#clay(color=#9c9689 metalness=0 roughness=0.95)
    basic#emissive(color=#ffb347)
    basic#emissive-cool(color=#7ad7ff)
    basic#emissive-white(color=#f4e6cf)
    physical#glass(color=#dfefff metalness=0 roughness=0.14 transmission=0.85 thickness=70 ior=1.45 clearcoat=0.9 clearcoat-roughness=0.06 envmap-intensity=1.4)
    physical#thinfilm(color=#101014 metalness=0.65 roughness=0.14 clearcoat=1 clearcoat-roughness=0.05 iridescence=1 iridescence-ior=1.35 iridescence-thickness=420 envmap-intensity=1.5)
    physical#thinfilm-plum(color=#2a2030 metalness=0.7 roughness=0.12 clearcoat=1 clearcoat-roughness=0.05 iridescenc