camera-transitions
camera-transitions
Transition primitives — every way the engine can get from one scene to the next, one scene per transition, each one NAMED on screen.
Read the rig's notes
This is the reference catalogue. `promos/primitives/transition-lens/` covers
the same camera programs as a story with the transitions deliberately unnamed;
here the transition IS the subject, so every scene rig holds dead still and
the only motion in a gap is the transition itself.
There are TWO independent axes, and a scene attr for each:
transition= HOW the two scenes hand off (engine picks a code path)
transition-camera= WHAT the camera does during the gap (a pose program
layered on top, identity at both ends, so it composes
with any of the above and always lands exactly on the
next scene's authored camera)
ACT 1 · the handoff types — transition=
1. none hard cut, no gap at all
2. match run-on morph: shared ids lerp pose/scale/colour across the
gap, non-matched elements cross-fade under them.
(match-move / magic-move / matchmove are ALIASES of this one
behaviour, not separate transitions. The particle variant,
morph="particles" on a pair, has its own reel:
promos/primitives/match-morph/)
3. through fly INTO an element of THIS scene; its silhouette becomes a
window onto the next one. REQUIRES through="<node-id>"
naming a node in this scene.
4. emerge the mirror: an element of the NEXT scene starts engulfing the
lens and the camera pulls back OUT of it, so this scene
collapses into that element. REQUIRES through="<node-id>"
naming a node in the FOLLOWING scene, which must be on screen
and opaque at that scene's t=0 (here: its puck).
Everything else (dissolve/fade/shatter/glitch/…) collapses to a plain
crossfade and is banned by the house rules, so nothing demos it.
ACT 2 · the camera programs — transition-camera=, all twelve, each carried
over a transition=match gap so the morph gives the move something to hold:
whip-left · whip-right · whip-up · crash-in · crash-out · roll-360 ·
orbit-360 · look-up · rack-focus · foreground-whip ·
foreground-whip-left · foreground-whip-right
(foreground-whip is the bare form: it takes its side from
transition-camera-direction, which the two suffixed names hard-code.)
Continuity machinery, so every gap has something to carry: three matched
glow-sprite haze lobes (match hz0/hz1/hz2) and one matched puck (match puck —
the same disc, re-posed and re-coloured per scene) ride every cut. The puck
doubles as the emerge anchor in scene 5, which is why it is opaque from local
0 in every scene.
Veil trap: under a RUN-ON transition (match) a non-matched element must not
fade in during the gap, or it ghosts over the outgoing scene. Every label
after a match gap therefore enters at (its INCOMING gap + 0.15s), which is
why the entry times differ scene to scene — they are not arbitrary.
`through` and `emerge` are exempt and deliberately break the pattern: they
composite the incoming scene THROUGH a mask rather than overlaying it, so
there is nothing to ghost. Scene 4's label enters at 0.2s so the through
window has something to reveal, and every scene's puck is opaque from 0
because scene 5's is scene 4's emerge anchor.
Wall clock: 17 scenes, 44.80s + 11.00s of gaps = 55.80s.
Preview: /packages/runtime/index.html?project=promos/primitives/camera-transitions/camera-transitions.promo- Scenes
- 17
- Kind
- reference rig
//
Transition primitives — every way the engine can get from one scene to the
next, one scene per transition, each one NAMED on screen.
This is the reference catalogue. `promos/primitives/transition-lens/` covers
the same camera programs as a story with the transitions deliberately unnamed;
here the transition IS the subject, so every scene rig holds dead still and
the only motion in a gap is the transition itself.
There are TWO independent axes, and a scene attr for each:
transition= HOW the two scenes hand off (engine picks a code path)
transition-camera= WHAT the camera does during the gap (a pose program
layered on top, identity at both ends, so it composes
with any of the above and always lands exactly on the
next scene's authored camera)
ACT 1 · the handoff types — transition=
1. none hard cut, no gap at all
2. match run-on morph: shared ids lerp pose/scale/colour across the
gap, non-matched elements cross-fade under them.
(match-move / magic-move / matchmove are ALIASES of this one
behaviour, not separate transitions. The particle variant,
morph="particles" on a pair, has its own reel:
promos/primitives/match-morph/)
3. through fly INTO an element of THIS scene; its silhouette becomes a
window onto the next one. REQUIRES through="<node-id>"
naming a node in this scene.
4. emerge the mirror: an element of the NEXT scene starts engulfing the
lens and the camera pulls back OUT of it, so this scene
collapses into that element. REQUIRES through="<node-id>"
naming a node in the FOLLOWING scene, which must be on screen
and opaque at that scene's t=0 (here: its puck).
Everything else (dissolve/fade/shatter/glitch/…) collapses to a plain
crossfade and is banned by the house rules, so nothing demos it.
ACT 2 · the camera programs — transition-camera=, all twelve, each carried
over a transition=match gap so the morph gives the move something to hold:
whip-left · whip-right · whip-up · crash-in · crash-out · roll-360 ·
orbit-360 · look-up · rack-focus · foreground-whip ·
foreground-whip-left · foreground-whip-right
(foreground-whip is the bare form: it takes its side from
transition-camera-direction, which the two suffixed names hard-code.)
Continuity machinery, so every gap has something to carry: three matched
glow-sprite haze lobes (match hz0/hz1/hz2) and one matched puck (match puck —
the same disc, re-posed and re-coloured per scene) ride every cut. The puck
doubles as the emerge anchor in scene 5, which is why it is opaque from local
0 in every scene.
Veil trap: under a RUN-ON transition (match) a non-matched element must not
fade in during the gap, or it ghosts over the outgoing scene. Every label
after a match gap therefore enters at (its INCOMING gap + 0.15s), which is
why the entry times differ scene to scene — they are not arbitrary.
`through` and `emerge` are exempt and deliberately break the pattern: they
composite the incoming scene THROUGH a mask rather than overlaying it, so
there is nothing to ghost. Scene 4's label enters at 0.2s so the through
window has something to reveal, and every scene's puck is opaque from 0
because scene 5's is scene 4's emerge anchor.
Wall clock: 17 scenes, 44.80s + 11.00s of gaps = 55.80s.
Preview: /packages/runtime/index.html?project=promos/primitives/camera-transitions/camera-transitions.promo
promo#camera-transitions(width=1280 height=720 fps=30 coordinate-system=world-y-up)
// ==================================================================
// ACT 1 · THE H