# Collapse a picture window into a character rebound and mark Manual Resolve/Fusion construction, not an executed or supplied Resolve project. Native application validation and source-quality approval remain unverified. The two original content variants count as one example. Source footage, its performer, pixel-art character and branded knot are research references only. ## Canvas and native time Use 1920×1080, 24000/1001 fps, 96 frames: local 0..95 inclusive. The source interval is [2491,2587), with `sourceFrame = localFrame + 2491`. Preserve the 1001/24000-second frame duration; a 24 fps composition is not equivalent. Use a matching timeline and silent export. Do not add voice, music or a tail. `docs/controls.csv` lists every native frame. `src/geometry.json` holds the aperture, body and mark bounds used by the implementation. These are approximate raster measurements guiding original artwork, not recovered production controls. ## Layer construction 1. Start with opaque white over the full canvas. 2. Build the selected original room SVG as editable paths and its gradient. Add the vase or mobile SVG at pixel (680,190), size 560×720. Transform the object independently, around its own center, then merge it over the room. 3. Mask that picture branch with the animated aperture. Mask after merging the room and object. Do not scale the picture branch by the aperture's width. 4. Add a separate black circle at the aperture's upper-right corner. It overlaps the picture edge and white field; do not clip it inside the aperture mask. 5. Add falling streaks, droplets, original figure body, face and later limbs as separate branches. The figure overlaps the final picture frames. 6. At local 61, remove every figure branch and switch to the selected original mark. This is a hard replacement, not a character-to-mark morph or crossfade. All SVGs contain original editable geometry. For the figure, rebuild the normalized paths in `src/shapes.ts` with Polygon/B-Spline shapes and the matching control points, then transform them using the body rectangle. Preserve the separate face and limbs from `src/Scene.tsx`. Rasterized Loaders may help compare frames but do not satisfy editable-shape construction. SVG gradients, curve conversion and native rasterization require calibration in the application. ## Coordinate conversion The code uses top-left pixel coordinates. Map a pixel point (x,y) to Fusion Center (x/1920,1-y/1080); divide widths by 1920 and heights by 1080. The aperture center is the midpoint of its bounds. Use straight edges and no corner rounding. Keep each branch's alpha premultiplied and use normal Over compositing. ## Aperture, marker and independent picture The aperture is full-frame through local 3. Every local frame 3..18 has an explicit measured-bound key in `src/geometry.json`. The last window at 18 is (840,472) to (1080,608), width 240 and height 136. At 19 the picture is absent. Do not interpolate the visible picture through an extra zero-size frame. The marker is absent at 0. Its authored radius is 4px at 1, 11px at 2, 20px at 3 and 22px at 4..18. Its center is (windowRight,windowTop), with no inset. The canvas clips it while the corner is near the screen edge. Remove it at 19. The small onset radii approximate raster observations; they are not source opacity or vector-radius measurements. The picture object uses linear scale 1→0.65 and vertical translation −20→35px over local 0..18, around its own center (960,550). Its room remains full-frame inside the aperture. This is an authored independent reframe, not a recovered photographic camera move. The original vase/mobile replaces the source face. ## Figure timing and geometry Use the figure's left, top, width and height from the native controls. Its normalized body domain is 200×220. The path changes by pose; the changing bounds provide squash and stretch. These original silhouettes differ from the source. | Local frames | Body pose | Relationship | | --- | --- | --- | | 0..15 | Absent | Only picture and marker. | | 16..19 | Falling | Picture remains through 18; body continues at 19. | | 20..21 | Squash | Streaks are gone. | | 22..33 | Puddle | Body spreads; four authored droplets move separately. | | 34..35 | Neck | Body stretches upward from the pooled base. | | 36..44 | Airborne oval | Droplets leave at 42, before limbs return. | | 45..49 | Restored shape and limbs | Descend, then landing squash at 48/49. | | 50..60 | Standing | Small arm settling, then hold. | | 61..95 | Absent | Original mark replaces the character. | At 16 only the source character's bottom fragment is visible at top 0..36. The implementation authors a full body rectangle (872,−164) to (1044,36); this is not a full-body source measurement. Subsequent falling bounds are approximately 17: (872,46)..(1044,244), 18: (872,256)..(1044,454), and 19: (872,468)..(1044,664). The figure remains above the shrinking picture at 18. The measured body rectangles exclude dark outlines and can exclude detached limbs or droplets. Treat them as approximate body guides, not whole-character silhouette guarantees. The normalized paths are original, not traced film art. ## Face, streaks, droplets and limbs The body palette is studio fill #cd775b, highlight #eab89b, ink #633a30; garden fill #83a683, highlight #c4d6ad, ink #355b45. Face details remain separate from the squash transform: two 6px eyes, a short stroked mouth, and a pose-dependent vertical position. Refer to `src/Scene.tsx` for the exact editable coordinates. Four authored streaks appear at 16..19 above the body, then disappear at 20. Four droplets appear at 22..41 and disappear at 42. Puddle droplets bob near the sides; after 34 they follow separate outward/upward/falling paths. Their count and trajectories are authored approximations, not recovered source paths. At 22..33 use lateral offsets ±(182 + index × 26 + sin(phase × 7 + index) × 8)px, where index is 0 or 1 and phase=(frame−22)/12. At 34 and 35 use ±190 and ±216px so the pooled base cannot cover them. At 36..41 use ±(112 + phase × 45 + index × 26)px with phase=(frame−34)/8. The 26px pair spacing keeps each droplet separate. Arms and feet appear at 45 and remain through 60. Arms settle from −14 to +5px vertical extension over 45..53; feet remain independent rounded shapes. The source's early folded hands and exact pixel-art limb poses are not reproduced. ## Hard handoff and mark At 60 the standing figure is visible and the mark is absent. At 61 the figure, face, limbs and effects are absent and the mark is visible at full opacity. There is no shared silhouette, shape interpolation or composited overlap. The mark stays centered at (960,540). Its container follows the sampled source ink widths/heights: about 142×142 at 61, expanding toward 210×210 at 95. Original mark paths and their bounds differ from the source knot. Rotate the whole mark linearly from −42° at 61 to 0° at 75. This rotation and the interpolation of the unmeasured 76..94 size interval are authored. No exact first perfectly static source frame is claimed. Keep the actual final frame 95; do not add an outro hold. ## Verification limits Inspect the independent aperture/object transforms, overlap at 16..18, impact, rebound, earlier droplet exit and hard handoff. Confirm that no picture or black corner marker survives at 19 and no figure survives at 61. The renderer and manifest checks establish native timing, silence and implementation binding. They do not establish perceived motion fidelity, an independent critique or native Resolve behavior. Both variants remain source-grounded draft studies.