OpenAI Film Fieldnotes

Candidate construction guide · native Resolve not tested

Click release and camera pullback: Resolve / Remotion guide

Biggest gap: nested temporal exposure has no verified Fusion equivalent. The retained render still has a harder cursor contour and a displaced/harder right window edge during deceleration; matching the last frame cannot close it.

This adds guidance to an existing treatment, not another unique motion or an accepted render. Original and Adaptation are two original illustrated examples.

Source and clock

A first look at the Codex app, [412,536) at 24000/1001 fps,1920×1080: 124 native frames, local0–123. Nominal source seconds are 17.183833…–22.355666…; duration is124×1001/24000=5.171833…seconds. Those are rational-frame conversions, not new source timing measurements. Source536 is the following white chapter and is deliberately excluded.

Use evidence/codex-click-release-camera/review03/comparison.json, movies under renders/codex-click-release-camera/review03/, and native/codex-click-release-camera/ relative to the library. There are 82 retained PNG frames per variant, not all124. Resolve members through frameHashes[variant] and localFrame; PNG ordinals are sparse. Selected native/source/render stills and contact sheets were inspected, and existing movie hashes/stream properties checked. This is not a continuous moving review or a claim that the full source master is present.

All exact values below, including subframe shutter/sample counts, are retained recipe implementation values, not recovered source settings or new measures. The old entry/exit prose is coarse: current keys include an initial pointer flight and do not reach scale1 until local123.

Fusion construction

  1. Use a silent1920×1080 composition at exact24000/1001 cadence with local0–123. Do not round to24. Treat a23.976 interface label as a display label and check actual cadence on any future export; this guide has not run Resolve.
  2. Place desktop below release-camera; place disclosure/back above it in frame space. Inside the1280×890 camera group merge window-shadow, before/after plates, persistent hover/symbol/label, transient feedback branches and focal-cursor-travel in recipe order. Preserve off-frame workspace contents until the final canvas crop.
  3. Use camera pivot[0,0], holding position[650.28,126.13] and scale2.0044 through105. Apply every x/y/scale key from106 through123, ending[323,99.5] at scale1. Do not substitute a two-key ease or freeze the readable frame118; small settling motion continues.
  4. Keep both cursor flights, intervening pause, transient highlights55/56/58/59 with57 clear, target hover60, press/recovery92–104, hard content switch101 and camera onset106. Target hover begins before pointer arrival; a single click event cannot replace this ordering.
  5. Keep focal-cursor-travel inside the camera. Its children are halo then anchored-cursor, both using the24×30 arrowPath. Preserve pivot[3.25,4.05], local offsets and anisotropic scaleX/scaleY press tracks. Do not add a screen-space pointer, detached click ripple or new response animation.
  6. For the Remotion exposure reference, retain49 camera samples and33 cursor-travel samples when the respective shutter track is positive. Temporal sampling moves only that group's box transform; its children retain center-frame state. Keep camera and cursor exposure nested, not flattened into a global Gaussian blur.
  7. Keep cursor blur/halo separate from directional exposure. A future Fusion build must compare the exposure reconstruction against the actual native intermediate frames; sample count and shutterFrames are not exact Resolve shutter-angle controls. Never blur the static desktop or disclosure to conceal edge errors.
  8. Inspect the right margin over114–118 and both cursor flights. Preserve the known extra plus-to-arrow icon switch at hover60 as an open finding, not a source requirement. End after123 with a cut; an additional wide hold changes the edit and is not source timing.

Transform and exposure semantics

The recipe uses local top-left pixel coordinates and positive y downward. For this unrotated camera, a workspace point maps to frame space as [cameraX,cameraY] + cameraScale * workspacePoint. Cursor travel and its local press transform must be composed inside that transform. Fusion Center, Pivot and normalized coordinates depend on the branch image domain; register at least two landmarks and convert explicitly. Do not pass raw CSV x/y as Center.

Interpolation uses the left key: linear, hold until the exact next key, or smoothstep progress²*(3−2*progress). Current camera keys are linear, including the small settling changes. Before/after artwork cuts at101; do not crossfade it or sample different plate states through a temporal blur operation.

The actual src/Treatment.tsx reference, for positive shutter span, evaluates the group box at localFrame + (sampleIndex/(samples−1)−0.5)*shutterFrames. It stacks these instances in order with wrapper opacity1/(sampleIndex+1). Every child receives the unchanged center frame, not the subframe. Nested cursor exposure therefore stays its own operation inside each camera sample. These details matter especially for translucent paths and edges: do not assume the stack is a simple uniform additive average or native Resolve motion blur.

Read exposure.samples at each group and the full shutter track, not an old review's25/15 counts. The present counts are49/33. controls.csv exports the shutter span but not sample count, path topology or resulting blur pixels. No recovered source shutter, optical kernel or calibrated Fusion shutter conversion is supplied. A manual temporal-branch reconstruction or native blur trial must be separately compared; neither has been run here.

Keep window shadow outside any content-only crop. Original before/after SVGs must retain1280×890 aspect/registration and readable detail for the2.0044 close crop. Test editable vector import/rebuild in the installed Resolve version; no automatic SVG Loader or .setting import is promised. Text+ can replace the overlay label only with matched font metrics and plate/control registration.

Checkpoints

Executable references

svgAssets pins each image-layer SVG referenced by defaults or adaptation from the hash-checked accepted asset ZIP; per-SVG verification must compare the whole referenced-asset map against these pins, not merely report current file hashes.

From the shared toolkit root, set FIELDNOTES_PROJECT to an already prepared project with the selected SVG assets:

python3 handoff.py verify --guide guides/interface/codex-click-release-camera/guide.json --project "$FIELDNOTES_PROJECT"
python3 handoff.py frames --guide guides/interface/codex-click-release-camera/guide.json --project "$FIELDNOTES_PROJECT" > codex-click-release-camera-controls.csv

The output is raw parent-local numeric controls with ancestor activity and nominal times, not world coordinates, decoder PTS, exposure pixels or native Resolve output. fusionNodes preserves nesting/order; tracks supplies exact recipe pointers. Read static sample counts, origins, path viewBoxes and paint at the node pointers, and use discreteEvents for layer gates.

From an already provisioned writable toolkit project/, for later authorized execution (not run during this authoring pass):

npm --silent run catalog -- show codex-click-release-camera --contract
npm run render -- --recipe codex-click-release-camera --variant default --out out/click-original-v01.mp4
npm run render -- --recipe codex-click-release-camera --variant adaptation --out out/click-adaptation-v01.mp4
npm run verify -- --out out/click-original-v01.mp4
npm run verify -- --out out/click-adaptation-v01.mp4

Custom content starts from the complete examples/codex-click-release-camera/default.json; use --content inputs/click/content.json instead of --variant. Keep sidebar action text semantically and geometrically paired with both original SVG plates. The typed content gate cannot inspect outlined plate-label agreement.

These commands were checked against archived package scripts/parser/help; the read-only render/catalog/verify help commands ran. Render requires pinned dependencies, Node22.18+, FFmpeg/FFprobe, bundled Geist and existing Chromium; REMOTION_BROWSER_EXECUTABLE can select it. No install, browser download or new render occurred. The retained source projection has no public SVGs; the selected asset ZIP holds the originals. Recipe-only verification is not rendered approval.

Source versus adaptation and remaining limits