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
- Apply the later push first: pivot (1230,984), uniform
pushScale, then screen translation (pushX,pushY). Put the result inside an early camera group scaled byintroScalearound (960,540). That early scale falls 1.2→1 over 0–36, then holds. These nested transform orders are not interchangeable. - The original pointer moves (950,840)→(1230,984) over 30–60, then holds over the action region. This is an authored path, not a measured click coordinate.
- The action push runs 110–168: scale 1→1.9, X 0→−270, Y 0→−100. Use the CSV
per-frame values.
cameraBluris a 0→5→0-pixel Gaussian approximation, not reconstructed shutter/motion blur; calibrate Fusion's blur units. - At 218, set editorDim to .47 with a held key. Merge a black overlay inside
the editor, then the spinner at window-local (893,507), size 54. Rotate its
incomplete circle by
spinnerAngle. Do not interpolate the dim gate. - At 278, hard-switch
outputModeto a separate dark CLIP VIEWER. Keep the viewer's header, title and lower playback controls; the source does not become a clean, chrome-free movie. Stop showing the old editor.
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.