Complex Shots: Blender previz playblast as a video reference #139
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio#139
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem Statement
A Board tells H3 about staging, composition and camera movement with a few still Panels and Notation symbols. That works for simple Shots, but it isn't enough for Shots with complex staging: several subjects moving at once, or subject motion combined with a camera move. For those Shots H3 has to guess the timing and the paths through space, and the filmmaker re-rolls Takes again and again hoping one moves right. H3's Reference-to-Video node accepts up to three video references, but the app never sends one, so the filmmaker has no way to show H3 the exact motion and camera they want.
Solution
The filmmaker can mark a Shot as complex. A complex Shot shows a coloured dot on the storyboard (the Board timeline) and on the other Shot listings. The dot's colour shows how far its previz has got.
A complex Shot gets a Blender previz workflow. From the Shot, the filmmaker clicks "Open in Blender". The app builds a Blender scene for the Shot in a folder of its own: a camera at the Shot's aspect ratio and length, one flat-coloured proxy figure per subject, the Shot's Performance slice on the timeline (when a Performance drives it), Line markers, and the Board Panels and location angle as camera background references. The filmmaker animates the figures and the camera, then runs one "Playblast for AI Studio" action in Blender. That renders a flat-shaded, untextured video at the Shot's exact length into the Shot's folder.
The app notices the new playblast and attaches it to the Shot as a new previz version. The playblast then:
<Video 1>"),User Stories
<Video N>slot tags, with the same broken-tag checks as picture and audio tags, so that hand-edited prompts stay safe to queue.Implementation Decisions
Domain language
CONTEXT.md(via/domain-modeling): Complex shot (a Shot flagged for Blender previz), Previz (a complex Shot's Blender scene and its playblast versions) and Playblast (one rendered previz video, one previz version). The Animatic entry already reserves "previz" for Blender playblasts, so this matches the existing vocabulary.Data model (studio-core, new migration)
complexflag, false by default. Setting and clearing it is an undoable edit. When a Shot is split, the first part keeps the flag and the previz..studiofile), as a content-hashed copy. A later write to the same path in the Blender folder becomes a new version and never touches an earlier one.Shot read model
complexand a previz status:none,current, ormismatched(length or effective aspect ratio differs from the Shot). Every Shot listing reads this for the dot, as the over-budget count is read today.Blender scene spec and bootstrap
Playblast pickup
mismatchedwhen its frame count or aspect ratio differs from the Shot's. This is one undoable edit.Slot budget
SlotMediumgainsVideo, with H3's 3 video slots. The only candidate today is the complex Shot's current previz. It follows the existing Slot list rules: default order, user edits, exclusion and over-budget. A Shot that isn't complex has no video candidates.<Video N>tags.Prompt composer
<Video N>in the same way as picture and audio tags.Workflows and jobs
h3.draftandh3.finalmanifests gain video slot bindings (ref_videos.ref_video_{n}, count 3) and a video load node that is added for each filled slot. The workflow version goes up, withchanges_output: false, because a Take with no video slot builds the same graph. Promotion reuses the draft's latent and sends no video.Staleness
Animatic
Storage
Frontend
ComplexShotDotcomponent sits besideOverBudgetBadgewherever Shots are listed. Its colour comes from the previz status. A pure helper maps the status to colour and tooltip.Testing Decisions
ProjectSessioncommands, the reads and the jobs that reach ComfyUI. They never check tables, internal structs or the order of internal calls.crates/studio-core/tests/), usingProjectSession,RenderWorkerandFakeComfy. A new previz test file covers:<Video N>numbering;<Video N>tags in an override;ref_videosinput wired up, and none for Shots that aren't complex or for Promotion;tests/keyframes.rs(Shot-attached media, undo, FakeComfy jobs),tests/slot_budget.rs,tests/prompt_composer.rs,tests/prompt_override.rs,tests/staleness.rs,tests/animatic_takes.rs,tests/storage.rs,tests/shipped_workflows.rs(manifest checks for the new video bindings).src/lib/scenes/*.test.ts.Out of Scope
Further Notes
scratch/scratch-plan.md, Previz section). It was deferred from the first slice (#24: "Video slots stay unused").ref_videosinputs (seen in the hand-tuned seed-hunter graph), so no new model is needed. Only the shipped workflow manifests change, which ADR-0002 expects: improvements are ported by hand.CONTEXT.md.All ten slices (#158–#167) are merged (PRs #168–#178). Follow-ups from those PRs:
Done: all slices merged. Follow-ups are #179–#187.