Integrating a real, keyed greenscreen actor into an AI-generated Jefferson Memorial background whose camera move matches the live plate — what was tried, what won, what died, what runs next.
The pipeline works end-to-end. Keying is broadcast-clean, the locked-shot composite is proven, and the camera problem is solved two ways: pushed to Seedance's interpretive ceiling for look, and hard-locked by construction with local depth-conditioned generation for accuracy. The central law learned:
| Stage | State | Evidence |
|---|---|---|
| Keying (CorridorKey) | solved | All 3 plates keyed clean; true-alpha ProRes 4444 delivered (jib) |
| Locked-shot composite | proven | Statue-reframe comp v1 — §07 |
| Camera match — look-first | model ceiling | Seedance start+end keyframe clamp — §05 |
| Camera match — accuracy-first | proven | LTX depth render-to-real, trajectory locked by construction — §06 |
| Dolly / jib moving comps | interim | Dolly comp over Seedance BG done; move-amount matching open — §07 |
| Relight / harmonization | pending | Build-our-own stack scaffolded, not installed — §09 |
Four workflows were tested (or designed) this cycle. W1 is the production path — everything else feeds it or was eliminated reaching it. Arrows show data direction; every generated background ultimately meets the real keyed subject in W1's composite.
| Strategy | Camera accuracy | Look | Use when |
|---|---|---|---|
| A · Seedance + keyframes | endpoint-clamped, mid-path drifts | 10/10 | Hero look, forgiving moves |
| B · Seedance empty-BG preset | interpretive (preset vocabulary) | 10/10 | Key+composite shots, art-directed plates |
| C · LTX depth render-to-real | exact, by construction | photoreal, below Seedance | Accuracy-critical camera, local, free |
One performer, three camera behaviors: a locked-off medium, a push-in dolly, and a crane-down jib. Together they cover the camera-matching problem space from trivial to hard.
CorridorKey on the 5090 (BiRefNet hint → neural key + despill → sharp hybrid composite) outputs the subject on flat gray-148 for clean matte extraction. Naive chroma keying failed outright — the warm dark-olive "green" had r≈g. A distance-ramp matte off the gray, plus interior hole-fill for near-gray dress folds, yields the delivered true-alpha ProRes 4444.
03-keyed/jeff_jib_key_ALPHA.mov (ProRes 4444, 4K, 246 MB — local)Keyer validation suite — the keyer was proven on harder cases before touching production footage: flying dark hair mid-motion, fine blonde strands against a dark suit, and full-body dance moves at 4K. Composited on a gradient specifically to expose edge artifacts.
Matte QC — the hole-fill fix. The silk camisole's near-gray folds sat close to the key gray and punched semi-transparent holes in the body interior. Interior hole-fill (solidify enclosed regions, preserve the soft hair rim) produced the delivered alpha:


