CANVAS: Continuity-Aware Narratives via Visual Agentic Storyboarding
Organizations: University of Maryland, College Park · Google
Abstract
Long-form visual storytelling requires maintaining continuity across shots, including consistent characters, stable environments, and smooth scene transitions. While existing generative models can produce strong individual frames, they fail to preserve such continuity, leading to appearance changes, inconsistent backgrounds, and abrupt scene shifts. We introduce CANVAS (Continuity-Aware Narratives via Visual Agentic Storyboarding), a multi-agent framework that explicitly plans visual continuity in multi-shot narratives. CANVAS enforces coherence through character continuity, persistent background anchors, and location-aware scene planning for smooth transitions within the same setting We evaluate CANVAS on two storyboard generation benchmarks ST-BENCH and ViStoryBench and introduce a new challenging benchmark HardContinuityBench for long-range narrative consistency. CANVAS consistently outperforms the best-performing baseline, improving background continuity by 21.6%, character consistency by 9.6% and props consistency by 7.6%.
Figures & tables
| Method | Char | BG | Future | Multi- | Training |
|---|---|---|---|---|---|
| Consist | Consist | Cond | Agent | Free | |
| StoryGen ( Zhang et al., 2025b ) | ✓ | ✗ | ✗ | ✗ | ✗ |
| StoryDiffusion ( Zhou et al., 2024 ) | ✓ | ✗ | ✗ | ✗ | ✗ |
| Story2Board ( Dinkevich et al., 2025 ) | ✓ | ✗ | ✗ | ✗ | ✓ |
| Story-Iter ( Mao et al., 2026 ) | ✓ | Partial | ✗ | ✗ | ✓ |
| AutoStudio ( Cheng et al., 2025 ) | ✓ | ✗ | ✗ | ✓ | ✓ |
| Dataset | Method | Background Consistency | Props | Character | Char Avg | |||
|---|---|---|---|---|---|---|---|---|
| Consecutive | Non-Consecutive | PropCons | FaceCons | ClothCons | BodyCons | |||
| ViStoryBench | AutoStudio ( Cheng et al., 2025 ) | 3.42 | 3.68 | 3.51 | 3.70 | 3.50 | 3.80 | 3.67 |
| ( Zhuang et al., 2025 ) | Story-Iter ( Mao et al., 2026 ) | 3.66 | 3.85 | 3.60 | 3.80 | 3.60 | 3.90 | 3.77 |
| Story2Board ( Dinkevich et al., 2025 ) | 3.20 | 3.43 | 3.18 | 3.60 | 3.40 | 3.60 | 3.53 | |
| Gemini-CT ( Comanici et al., 2025 ) | 4.52 | 4.00 | 4.56 | 4.05 | 4.12 | 3.98 | 4.05 | |
| CANVAS (Ours) | 4.83 | 4.83 | 4.88 | 4.25 | 4.52 | 4.12 | 4.30 | |
| Method | CSD | CIDS | PA | CM | Inc | Aes | ||
|---|---|---|---|---|---|---|---|---|
| Cross | Self | Cross | Self | Avg | ||||
| Story-Iter | 0.48 | 0.67 | 0.60 | 0.71 | 3.39 | 57.34 | 14.33 | 4.55 |
| Story2Board | 0.23 | 0.45 | 0.35 | 0.39 | 2.92 | 44.44 | 11.93 | 4.56 |
| AutoStudio | 0.34 | 0.63 | 0.44 | 0.46 | 3.39 | 56.22 | 14.34 | 3.45 |
| Gemini-CT | 0.38 | 0.62 | 0.58 | 0.65 | 3.61 | 59.97 | 12.50 | 5.54 |
| CANVAS | 0.49 | 0.72 | 0.61 | 0.71 | 3.60 | 60.34 | 13.89 | 5.60 |
| Method | FaceCons | ClothCons | BodyCons | Char Avg |
|---|---|---|---|---|
| CANVAS (Full) | 4.18 | 4.45 | 4.08 | 4.24 |
| – Canonical Character Anchor | 2.55 | 2.76 | 2.47 | 2.59 |
| – Character Anchor Retrieval | 4.10 | 4.08 | 3.96 | 4.05 |
| – Character Memory Update | 4.09 | 4.12 | 3.89 | 4.03 |
| Method | Consecutive | Non-Consecutive | Prop Cons |
|---|---|---|---|
| CANVAS (Full) | 4.94 | 4.73 | 4.73 |
| – Location Grouping | 2.45 | 3.34 | 4.45 |
| – Future Planning | 4.76 | 4.11 | 3.55 |
| – Background Reuse | 2.12 | 2.44 | 4.54 |
| – Prop State Update | 4.34 | 4.33 | 3.76 |
Appendix figures & tables33 assets
Supplementary material from the paper’s appendix.
Appendix
| Face Identity Evaluation Prompt. You are given two storyboard frames, Frame A and Frame B. The same character is expected to appear in both frames. Determine whether the faces correspond to the same individual. Focus only on the specified character. Ignore other people and background objects. Compare the following facial attributes: facial shape, eye shape and spacing, nose structure, jawline and chin structure, facial proportions, skin tone, and facial hair if present. Ignore changes caused by camera angle, facial expression, lighting conditions, or partial occlusion. Assign a score using the following rules: 5 — All visible facial features match. Facial structure, proportions, and distinctive features are consistent across both frames. 4 — All major facial features match. Minor variations appear only in rendering detail. 3 — At least half of the visible facial attributes match, but other attributes differ or are unclear. 2 — Fewer than half of the facial attributes match. 1 — Most visible facial attributes do not match. If the face of the character is not visible in one or both frames, return null . |
| Clothing Consistency Evaluation Prompt. You are given two storyboard frames containing the same character. Evaluate whether the clothing worn by the character is consistent across the frames. Focus only on the clothing worn by the character. Compare the following attributes: garment category (coat, jacket, shirt, dress, uniform), clothing structure (sleeve length, coat length, collar type), clothing layers (for example jacket over shirt), dominant colors, patterns or logos, and fabric appearance. Ignore differences caused only by lighting changes or cloth wrinkles. Assign a score using the following rules: 5 — Garment type, structure, color palette, and patterns are identical. 4 — Garment type and structure are identical, and color palette differs only slightly. 3 — Garment type matches but structural details or colors differ. 2 — Garment type differs but some colors or patterns match. 1 — Garment type, structure, and colors are completely different. |
| Statistic | ViStoryBench-Lite | ST-Bench | HardContinuityBench |
|---|---|---|---|
| Stories | 20 | 30 | 5 |
| Recurring Location Reappearances | Rare | Occasional | Frequent |
| Avg. Gap Between Location Reappearances (shots) | 1.4 | 2.3 | 5.6 |
| Character Appearance Changes | Rare | Limited | Common |
| Prop State Transitions (per story) | 0.8 | 1.2 | 3.6 |
| Long-Range Scene Reconstruction Required | Low | Moderate | High |
| Background Architecture Consistency Evaluation Prompt. You are an expert evaluator for cinematic storyboard continuity. You are given two consecutive storyboard frames from the same scene in a narrative sequence. Your task is to evaluate Background Geometry Consistency (GeomCons) between the two frames. GeomCons measures whether the architectural structure of the environment remains logically coherent across shots. Your evaluation must focus only on architectural elements and determine whether the spatial layout of the environment remains consistent between the two frames. — Important Instructions Do NOT evaluate the following: - characters - character pose or movement - facial expression - lighting differences - color shifts - camera blur - small objects or movable props - decorations These elements are irrelevant to this evaluation. Your focus must be only architectural elements that define the physical structure of the environment. — Definition of Architectural Elements Architectural elements are fixed structural components of the environment that define the geometry of the scene. Examples include: - walls - doorways - doors - windows - pillars - columns - arches - staircases - floors - ceilings - railings - architectural partitions - built-in counters - permanent architectural installations These elements define the structural layout and geometry of the environment. Do NOT include movable objects such as chairs, books, tools, decorations, or equipment. — Step 1 — Identify Architectural Elements in Frame A Inspect Frame A (the earlier frame). List all architectural elements visible in the scene. Examples: - left wall - right wall - doorway - window - pillar - staircase - railing - floor boundary - ceiling beam Let the number of architectural elements be: — Step 2 — Identify Architectural Elements in Frame B Inspect Frame B (the later frame). List all architectural elements visible in the scene. Let the number of elements be: — Step 3 — Match Corresponding Architectural Elements Match architectural elements that appear in both frames. Example: | Frame A | Frame B | |——–|——–| | left wall | left wall | | doorway | doorway | | pillar | pillar | Let the number of matched elements be: — Step 4 — Detect Structural Violations Evaluate the following violations. — Appearance Violations Architectural elements appearing in Frame B that were not visible or implied in Frame A. Count the number of such cases: — Disappearance Violations Architectural elements visible in Frame A that disappear in Frame B without plausible explanation. Count the number of such cases: — Layout Violations Architectural elements that shift position or orientation in physically impossible ways. Count the number of such cases: — Step 5 — Evaluate Camera Motion Plausibility Camera movement may explain some changes. Acceptable explanations include: - camera pan - camera zoom - camera reframing - camera moving closer - camera moving sideways If the change cannot be explained by camera motion, it should be counted as a violation. — Geometry Consistency Percentage First compute the total number of violations: Total Violations = + + Normalize by the total number of architectural elements: Max Elements = max( , ) Compute the Geometry Consistency Percentage: GeomCons = 100 × (1 minus Total Violations / Max Elements) Clamp the result between 0 and 100. — Score Conversion (Percentage → Rubric) Convert the percentage to a GeomCons score from 1–5. | Percentage Range | Score | Interpretation | |——————|——|—————-| | 90–100% | 5 | Perfect architectural consistency | | 75–89% | 4 | Minor geometric differences | | 55–74% | 3 | Moderate inconsistencies | | 30–54% | 2 | Major structural inconsistencies | | 0–29% | 1 | Severe spatial inconsistency | |
| Component | Description |
|---|---|
| Evaluation Goal | Evaluate Prop Consistency (PropCons) between two storyboard frames by measuring how many props visible in one frame can be correctly recovered in the other frame with identical visual identity. |
| Evaluation Scope | The evaluation must rely only on visually observable information . Objects that are not visible in one of the frames must not be considered. |
| Visible Prop Constraint | If a prop is hidden due to camera angle, cropping, or occlusion, it must not be assumed to exist in the other frame. Only props that are clearly visible in both frames can be evaluated. |
| Matching Criteria | Two props are considered identical only if the following attributes match: shape, color, and texture/material appearance. |
| Ignored Factors | The evaluation ignores character identity, character motion, lighting differences, motion blur, and architectural structures. |
| Definition of Props | Props are movable non-structural objects present in the scene. Examples include chairs, tables, lamps, books, tools, decorations, statues, paintings, containers, and equipment. |
| Hair and Body Appearance Evaluation Prompt. You are given two storyboard frames containing the same character. Evaluate whether the character’s hairstyle and body-level appearance are consistent. Compare the following attributes: hairstyle, hair length, hair color, hair texture, body silhouette or build, and wearable accessories such as glasses, hats, helmets, or backpacks. Ignore differences caused by body pose, camera viewpoint, or partial occlusion. Assign a score using the following rules: 5 — Hairstyle, hair color, body silhouette, and accessories are identical. 4 — Hairstyle and body silhouette are identical, with only minor accessory or lighting differences. 3 — Either hairstyle or body silhouette matches, but the other differs. 2 — Both hairstyle and body silhouette differ but one accessory matches. 1 — Hairstyle, body silhouette, and accessories are all different. |
| Dataset | Method | Background Consistency | Props | Character | Char Avg | |||
|---|---|---|---|---|---|---|---|---|
| Consecutive | Non-Consecutive | PropCons | FaceCons | ClothCons | BodyCons | |||
| ViStoryBench | AutoStudio ( Cheng et al., 2025 ) | 3.42 | 3.68 | 3.51 | 3.70 | 3.50 | 3.80 | 3.67 |
| ( Zhuang et al., 2025 ) | Story-Iter ( Mao et al., 2026 ) | 3.66 | 3.85 | 3.60 | 3.80 | 3.60 | 3.90 | 3.77 |
| Story2Board ( Dinkevich et al., 2025 ) | 3.20 | 3.43 | 3.18 | 3.60 | 3.40 | 3.60 | 3.53 | |
| Gemini-CT ( Comanici et al., 2025 ) | 4.52 | 4.00 | 4.56 | 4.05 | 4.12 | 3.98 | 4.05 | |
| CANVAS w/o QA | 4.79 | 4.78 | 4.84 | 4.12 | 4.30 | 4.01 | 4.14 | |
| Method | Generation Paradigm | CharacterCons | Environment | Object State Tracking | Interactive Editing | Explicit Narrative | Long-Range |
|---|---|---|---|---|---|---|---|
| StoryGen | Autoregressive diffusion | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | |
| StoryDiffusion | Attention-based diffusion consistency | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | |
| AutoStory | Layout-guided story generation | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | ||
| Story2Board | Training-free storyboard prompting | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | ||
| Story-Iter | Iterative reference refinement | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | |||
| TheaterGen | LLM prompt-book + diffusion | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} | {\color[rgb]{0.7,0,0}✗} |
| Model | Background | Character | Props |
|---|---|---|---|
| Gemini-2.5-Flash | 0.71 | 0.68 | 0.67 |
| Gemini-3-Pro-Image | 0.65 | 0.61 | 0.62 |
| GPT-5 | 0.70 | 0.66 | 0.68 |
| Method | Background Consistency | Props | Character Consistency | Char Avg | |||
|---|---|---|---|---|---|---|---|
| Consec | Non-Consec | PropCons | FaceCons | ClothCons | BodyCons | ||
| AutoStudio ( Cheng et al., 2025 ) | 3.28 | 3.48 | 3.36 | 3.58 | 3.38 | 3.68 | 3.55 |
| Story-Iter ( Mao et al., 2026 ) | 3.58 | 3.73 | 3.48 | 3.78 | 3.52 | 3.82 | 3.71 |
| Story2Board ( Dinkevich et al., 2025 ) | 3.12 | 3.32 | 3.02 | 3.50 | 3.28 | 3.52 | 3.43 |
| Gemini-CT ( Comanici et al., 2025 ) | 4.30 | 3.80 | 4.20 | 3.92 | 3.67 | 3.88 | 3.82 |
| CANVAS (Ours) | 4.60 | 4.60 | 4.52 | 4.11 | 4.39 | 4.02 | 4.18 |
| Method | CSD | CIDS | Prompt Alignment (PA) | CM | Inc | Aes | CP | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cross | Self | Cross | Self | Scene | Shot | CI | IA | Avg | |||||
| Story-Iter | 0.48 | 0.67 | 0.60 | 0.71 | 3.50 | 3.67 | 3.31 | 3.11 | 3.39 | 57.34 | 14.33 | 4.55 | 0.30 |
| Story2Board | 0.23 | 0.45 | 0.35 | 0.39 | 3.12 | 2.34 | 3.0 | 3.23 | 2.92 | 44.44 | 11.93 | 4.56 | 0.24 |
| AutoStudio | 0.34 | 0.63 | 0.44 | 0.46 | 3.34 | 3.55 | 3.56 | 3.11 | 3.39 | 56.22 | 14.34 | 3.45 | 0.235 |
| Gemini-CT | 0.38 | 0.62 | 0.58 | 0.65 | 3.46 | 3.82 | 3.96 | 3.20 | 3.61 | 59.97 | 12.50 | 5.54 | 0.244 |
| CANVAS | 0.49 | 0.72 | 0.61 | 0.71 | 3.50 | 3.75 | 3.23 | 3.9 | 3.60 | 60.34 | 14.89 | 5.60 | 0.312 |
| Method | SF | NC | VQ | CC | PLC | CT | CD | OQ | Avg |
|---|---|---|---|---|---|---|---|---|---|
| StoryIter ( Mao et al., 2026 ) + Veo-3.1 | 3.20 | 2.60 | 3.40 | 1.80 | 4.40 | 2.80 | 4.00 | 2.80 | 3.13 |
| AutoStudio ( Cheng et al., 2025 ) + Veo-3.1 | 3.00 | 2.80 | 3.20 | 2.00 | 3.50 | 3.00 | 3.50 | 3.20 | 3.03 |
| Gemini-CT ( Zhang et al., 2025a ) + Veo-3.1 | 3.00 | 2.20 | 3.60 | 2.20 | 3.80 | 3.60 | 3.80 | 4.40 | 3.33 |
| Story2Board ( Dinkevich et al., 2025 ) + Veo-3.1 | 3.60 | 2.20 | 1.80 | 1.00 | 3.60 | 2.20 | 3.40 | 3.20 | 2.63 |
| CANVAS (Ours) + Veo-3.1 | 3.40 | 4.00 | 3.80 | 4.00 | 3.80 | 4.00 | 4.40 | 4.80 | 4.03 |
| Method | SF | NC | VQ | CC | PL | CT | CD | OQ |
|---|---|---|---|---|---|---|---|---|
| Story2Board ( Dinkevich et al., 2025 ) + Veo-3.1 | 2.25 | 1.75 | 1.75 | 1.00 | 3.00 | 2.75 | 2.75 | 2.25 |
| Story-Iter ( Mao et al., 2026 ) + Veo-3.1 | 3.75 | 2.25 | 3.75 | 2.00 | 3.75 | 4.50 | 4.25 | 4.25 |
| Gemini-CT + + Veo-3.1 | 3.75 | 2.25 | 4.25 | 2.50 | 3.50 | 4.25 | 4.00 | 4.00 |
| CANVAS (Ours) + Veo-3.1 | 4.00 | 3.00 | 4.75 | 4.00 | 3.25 | 5.00 | 4.75 | 4.75 |
| Method | Model | CSD | CIDS | PA | CM | Inc | Aes | CP | ||||||
| Cross | Self | Cross | Self | Scene | Shot | CI | IA | Avg. | ||||||
| Copy-Paste Baseline | - | 0.735 | 0.770 | 0.911 | 0.993 | 0.62 | 2.08 | 0.87 | 1.55 | 1.28 | 92.76 | 5.46 | 4.39 | 0.550 |
| Story Image Method | ||||||||||||||
| StoryGen ( Liu et al., 2024 ) | SD1.5 | 0.405 | 0.562 | 0.405 | 0.591 | 1.05 | 2.32 | 1.43 | 1.75 | 1.64 | 52.98 | 7.15 | 4.09 | 0.277 |
| StoryGen ( Liu et al., 2024 ) | SD1.5 | 0.396 | 0.551 | 0.396 | 0.602 | 1.18 | 2.25 | 1.49 | 1.50 | 1.60 | 52.53 | 7.67 | 4.09 | 0.224 |
| StoryGen ( Liu et al., 2024 ) | SD1.5 | 0.316 | 0.617 | 0.316 | 0.610 | 0.89 | 2.41 | 1.39 | 2.05 | 1.68 | 40.13 | 6.25 | 3.86 | 0.240 |
| Prompt: Location Clustering for Background Continuity |
|---|
| You are a narrative continuity planner for visual storytelling. Your goal is to identify and cluster recurring locations across a sequence of storyboard shots. |
| Instructions: 1. Identify the physical environment in which each shot occurs. 2. Assign a unique location_id to each distinct location. 3. Cluster shots that occur in the same environment under the same location_id . 4. If a shot returns to a previously seen environment, mark it as location_reappearance . 5. If a shot directly continues the previous scene without changing environment, mark it as previous_frame_continuation . 6. If the location appears for the first time, mark it as fresh_location . Return STRICT JSON in the following format: { "locations": { "museum_gallery": [ "Scene_1_Shot_1", "Scene_1_Shot_2", "Scene_3_Shot_1" ], "security_room": [ "Scene_2_Shot_1" ] }, "shots": { "Scene_1_Shot_1": { "location_id": "museum_gallery", "continuity_mode": "fresh_location" } } } Constraints • Maintain consistent location identities across shots. • Do not create duplicate location IDs for the same environment. • When a location reappears later in the story, reuse the original location_id . |
| Prompt: Future Prop and Geometry Aware Background Planning |
|---|
| You are a story continuity planner responsible for maintaining consistent environments across storyboard shots. Your task is to reason about how the background scene should evolve based on the current and future states of important props and architectural geometry of the background location. |
| Instructions Given: • The description of the current shot. • The planned metadata for the shot (characters, location, prop states). • The previously known world state of props and environments. Plan the background scene so that it remains logically consistent with both the current story state and upcoming events. Reason about the following: 1. Which props should remain visible in the background environment. 2. Which props should disappear because they were taken, destroyed, or moved. 3. Which props are likely to appear in the background due to upcoming story events. 4. Which props are currently carried by characters and therefore should not remain in the environment. 5. Which environmental objects must persist across shots to maintain scene identity (e.g., furniture, structures, display cases). 6. Whether the camera framing hides some props even though they still exist in the environment. Return STRICT JSON in the following format: { "background_props": [ "display_case", "museum_sign", "security_camera" ], "must_appear": [ "golden_artifact" ], "must_not_appear": [ "artifact_case_glass" ], "carried_props": { "thief": ["golden_artifact"] }, "reasoning": "The artifact is carried away by the thief, so it should not remain in the gallery background. The broken display case should remain visible." } Constraints • Background elements should remain consistent with previously established environments. • If a prop was present earlier in the same location and nothing removed it, it should persist. • Props carried by characters must not remain in the background. • The planned background should support future story events. |
| Prompt: Character Appearance State Planning (Single Character) |
|---|
| You are a narrative continuity planner responsible for tracking the visual appearance of a single character across a sequence of storyboard shots. Your goal is to determine the appearance state of the character in each shot and ensure that the appearance evolves consistently with the story. |
| Input • The name of the target character. • A sequence of storyboard shot descriptions. Instructions 1. For each shot, determine whether the target character appears in the scene. 2. If the character appears, determine the character’s visual appearance state (e.g., clothing, uniform, disguise). 3. If the appearance does not change, reuse the same appearance state identifier as the previous shot. 4. If the story explicitly changes the character’s clothing or visual style, assign a new appearance state. 5. If the character does not appear in a shot, mark the state as not_present . Return STRICT JSON in the following format: { "character": "Ethan", "appearance_timeline": { "Scene_1_Shot_1": "blue_curator_jacket", "Scene_1_Shot_2": "blue_curator_jacket", "Scene_1_Shot_3": "blue_curator_jacket", "Scene_2_Shot_1": "black_security_jacket", "Scene_2_Shot_2": "not_present", "Scene_3_Shot_1": "black_security_jacket" } } Constraints • Maintain consistent appearance across shots unless the story explicitly indicates a change. • Reuse appearance identifiers whenever the clothing or visual style remains the same. • Ensure that later reappearances match the most recent appearance state. |
| Prompt: Prop State Update Planning (Single Object) |
|---|
| You are a narrative continuity planner responsible for tracking the state of a single prop (object) across a sequence of storyboard shots. Your goal is to determine how the object’s state evolves throughout the story and ensure logical consistency with the described events. |
| Input • The name of the target prop (object). • A sequence of storyboard shot descriptions. Instructions 1. For each shot, determine whether the target prop appears in the scene. 2. If the prop appears, determine its state (e.g., intact, broken, inside container, carried by character, missing). 3. If the prop is carried by a character, record which character carries it. 4. If the prop is removed from the scene (e.g., stolen, destroyed, moved), update its state accordingly. 5. If the prop continues unchanged across shots, reuse the same state identifier. 6. If the prop does not appear in a shot but still exists in the story world, mark it as not_visible . Return STRICT JSON in the following format: { "prop": "golden_artifact", "state_timeline": { "Scene_1_Shot_1": { "state": "inside_display_case", "carrier": null }, "Scene_1_Shot_2": { "state": "inside_display_case", "carrier": null }, "Scene_1_Shot_3": { "state": "carried", "carrier": "masked_thief" }, "Scene_2_Shot_1": { "state": "not_visible", "carrier": "masked_thief" }, "Scene_3_Shot_1": { "state": "missing_from_gallery", "carrier": "masked_thief" } } } Constraints • Maintain consistent prop states across shots unless the story explicitly changes them. • If a prop is carried by a character, it should not remain in the previous location. • If a prop disappears from the environment, update its state to reflect the narrative event. • When the prop reappears later, ensure its state matches the last known world state. |
| Prompt: Previous-Frame Continuation Decision |
|---|
| You are a visual continuity planner for storyboard generation. Your task is to decide whether the current shot is a direct continuation of the previous shot, such that the previous frame should be reused as a visual anchor for generation. |
| Input • The description of the previous shot. • The description of the current shot. • The location assignment of both shots. • The characters present in both shots. • The prop states in both shots. Instructions Determine whether the current shot should be treated as previous_frame_continuation , location_reappearance , or fresh_location . Mark the current shot as previous_frame_continuation only if the current shot depends on preserving the spatial structure of the immediately previous frame. Reason about the following: 1. Whether the previous shot and current shot occur in the same physical environment. 2. Whether the current shot is an immediate temporal continuation rather than a later revisit. 3. Whether the spatial arrangement of the scene should remain consistent across the cut. 4. Whether important background geometry must be preserved, such as walls, doors, furniture, display cases, tables, platforms, or room layout. 5. Whether character positions, object placements, or scene composition depend on the previous frame. 6. Whether the current shot is a close-up, zoom-in, alternate camera angle, or tighter crop of the same ongoing scene. 7. Whether there are state changes in the scene that still require maintaining the same base spatial environment. Use the following rules: • Choose previous_frame_continuation if the scene is still unfolding in the same environment and preserving the exact spatial setup from the previous frame is important. • Choose location_reappearance if the shot returns to a known location after an intervening scene or temporal gap, where the same location identity should be preserved but not necessarily the exact previous composition. • Choose fresh_location if the shot occurs in a new environment not previously shown. • Even if some props or characters change state, still choose previous_frame_continuation when the underlying scene geometry should remain continuous. Return STRICT JSON in the following format: { "continuity_mode": "previous_frame_continuation", "same_location": true, "requires_spatial_continuity": true, "spatial_dependencies": [ "display_case remains in same position", "same museum gallery layout", "artifact remains centered under spotlight" ], "reasoning": "..." } Constraints • Base the decision on scene continuity, not only on shared characters or shared location name. • Prioritize whether preserving spatial arrangement from the immediately previous frame will improve visual continuity. • If the current shot is compositionally dependent on the previous frame, prefer previous_frame_continuation . |
| Prompt: Candidate Frame Generation |
|---|
| You are a cinematic storyboard generator. Your task is to generate a candidate frame for the current shot while maintaining visual continuity with previously generated frames and respecting the global story plan. |
| Input • Shot description • Retrieved visual anchors (may include previous frame, character anchors, background anchors, and prop anchors) • Character appearance states from the global plan • Prop states and prop reasoning for the current shot • Location identifier and background reasoning Instructions Generate a visually coherent frame for the current shot by following these rules: 1. Respect the shot description Ensure the generated frame faithfully depicts the actions, characters, and environment described in the current shot. 2. Preserve character identity Characters must maintain the appearance state specified by the global plan. If character anchors are provided, match the visual identity (face, clothing, body appearance) shown in those anchors. 3. Maintain spatial continuity If the previous frame is provided as an anchor, treat the current shot as a continuation of the same scene. Preserve the spatial layout of the environment, including background structure, object placement, and character positions. 4. Use background anchors If background anchors are provided, maintain the same environment geometry (e.g., walls, furniture, display cases, room layout). 5. Respect prop states Ensure that props appear according to the planned prop states: • Props that must appear should be clearly visible. • Props carried by characters should move with the corresponding character. • Props that were removed, destroyed, or taken away should not remain in the environment. 6. Maintain cinematic coherence The frame should resemble a realistic cinematic shot with consistent lighting, perspective, and scene composition. Output Generate a high-quality candidate frame that satisfies the shot description and respects all provided anchors and continuity constraints. |
| Prompt: VLM-Based Continuity Scoring Prompt |
|---|
| You are a visual continuity evaluator. Your task is to evaluate a candidate storyboard frame and assign scores based on how well it satisfies the global continuity plan and the current shot description. |
| Input • Current shot description • Candidate image • Character appearance states from the global plan • Prop states for the current shot • Location identifier for the scene • Previous frame (if continuation) Evaluation Criteria Evaluate the image along the following dimensions and assign a score from 1 to 5. 1. Shot Alignment (1–5) How well does the image depict the action described in the shot? 2. Character Appearance Consistency (1–5) Do characters match the planned appearance states? 3. Background Continuity (1–5) Does the environment match the planned location and maintain spatial continuity with the previous frame? 4. Prop State Correctness (1–5) Do props appear with the correct state according to the global plan? Return STRICT JSON { "shot_alignment": 5, "character_consistency": 4, "background_continuity": 5, "prop_state_correctness": 4, "overall_score": 4.5, "reasoning": "The frame correctly depicts the museum gallery..." } Scoring Guidelines • 5 = perfect match with the plan • 4 = minor inconsistencies • 3 = moderate inconsistencies • 2 = major inconsistencies • 1 = completely incorrect |
| Prompt: Character Anchor Extraction |
| You are extracting visual anchors for characters from a storyboard frame. Input • Frame image • Shot description • Character appearance states Task Identify characters visible in the frame and extract a clean visual anchor image that captures their current appearance (face, clothing, hairstyle, and overall identity). Return STRICT JSON { "characters":[ { "name":"Ethan", "appearance_state":"trench_coat", "anchor":"character_anchor_image" }, { "name":"Lena", "appearance_state":"blue_dress", "anchor":"character_anchor_image" } ] } Guidelines • Extract anchors only for characters clearly visible. • Anchors should capture the full appearance identity. |
| Prompt: Location Background Anchor Extraction |
| You are extracting the visual environment anchor for a location from a storyboard frame. Input • Frame image • Shot description • Location identity Task Identify the environment corresponding to the location and extract a clean background anchor image that represents the spatial layout of the scene. Return STRICT JSON { "location":"museum_gallery", "anchor":"background_anchor_image" } Guidelines • The anchor should capture the environment layout. • Avoid including large foreground characters when possible. |
| Prompt: Prop Anchor Extraction |
| You are extracting visual anchors for important objects from a storyboard frame. Input • Frame image • Shot description • Object state descriptions Task Identify objects that appear in the frame and extract visual anchors representing their current state. Return STRICT JSON { "objects":[ { "name":"golden_artifact", "state":"inside_display_case", "anchor":"prop_anchor_image" } ] } Guidelines • Extract anchors only for visible objects. • Ensure the object state matches the visual evidence. |