OmniChar .char Model: Keeping AI Video Characters' Faces, Bodies, and Outfits Consistent

OmniChar encodes character features into .char files for consistent AI video generation across scenes.
OmniChar is an open-source character consistency solution that encodes a virtual character's face, body, and outfit into a single portable `.char` file. It chains YuNet (face detection), SFace (face signature extraction and cross-validation), and DINOv2 (holistic subject feature extraction) for feature engineering, then injects references via Flux's native multi-reference channel with a prepended character description to achieve stable output in Minimax H3 video generation. The key usage principle is to trigger characters by name and never re-describe already-encoded features in generation prompts. Running locally requires 24GB+ VRAM and 64GB RAM; the project is open-sourced under GPLv3.
Character consistency has long been one of the most frustrating problems in AI image and video generation. The same character in a different scene or pose ends up with a different face or a completely different outfit. A Reddit developer tackled this pain point by building an open-source solution called OmniChar, which encapsulates a character's facial, body, and clothing features into a portable .char file, then feeds it into the Minimax H3 video generation pipeline to produce stable, consistent characters across shots.

What Is a .char Model
.char is a character encapsulation format designed by the author. The core idea is to encode all the key attributes of a virtual character — face, body, and outfit — into a single, portable file. During generation, you simply reference this file and pair it with a minimal prompt to reproduce the same character.
The author recommends using up to 9 reference images, distributed at a 2:2:1 ratio (face:outfit:body). Facial references are required; body and outfit references are optional. This structured slot-based design helps the model know exactly which category each feature should be sampled from.
How the Underlying Technology Works
From a technical standpoint, building a .char file chains together several well-established vision models:
- YuNet locates faces in the reference images;
- SFace extracts a face signature for each reference image;
- DINOv2 extracts an overall subject feature signature;
- Reference images are cleaned and normalized, then packed into a single
.charfile.
At generation time, the file feeds the reference images into Flux's native multi-reference channel and automatically prepends a locked character description to the prompt. This combination of "description prepending + multi-reference injection" is the key mechanism that prevents character drift.
Notably, SFace performs automatic cross-validation of facial images, maintaining consistent face signatures across multiple reference images.
Each of these models has a distinct technical background. YuNet is a lightweight face detection network developed by the Institute of Computing Technology at the Chinese Academy of Sciences. It achieves high-accuracy face localization at minimal computational cost, making it well-suited for fast batch processing of reference images in a pipeline. SFace is a sphere-constrained face recognition model whose core strength lies in stable feature extraction even in open-set scenarios — faces not seen during training — making it particularly reliable for user-defined characters. DINOv2 is a self-supervised visual foundation model from Meta Research that learns general visual representations without labeled data, offering significantly better encoding of overall silhouette, pose, and clothing texture compared to traditional supervised models. Chaining these three together — local face localization, cross-image face consistency validation, and holistic subject feature extraction — forms the feature engineering foundation that allows .char files to reliably reproduce a character.
Key Prompting Practices
The author's prompting guide is remarkably practical and highlights a counterintuitive truth about tools like this: less description is more accurate.
Name Your Character and Trigger by Name
Give your character a name in the encode character node — the author uses sia, for example. When generating, simply write sia walking on the beach, and the model will automatically invoke all the character's encoded features.
Don't Repeat Already-Encoded Features
This is the most common mistake. If you write something like "a woman" or "black hair" in the generation prompt — features already encoded in the .char file — you'll actually mislead the output. All character attributes should be defined in the encode character prompt; the generation prompt is only for directing the scene, not re-describing the character.
Handling Outfit Drift
If you want to specify a particular style (e.g., short sleeves, sleeveless), add it to the generation prompt. The author honestly acknowledges that outfits can drift slightly — because body reference images also contain clothing, which can interfere with the outfit reference. The fix is to keep each reference image focused on a single responsibility: face images shouldn't include the body, body images shouldn't include the face, and outfit images should follow the same rule.
Hardware Requirements and Workflow
Running this solution locally requires fairly substantial hardware:
- NVIDIA GPU: 24GB+ VRAM
- System RAM: 64GB
For the workflow, static images use Flux 2 Klein, and video generation uses Minimax H3. The author specifically notes that Minimax H3 now supports an int8 quantized model variant, which is good news for users with limited VRAM. In the demonstrated examples, faces are generated with Flux Klein 9b, while outfit images are taken directly from the Zara website — suggesting the pipeline is compatible with real-world e-commerce assets.
The project is open-sourced under GPLv3 at github.com/omnichar/OmniChar.
Int8 quantization is an inference optimization technique that compresses model weights from 32-bit or 16-bit floating point to 8-bit integers. This typically reduces model size and VRAM usage by roughly 50% and improves inference speed, at the cost of a slight loss in precision. For a large video generation model like Minimax H3, int8 quantization means a model that would otherwise require 48GB or more of VRAM can now run on a consumer-grade 24GB GPU. Flux 2 Klein is a distilled variant of the Flux series from Black Forest Labs that uses a Flow Matching framework with fewer sampling steps to accelerate static image generation, while preserving Flux's native multi-reference injection channel — the technical prerequisite that allows OmniChar to feed multiple reference images from a .char file directly into the generation pipeline.
Limitations and Practical Advice
The author is candid about the solution's boundaries. The primary limitation is reference image conflicts: if two reference or input images contain different faces, the generation may produce conflicting results. This is why providing well-cropped body and outfit images is critical — it allows the model to sample precisely what it needs from each slot, avoiding cross-slot contamination like faces leaking into the outfit slot or clothing leaking into the face slot.
Once a character is built, the .char file is portable: pair it with a simple prompt and a new scene image, and the same character can be reused across different contexts. This is the core value of this kind of encapsulation approach over re-tuning parameters every time — transforming one-time feature engineering into a reusable asset.
Conclusion
OmniChar offers a pragmatic path to character consistency: YuNet, SFace, and DINOv2 for feature extraction; .char for encapsulation; Flux's multi-reference channel and Minimax H3 for generation. It doesn't aim for "one-click output" — instead, it keeps character drift within an acceptable range through structured reference image management and disciplined prompting. For creators who need to produce large volumes of content featuring the same virtual character, this open-source, portable approach is well worth exploring.
Related articles

Free Unlimited Claude Code Solution: Agnes AI + CC Switch Setup Guide
No paid subscription needed — pair the free AI platform Agnes AI with the open-source tool CC Switch to provide a backend for Claude Code, enabling unlimited free calls to text, image, and video models. This guide covers the full setup, test results, and usage boundaries.

A Complete Zero-Cost Guide to Getting Started with Claude Code for Beginners in China
A beginner's guide to Claude Code for users in China: two installation methods (command line and IDE plugin), full configuration steps for replacing the official API with the free domestic LongCat model, and a hands-on demo of building a small tool with natural language, plus tips.

When the NSA Gets Involved: The AI Supply Chain Crisis Behind Open-Source CVEs and API Key Hijacking
Multiple open-source projects disclosed severe CVEs in one day, PHP flaws alarmed the FBI, and Railway and OpenCode were breached with API keys stolen. This article breaks down the vulnerability window, AI-accelerated exploitation, and the AI supply chain crisis behind the API key black market, with a developer defense checklist.