How to Generate Consistent Characters in Google Veo 3 & MiniMax
A masterclass on maintaining face, clothing, and style consistency across AI video scenes using Google Veo 3 and MiniMax — prompt templates, seed tricks, and post-processing.
AgenticMedia Team
Content Creator

TL;DR / Key Takeaways
Character consistency is still the single biggest failure point in AI video production — a face that drifts, a jacket that changes color, a haircut that resets between shots. Here’s what actually works in 2026:
- Anchor everything to a reference image. Both Veo 3 and MiniMax perform dramatically better with image-conditioned generation (image-to-video) than pure text-to-video when identity matters.
- Lock your character description into a reusable “character sheet” block and paste it verbatim into every prompt — variance in wording is the #1 cause of drift, more than model randomness itself.
- Seed values help, but they’re not a silver bullet. Fixing the seed reduces stylistic drift between generations of the same prompt, but changing the prompt (new camera angle, new action) still introduces variation even with a locked seed.
- Multi-angle consistency requires “turnaround” reference sets, not a single hero image — treat it like briefing a character designer, not a single portrait.
- Post-processing is not optional. Topaz Video AI’s face-consistency and temporal coherence passes clean up the residual flicker that even the best prompting can’t eliminate.
Core Concept: Why Characters Drift in the First Place
Text-to-video and image-to-video diffusion models don’t have a persistent internal model of “this specific character.” Each generation (or each frame-batch within a generation) re-samples from the model’s understanding of your prompt. Small wording differences, different random seeds, and even different camera angles push the sampling into a slightly different region of latent space — which shows up as a different jawline, a shifted eye color, or a shirt that’s suddenly a different cut.
There are three practical consistency mechanisms available across Veo 3 and MiniMax today:
- Image conditioning (reference-image-to-video): you supply a still image of your character, and the model generates motion/video around that visual anchor. This is the strongest consistency lever available.
- Seed locking: reusing the same random seed across generations reduces stochastic variation, particularly useful when you’re only changing minor prompt details (e.g., background, lighting) and want the character to hold steady.
- Prompt-level character sheets: a fixed, detailed text block describing the character’s face, build, wardrobe, and distinguishing features, reused verbatim so the model isn’t re-interpreting a slightly different description each time.
None of these alone is sufficient for a multi-scene commercial project — the workflow below stacks all three, plus post-processing.
Practical Tutorial: The Full Consistency Workflow
Step 1 — Build a Character Reference Sheet (Image)
Before touching a video prompt, generate or source a turnaround set: 3-4 stills of your character from different angles (front, 3/4 profile, side) and 1-2 different expressions. If you’re generating these with a text-to-image model (Midjourney, Nano Banana Pro, Ideogram), use a locked character description and iterate on angle only:
CHARACTER SHEET PROMPT:
"[Character name], a 32-year-old woman with shoulder-length auburn hair,
sharp jawline, light freckles across the nose, wearing a fitted navy
blazer over a white shirt. Studio lighting, neutral gray background,
[ANGLE: front-facing / 3-quarter left / profile], photorealistic,
consistent facial structure across all angles."
Keep everything except the [ANGLE] token identical across the batch. This becomes your image-conditioning source for both Veo 3 and MiniMax.
Step 2 — The Reusable Character Block (Text)
Write your character description once, as a standalone block, and paste it into every video prompt without editing:
CHARACTER_BLOCK = """
Maya: mid-30s woman, shoulder-length auburn hair with a slight wave,
sharp jawline, light freckles, navy blazer over white shirt, silver
stud earrings, calm and confident expression.
"""
Why this matters more than most creators assume: if scene 1 says “auburn hair” and scene 3 says “reddish-brown hair,” the model treats these as different — even though a human reader wouldn’t. Copy-paste the exact block; never paraphrase it between scenes.
Step 3 — Image-to-Video Generation in Veo 3
Veo 3 supports image-conditioned generation where a reference frame anchors the first frame of the clip. Structure the prompt as: [Character Block] + [Scene Action] + [Camera Instruction] + [Style/Lighting].
[CHARACTER_BLOCK]
Scene: Maya walks into a modern office, sets down a coffee cup on
a glass desk, and looks toward the window with a thoughtful
expression.
Camera: slow dolly-in, eye-level, shallow depth of field.
Style: cinematic, soft natural window light, photorealistic,
color grade: cool blue-gray tones.
Reference image: [attach turnaround front-facing still]
Seed: 48291
Locking the seed here matters most when you generate variations of this exact scene (e.g., re-rolling for a better take) — it keeps the “random” component of the generation anchored so re-rolls stay closer to the original character rendering rather than resampling identity from scratch.
Step 4 — Image-to-Video Generation in MiniMax
MiniMax’s workflow is structurally similar but tends to reward more literal, shorter action descriptions and is comparatively more sensitive to reference image quality than to prompt verbosity. A pattern that works well:
[CHARACTER_BLOCK]
Action: Maya turns her head slightly to the left and smiles.
Camera: static medium close-up shot.
Reference image: [attach turnaround 3/4 angle still]
Seed: 48291
Keep MiniMax scenes shorter and more atomic (one clear action per generation) — stacking multiple actions in a single MiniMax prompt increases the odds of mid-clip identity drift compared to Veo 3, which tends to handle longer action sequences within a single generation more robustly.
Step 5 — Multi-Angle Camera Prompt Strategy
To cut between angles of the same character within a scene without breaking consistency, generate each angle as a separate clip conditioned on the matching turnaround reference image, rather than asking one generation to “show multiple angles.” Use this angle-to-reference mapping:
| Desired Shot | Reference Image to Use | Camera Prompt Fragment |
|---|---|---|
| Establishing / wide | Front-facing turnaround still | “wide shot, full body, static camera” |
| Conversational medium | 3/4 angle turnaround still | “medium shot, eye-level, slight handheld sway” |
| Emotional close-up | Front-facing, close-crop turnaround still | “close-up, shallow depth of field, slow push-in” |
| Reaction / profile cutaway | Profile turnaround still | “side profile, static camera, natural light” |
Editing these clips together in sequence (rather than relying on the model to generate a multi-angle sequence in one pass) is currently the most reliable way to get true multi-angle coverage of one character.
Step 6 — Post-Processing with Topaz Video AI
Even a well-anchored generation has residual frame-to-frame flicker — subtle shifts in skin tone, micro-jitter in facial features. Run the assembled sequence through Topaz Video AI’s:
- Recover (or the current-gen facial enhancement model) to sharpen and stabilize facial detail frame-to-frame.
- Temporal consistency / de-flicker pass to smooth luminance and color shifts between adjacent frames — this is what removes the subtle “shimmer” that betrays AI-generated footage in close-ups.
- Frame interpolation only if your source generation is below 30fps and you need smoother motion for delivery — do this after the consistency passes, not before, since interpolation can amplify existing flicker if run first.
Tool / Solution Comparison Table
| Capability | Google Veo 3 | MiniMax | Notes |
|---|---|---|---|
| Image-to-video conditioning | Strong | Strong | Both require a clean, well-lit reference still |
| Native audio/dialogue generation | Yes (synced dialogue + SFX) | Limited | Veo 3 has a real edge for talking-character scenes |
| Multi-action scene handling | Better for longer, layered actions | Best kept to single, atomic actions | Split complex MiniMax scenes into multiple clips |
| Seed control | Supported | Supported | Reduces variance, doesn’t guarantee identity lock |
| Typical clip length | Longer native clips | Shorter native clips, faster iteration | MiniMax favors rapid-iteration workflows |
| Cost per generation | Higher | Lower | MiniMax often used for volume drafts, Veo 3 for hero shots |
Actionable Checklist / Next Steps
- Build a 3-4 image turnaround reference set for your character before writing a single video prompt.
- Write your character description once as a reusable block — never re-paraphrase it between scenes.
- Use image-conditioned (not pure text-to-video) generation whenever character identity matters.
- Lock a seed value per character and reuse it across re-rolls of the same scene.
- Match each camera angle to the corresponding turnaround reference image rather than requesting multi-angle coverage in a single generation.
- Keep MiniMax prompts atomic (one action per clip); Veo 3 can handle longer layered actions.
- Run every finished sequence through a temporal de-flicker pass in Topaz Video AI before final delivery.
Next in this series: Text-to-Video Prompting Mastery: 15 Camera Movements That Actually Work — Day 07 goes deeper on camera control syntax across Runway, Luma, Sora, and Veo.
AgenticMedia Team
Content Creator • @agenticmedia
Writer and technology enthusiast sharing engineering playbooks and digital optimization guides.
