updraftShots
UPDRAFT's fifteen camera set-ups, as data. `film.updraftFilm` reads `definition()` on every `play()` and ticks the resulting cutscene runtime at a fixed 1/24 s, so **retuning a shot means editing this table** — never calling `cutscene.play`.
updraftShots
UPDRAFT's fifteen camera set-ups, as data. film.updraftFilm reads
definition() on every play() and ticks the resulting cutscene runtime at a
fixed 1/24 s, so retuning a shot means editing this table — never calling
cutscene.play.
The cut
96 seconds, five movements, boundaries at 19 / 38 / 64 / 83.
| Mv | Shots | Window |
|---|---|---|
| I | 1–3 | 0–19 |
| II | 4–6 | 19–38 |
| III | 7–10 | 38–64 |
| IV | 11–13 | 64–83 |
| V | 14–15 | 83–96 |
windows() derives the per-shot windows from the durations. evaluate(t)
gives the eye, the look point and the lens at any film second without playing
anything — the way to check a frame while authoring.
check() — the three things that must stay true
Call it; an empty list is the pass.
- The cut. The fifteen durations sum to
Film.DURATIONand the movement boundaries land on 19 / 38 / 64 / 83 exactly. - The repeat. Shot 12 IS shot 2's set-up — the same three tables, shared
by reference, not a copy. The film turns on that frame reading as one camera
in two different buildings, and a copy would let one of them be nudged and
quietly break the rhyme.
check()compares them withrawequal. - Nothing in the masonry. No camera anchor stands between
shelfFaceand the outer wall. The shaft is clear insidewalkwayInner, the walkway runs out toshelfFace, and pastinnerRadiusis stone.
Anchors — how to make a shot track something that moves
A shot's pos / look is a world position, a list of them the camera travels
along, or the name of an entity, resolved on the frame it is drawn. Four
subjects in this film would rather track than guess, and M.ANCHORS names
them:
| Key | Entity name | Used by |
|---|---|---|
folio | FilmFolio | shot 1's look — the open folio on Desk 7 |
lamp3 | FilmLamp3 | shot 4's look — the oil lamp that cracks |
fallingMass | FilmFallingMass | shot 10's look — the twelve metres of Gallery 12 |
skyFolio | FilmSkyFolio | shot 15's near look — the same folio, burning, at 400 m |
Spawn an entity under one of those names and the camera locks to it for
free. Until one exists the shot frames a world position instead, so nothing
is refused for naming something that has not been built yet — definition()
re-resolves every anchor on every play.
Two set-ups that are deliberately not obvious
- Shot 3 dollies the Gallery 14 ring as a three-point polyline at r = 15.2, between the brass rail and the shelf face. A straight move between its two ends would cut the chord through the shelving.
- Shot 15 racks off the folio and down onto the tower as hold, rack, hold — each anchor repeated, so a third of the shot sits on the burning page, a third swings, and a third sits on the tower. A two-point look interpolates the aim point across three hundred metres of empty air and spends the middle of the shot framing neither end of it.
What this module does not own
The clock, the curves and the registry are film.updraftFilm. The sound is
film.updraftSound, which shares this slice and reads M.shots directly to
put the scene's Listener on the lens every frame.
Scoped to this part · feeds back into the world's score.