Four iterations pushed Seedance 2.0 from "statue flung anywhere" to a pinned trajectory. The law that emerged: Seedance interprets a camera, it never hard-locks one — it is architecturally diffuse-follow. Composition obeys legibility; trajectory obeys nothing but keyframes.
routeB_seedance4_keyframes.mp4The other side of the deciding axis: structure as conditioning. Two engines tested — one died on look, one is the proven accuracy path. (Naming note: the repo's research docs use "Route A" for Uni3C reference-copy — untested to date; the Wan test below was run as a hard-lock engine trial.)


pushIn preset renders an optical zoom (uniform magnification, no parallax). Its superDollyIn preset — and the LTX depth path by construction — produce true forward translation: foreground columns slide past frame edges at a different rate than the back wall. Always inspect start/mid/end frames for parallax before accepting a "dolly."Real keyed subject over generated backgrounds. The locked shot is proven; the dolly comps exist in two BG flavors; the jib comp is next (its empty Seedance BG already exists — §08).




Feeding Seedance the raw greenscreen video + a reference BG image + "replace the background, keep her exactly" produced a repainted stranger on a random stage. Tested on two platforms (magnific + Higgsfield manual runs) — same law both times.
Decision locked after a Beeble/SwitchLight build-vs-buy analysis: build our own. IC-Light v1 FBC + DiffusionLight (single-frame HDRI lock — the anti-shimmer trick for our lighting-static BGs) + Marigold, on the 5090. Open stack ≈ 80–90% of SwitchLight on stills; Beeble API ($0.10/gen) kept as the reference bar only. Scaffolded at relight/, ~15 GB install not yet run.
| Model / method | Camera control | Preserves real footage? | Look | Where it fits |
|---|---|---|---|---|
| Seedance 2.0 (keyframes) | endpoint clamp; presets; interprets | no — repaints | 10/10 | Pipeline base for BG look |
| Seedance 2.0 (video ref) | copies plate move well | no — repaints subject | 10/10 | BG-only gen; Obscura candidate |
| LTX-2 depth IC-LoRA (local) | exact — structure conditioned | n/a (generates BG) | photoreal, sub-Seedance | Accuracy-critical BG |
| Wan2.2 Fun Control (local) | exact — depth conditioned | n/a | 3/10 local | Rejected; possible guide layer |
| Uni3C (Wan2.2 cloud) | geometry-aware ref copy | no — re-renders | 6–7 cloud | Repo "Route A" — untested fusion ingredient |
| Kling (Motion Control) | ref-follow | no — regenerates | high | Shootout planned — head-to-head vs Seedance |
| Runway (Gen-4 / Aleph) | prompt + ref modes | no — regenerates | high | Shootout planned |
| Veo 3.x | prompt-level | no — regenerates | high | Shootout planned |
| LTX-2.3 Obscura Remova | n/a (V2V removal) | yes — reconstructs behind occluder | 1080p cap | Planned: strip AI person from Seedance ref output |
| CorridorKey (5090) | n/a | yes — it IS the footage | broadcast-clean | The subject track |
pushIn = zoom (rejected); superDollyIn = true dolly (adopted). Second platform confirmed video-ref repaints subjects.| Item | State | Notes |
|---|---|---|
| SOTA BG-gen shootout | planned | Same dolly/jib BG brief across Kling, Runway, Veo vs Seedance — Seedance is the working recommend pending head-to-head |
| Obscura Remova test | planned | Strip AI person from Seedance video-ref output; mask-back into 4K; composite real subject |
| Jib composite | ready | Empty jib BG exists (Higgsfield run 2) + clean jib key + alpha master — assemble |
| Jib high-angle plate | redo | NB still failed; derive from Blender previz or regenerate |
| Dolly move-amount match | open | Seedance superDollyIn travels further than the plate's 1.82×; gentler re-gen or partial-range comp |
| LTX r2r quality pass | open | 768×432+, full 143f, real Jefferson statue mesh (Sketchfab/Smithsonian) for legible silhouette |
| Relight install + first test | gated | relight/SETUP-5090.md (~15 GB); A/B CorridorKey ComfyUI node vs key.sh |
| Locked-shot Seedance BG | open | Static gen drifted (§07); 2D-stabilize or regen; then rebuild locked comp on moving-grade BG |
| Fusion experiment | untested | Cloud-Wan depth hard-lock guide + Seedance restyle — proposed lever if clamp ceiling isn't enough |
| Keyer upgrade | research | MatAnyone 2 (−26% MAD); verify weights/licenses |
| Higgsfield API auth | pending | Manual runs worked; automated path awaits auth callback |
Everything on this page is a 720p H.264 proxy encoded for handoff (site filenames may shorten master names — each caption cites the master where they differ). Full-resolution masters live in the project repo on the workstation:
~/CodeMonkey/AI_Camera_Match/ — project root: plates (4K .mov), ISA.md (system of record), 8 research notes in research/03-keyed/jeff_jib_key_ALPHA.mov — ProRes 4444 true-alpha, 4K, 246 MB02-camera-matched/routeB_seedance4_keyframes.mp4 — best Seedance camera-match master (site proxy: routeB_v4_keyframes.mp4)06-render-to-real/dolly_r2r_v1_workflow.json — reproducible ComfyUI workflow (LTX-2 depth IC-LoRA, 5090)camera-solve/ — 2D tracks, dolly push-ramp JSON, Blender previz scenes (Mac + 5090 copies)_manual_dolly_bgreplace/ · _manual_jib_bgreplace/ — self-serve Seedance test packs with promptsrelight/SETUP-5090.md, workflows/BUILD-NOTES.md, camera-solve/pc/.research/ — 06-25 cloud rev-2 · 06-26 render-to-real rev-3 · 06-26 real-locations · 06-27 Route A/Wan · 06-28 Seedance camera-lock · 06-29 Beeble build-vs-buy · 06-29 Blender low-poly · 07-02 LTX depth r2r (+ README Log).