OpenAI Film Fieldnotes

Download complete editable project · Read review limits

Leave the editor through an action, dim and viewer handoff

Draft manual construction guide. Moving-source fidelity and native Resolve execution remain unverified. Two original content variants form one example.

Source and composition

Official film jC0i_0wnly8, selected native interval [3000,3300), 60/1 fps. Use a silent 1920×1080 square-pixel composition containing local frames 0–299. Exact duration: 300/60 seconds (5.000000 s). Source ordinal = 3000 + local frame. No frame-rate rounding, extra opening pause, closing hold or narration belongs to this study.

The comparison is a retained, hash-bound 960×540 research excerpt. Preserved native metadata and PTS ledgers bind its clock; the historical full master is absent, so this is not a fresh full-master decode. Samples informed the build. Intermediate paths and measured-looking coordinates below are authored reconstruction controls, not official product timing, latency or design tokens.

Setup and common coordinate rules

Verify the unmodified kit with python3 verify_package.py, then follow project/README.md. Choose either input JSON content set. Install the bundled licensed Geist font for Text+, and calibrate pixels, weight, tracking and baselines against the supplied MP4; a font name alone does not guarantee parity.

Regenerate docs/controls.csv with node --experimental-strip-types scripts/controls.mjs. Each row includes the local frame, source ordinal and exact sampled controls. Fusion global frame = composition start + CSV frame. Coordinates here use pixels from top-left, Y down. For a point in normalized Fusion image coordinates, X=pixelX/1920 and Y=1−pixelY/1080; convert top-left rectangles through their centers. Check the installed tool's coordinate direction instead of assuming CSS and Fusion match. Parent transforms apply after local transforms. A uniform pivoted transform is pivot + scale×(point−pivot), followed by the stated translation. Convert angles to your tool's convention. CSS rotations are clockwise in this Y-down space.

Continuous controls use the CSV per-frame values, not an unspecified default spline. Held gates, text prefixes, colors and row indexes use stepped keys. Smoothstep is t²(3−2t), with t clamped to [0,1]; linear progress is clamped t. Rectangle masks need pixel-correct width and height; normalized X/Y values are not interchangeable on a non-square raster. Match opacity, clipping and layer order before attempting a moving comparison.

Editor pullback, action push and viewer cut

Create the original editor as editable layers: a dark window at (32,20), 1856×1000, a portrait preview panel at window-local (608,50), 610×745, the landscape study at panel-local (0,190), 610×344, and a bottom filmstrip at window-local (22,814), 1810×123. The footer tool strip sits at window-local (400,937), 888×63. Keep the Create affordance at the right of that strip.

The original landscape is vector artwork: layered hills, sun and an articulated small traveller. src/Scene.tsx contains its complete SVG geometry in a 960×540 coordinate system. Rebuild those filled/stroked paths with Fusion shapes or individual SVG layers. There is no licensed source robot/movie input. The filmstrip is repeated original geometry, not recovered timeline thumbnails.

Camera and action

Moving result

The viewer is at (40,24), 1840×1032. Its landscape viewport is viewer-local (220,130), 1400×788; fit the 960×540 geometry with a centered cover crop. Use viewerScale 1.18→1 and viewerX −160→0 over 278–299, with the local pivot (960,540). The footer stays part of this reframing viewer.

For the traveller, let phase=walkPhase radians and stride=28×sin(phase) degrees. The body group translates to (480+22×sin(phase/2), 337−6×abs(sin(phase))) in landscape pixels. Rotate the two leg paths by stride and −stride around that group origin. Rotate arms by −.65×stride around (−41,−43) and +.65×stride around (41,−43). Other body parts remain with the body transform. The shadow X follows the body's X. The editor preview holds phase zero; only the viewer advances phase. Stop after 299, with no invented completion banner, export confirmation or further action.

This preserves an editor→action→dim→viewer structure. Exact product chrome, source imagery, optical blur, pointer behavior and camera tracking differ. The short original animated subject is not a recreation of the source film.

Verification boundary

Inspect both actual exports at their native cadence, including entry/exit, hard gates, layering, width, masks and holds. Shipped code checks font loading and selected text-width budgets before rendering; it rejects oversized copy instead of silently shrinking it. This is not arbitrary-input readability approval or a guarantee that an independent Text+ rebuild fits.

The kit contains editable original geometry, fixtures, controls and tests; source screenshots/movies are not renderer inputs. Native .drp execution, tested Resolve import, independent moving-source review and source-quality approval are not included. Existing matching pinned dependencies were used, not a clean dependency install. A modified input needs a new render and review.