Back to Playlist · VidFarm Walkthrough Tutorial
Part 23 of 33Edit Demo — Animate Static Book7 min read
Character consistency

Keep the same face and outfit in every generated shot

Consistency isn't luck — it's mechanical. Lock your character once into a sprite card, save it as a durable trio in My Files, then feed that same reference into every image and video you generate.

Copies the whole guide — prompts, next steps & all — for your AI agent
Watch this chapter
Build a character sprite card from a couple of real photos, save the trio, and prove the same character survives across three different generated shots.

Key takeaways

  • A character lives at /files/characters/<slug>/ as a trio: a JSON manifest, a sprite card PNG, and an about doc.
  • The sprite card is one reference sheet — front/side/back + a face close-up on a neutral background.
  • Every generation featuring the character passes the same sprite card as the reference input.
  • Look before you generate — list the character folder first; never re-imagine a saved character from memory.

Why characters drift — and how to stop it

If you ask a model for "the same girl" three times, you get three different people. The fix is to stop relying on the model's memory and start relying on a reference image. You build the character once, save it, and then attach that exact image to every generation. The model conditions on it, and the face, hair, and wardrobe carry through.

VidFarm gives every recurring character a permanent home in My Files at /files/characters/<slug>/. It holds three files that work together:

The reference sheetBuild the sprite card

The character_sprite_card.png is the single most important asset. It's the reference you'll attach forever after, so it needs every angle the model might have to reconstruct: front, side, back, and a tight face close-up, all on a clean neutral background.

  1. Name it and derive a slug

    Agree a name and turn it into a URL-safe slug (lowercase, hyphens). "Zara the fox mascot" becomes zara, and the folder becomes /files/characters/zara/.

  2. Gather the spec conversationally

    In Chat or the editor copilot, describe the character: appearance, wardrobe, signature colors, personality, voice, do's and don'ts. If you already have reference photos, hand them over — the copilot pulls detail straight from them.

  3. Mint the sprite card (image generation is cheap)

    Chat: "Generate a character reference sheet for Zara — full body front, side, and back plus a face close-up, on a neutral gray background. Teal bomber jacket, cream chest fluff." The copilot calls POST /api/v1/primitives/images/generate with your real photos as prompt_attachments. Because it's image generation, you can stack several reference photos and iterate cheaply until it's right.

  4. Save the trio and annotate it

    Save the finished PNG as character_sprite_card.png under /files/characters/zara/, then write character_zara.json and character_about.md beside it. Add notes to all three naming the character — the notes are embedded on save, so a semantic search like "our fox mascot" recovers the card from any phrasing later.

Illustration
Character sprite card for Maya: full-body front, side and back turnaround, a face close-up, and a strip of happy / surprised / thinking / confident expressions, on a neutral studio background
character_maya.json Look mid-20s, warm smile, freckles Wardrobe mustard hoodie, gold hoops Voice upbeat, fast, friendly
Maya's sprite card: one reference sheet — front, side, back, face + expressions — the AI conditions every shot on.
The My Files explorer open at /files/characters/zara/ showing three files: character_zara.json, character_sprite_card.png, and character_about.md, each with an annotation note describing Zara.
The durable trio in My Files. The manifest, the sprite card, and the about doc live together at /files/characters/zara/.

Use the same reference on every generation

Once the card exists, the rule is simple and unchanging: every generation featuring the character passes the sprite card's viewUrl as the reference, and you lift wording from the manifest into the prompt.

Where the reference goes depends on what you're generating:

Heads up Video conditioning is effectively single-reference. On the two default video providers (OpenAI's Sora and Gemini's Veo) only the first reference image is used — the array is collapsed. So for a character video, pick the single strongest sprite-card view and restate the character's appearance hard in the text prompt. (OpenRouter/Seedance does pass the whole array; and image generation stacks multiple references fine — this limit only bites video on OpenAI/Gemini.)
Illustration
Without a referenceThree portrait panels, each a different-looking personA different person every shot
With a sprite cardMaya's character sprite card — front, side, back and face close-up of the same characterThe same character, on model
Reference images keep the same face & outfit across every generated shot.
Note Look before you generate. Always browse_files the character folder first and read the manifest — never re-imagine a saved character from memory, because that's exactly how characters drift off-model. If you rename or move the folder, update id, sprite_card_path, and about_path inside the manifest and rename the .json to match.
What it costs Building and refining the sprite card is image generation — cheap. If the card came out on a flat background and you want a clean transparent cutout, run the cheap greenscreen removal rather than the wallet-billed messy-background remover. Generating the card at all needs a BYOK image key — a free NVIDIA "lite" key can plan the character but can't mint the card.

Where to go next

A consistent character is the prerequisite for every multi-shot story. Use it to animate a still, replace an actor, or run a whole drama series with a recurring cast.

Lock your character now

Open My Files, mint a sprite card, and save the trio. From then on, every shot that features your character stays on-model — because you feed it the same reference every time.

Open My Files