OpenAI Film Fieldnotes

Download complete editable project · Read review limits

Bridge two eras through a held aperture, then widen the view

Status: source-grounded candidate; review open. This is manual DaVinci Resolve construction guidance, not a tested .drp, .setting import or claim of native Resolve execution. The supplied TypeScript/Remotion project is the executable implementation. Source-quality and independent moving approval remain absent.

Whole contract

The first vector room occupies a narrow aperture. Its fictional year opens from a horizontal center band, holds, then closes. A small geometric result appears afterward. A hard cut changes rooms while preserving that aperture. The later year repeats the same mask in screen space while the underlying room pulls back and the outer aperture widens. After the second date leaves, the small result repeats. Neither date is visible across the cut.

Do not turn this into a date morph, dissolve, room-only zoom, standalone year card or a third example for each fixture. Harbor and Meadow are two original content sets for the same edit.

Timeline and source

Use the exact frame-index controls below rather than Resolve default Auto interpolation. Internal curves are authored from sampled source observations, not claimed measurements of the original production project.

Editable node ownership

Build these branches with transparent full-frame domains, in this order:

  1. ArchiveRoom: import the original archive SVG paths and gradients, then add its editable studio label, small mark and cursor. Gate to local [0,204).
  2. ModernRoom: import the matching original modern SVG paths and gradients, then add its editable label, mark and cursor. Gate to local [204,457).
  3. RoomCamera: select exactly one room and apply the room transform to its complete branch. No crossfade or simultaneous room visibility.
  4. Date: a separate Text+ branch in screen coordinates, above RoomCamera. Use the fixture year, Geist 700 and the center-band mask. This is a sibling, never a child of the room transform.
  5. OuterAperture: after merging room and date, mask the composite with a full-height rectangle. Merge that result over opaque black, then MediaOut.

The archive SVGs and modern SVGs are original code-built geometry, not flattened reference frames. Rebuild/import their paths as editable vector groups. A Loader of a rasterized SVG may be useful as a comparison but is not the editable equivalent. Keep the SVG generator and original files. Gradients, Text+ shaping and the pixel-to-Fusion match still need calibration in the actual application.

Coordinates, masks and curves

All source code uses top-left pixel coordinates. A point (x,y) becomes Fusion Center (x/1920, 1-y/1080) in a full-frame domain. A rectangle of width w and height h becomes normalized Width w/1920, Height h/1080; its Center is its pixel midpoint converted as above. Keep alpha premultiplied for Over, with no extra black backing inside a branch and no opacity compensation.

Define ramp(f,a,b) as u*u*(3-2*u) for u=clamp((f-a)/(b-a),0,1). All table bounds use the shared local frame, not a branch-relative reset.

Control Native local construction
Room cut Archive through 203; modern starts 204 with no blend.
First date opening ramp(f,31,51)*(1-ramp(f,96,110)).
Second date opening ramp(f,227,247)*(1-ramp(f,291,307)).
Outer side inset 240px through 260; then 240*(1-ramp(f,260,363)).
Modern room scale 1.16-0.16*ramp(f,204,415); archive is 1.
Modern translation x=960*(1-scale), y=540*(1-scale).
First result scale ramp(f,158,165); hard reset on room cut.
Second result scale ramp(f,394,399); hold through 456.

For OuterAperture, use Center (0.5,0.5), Height 1 and Width (1920-2*inset)/1920. The modern room changes scale before the aperture starts widening. The aperture is still partly closed when the second date disappears at 307; it reaches full width at 363. Do not merge those two tracks.

The date occupies pixel box (510,280,900,340), with 300px Geist 700, 340px line height, centered alignment and -16px letter spacing. It stays fixed while the room moves. The clip center is (960,450), width 900 and height 340*dateOpen. Mask alpha before merging; do not vertically scale the glyphs. Text+ size/baseline are not assumed numerically equal to CSS font size: match the actual rendered full-date reference, then bake the same mask samples.

The room camera is a uniform scale about (960,540). A full-frame Fusion Transform can use Pivot and Center (0.5,0.5), Size from the table; this equals the code transform translate(roomX,roomY) scale(roomScale) about top-left. Do not also add the code translation to a centered-pivot Transform.

The archive mark center is (1118,183); the modern one is (805,365). Both are 46×46 editable motifs whose own scale comes from the result track. Choose the same disc/diamond within a fixture. Cursor positions are separately baked in controls.csv; they are illustrative motion, not measured input actions. The studio label uses 18px Geist 500, 1px tracking, a 230×24px box and 68% opacity. Its archive origin is (408,823); modern origin is (1516,805). It belongs to the room, unlike the date. Full paths and palettes are in the SVGs/generator.

Source comparison and review

The seven bound comparisons in source-timing.json distinguish this complete relationship from a same-interface crop cut, page-to-outline montage, keyboard excursion, single-room pullback, portrait stack, gallery-device handoff and staggered studio identity. A different year, palette or name alone adds no unit.

The source uses photographed rooms, performers, archival texture and subtle camera motion. These original vector rooms deliberately do not reproduce them. The first original room is locked; the later camera path, mask easing, mark appearance and fixture dates are adaptations. The source has no year-to-year morph, visible approval workflow or demonstrated backend latency. Do not claim the vector specimen establishes any of those behaviors.

Before claiming fidelity, compare both moving exports with the moving source, including the mask slice geometry, narrow cut, independent date ownership, aperture release and final repeated result. Static samples and playback telemetry are not that review. Before calling this a native Resolve build, construct it there, inspect Text+/SVG material behavior, render both fixtures and compare the actual exports. Those acceptance steps remain open.