BD Qwen Character Edit
BD Qwen Character Edit bakes character consistency into the conditioning
- clip
- vae
- image
- image2
- image3
- conditioning
- image1
- image2
- image3
- latent
If you've been fighting character consistency the 2025 way - IP-Adapter, a face LoRA, a ControlNet, and a prayer - here's the 2026 answer: stop generating and start editing. Feed Qwen-Image-Edit one good image of your character plus a sentence, and it returns the same character in a new pose, outfit, or scene, because it's looking at the reference the whole time. That's the approach the community landed on, and BD Qwen Character Edit is the BrainDead pack's front door to it.
What it actually is
This is not a sampler and not a model loader. It's a conditioning encoder: you give it a clip, a prompt, and up to three reference images, and it hands you a CONDITIONING tensor ready for a Qwen-Image-Edit sampler. The "character consistency" isn't a separate trick - it's engineered into the system prompt it builds and the reference latents it attaches.
How it works
The node does three things in one pass. First, it builds the Qwen chat template: a system prompt (fully editable, see below) that tells the model which features are sacred - face shape, eye shape and spacing, hair, skin tone, tattoos - plus a user turn embedding each reference image as <|vision_start|><|image_pad|><|vision_end|> vision tokens. Second, it encodes your reference images through the VAE into latents and attaches them to the conditioning as reference_latents, so the diffusion model literally has your character's pixels in context. Third, it returns a latent (the first reference, VAE-encoded) so you can img2img if you want.
Those two toggles are worth knowing: enable_resize normalizes each reference to roughly a megapixel before VAE encode (keeps latency sane), and enable_vl_resize downscales to the ~384² the vision-language tokenizer expects. Leave both on unless you know why you're turning them off.
The inputs that matter
clip- your Qwen-Image-Edit CLIP. Load it the same way you'd load it for any Qwen-Edit graph.prompt- the edit instruction ("change the outfit to a red jacket", "turn the character to face left").system_template- the multiline text box with the entire character-preservation doctrine in it. This is the real tuning knob. Want stricter identity? Strengthen the wording. Want it to allow clothing changes? Say so.vae- optional, but wire it: without it there are no reference latents, just the vision tokens.image,image2,image3- up to three references. More isn't automatically better; one clean, high-quality shot beats three muddy ones.
Outputs: conditioning (into the sampler), image1/image2/image3 (the resized references, handy for preview), and latent.
Wiring it
Load Checkpoint / Qwen-Image-Edit → clip → BD Qwen Character Edit → conditioning → KSampler → VAE Decode
vae ↗ latent ↗
The heavy lifting isn't this node - it's the Qwen-Image-Edit model file, which the pack does not ship. The conditioning it emits is only as good as the checkpoint behind the clip.
Installing it
ComfyUI Manager: search "BrainDead" and install; requirements.txt is handled automatically. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt
Restart ComfyUI and the nodes appear under the 🧠BrainDead/Character category. This pack uses the newer ComfyUI V3 API, so keep ComfyUI itself reasonably current.
Common issues
The honest limit of instruction editing is structural: Qwen-Edit re-emits the whole frame, so on a long chain of edits the face can drift even with a locked reference. If you're doing 10-pose character sheets, expect to re-pin the identity reference occasionally, and bolt a mask back on when you need unmasked pixels to survive exactly. If results ignore your reference entirely, the usual suspects are a missing vae (no reference latents) or a mismatched CLIP/tokenizer for the Edit model - these nodes are picky about the checkpoint behind the wire.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | — | |
| system_template | STRING | <|im_start|>system You are a Prompt optimizer specialized in character consistency for image editing. Your primary goal is to preserve character identity while implementing requested changes. Character Consistency Priority (CRITICAL): 1. FACIAL FEATURES (HIGHEST PRIORITY): Preserve exact facial structure, face shape, jawline, cheekbones, nose shape, lip shape, eye shape and spacing 2. HAIR: Maintain hair texture, hairstyle, hair color, hair length, and any hair accessories or decorations 3. EYES: Keep exact eye color, eye shape, eyebrow shape and color, eyelash style 4. SKIN: Preserve skin tone, skin texture, any facial markings, freckles, moles, or scars 5. DISTINCTIVE FEATURES: Maintain tattoos, piercings, birthmarks, facial hair style, or unique characteristics 6. CLOTHING/STYLE: Adapt clothing and accessories as requested while keeping character recognizable Task Requirements: 1. When modifying the image, ALWAYS explicitly describe which facial and character features must remain unchanged 2. For brief inputs, add details that enhance the scene while strictly preserving all character-identifying features 3. If text rendering is required, enclose in quotes with position specification 4. Prioritize character recognition over scene/background changes 5. Limit response to 200 words, focusing on character preservation Process: First identify all distinctive character features from the input image, then explain how the requested changes will be applied while maintaining these exact features. Add "Ultra HD, 4K, cinematic composition" for quality enhancement.<|im_end|> <|im_start|>user <|vision_start|><|image_pad|><|vision_end|>{}<|im_end|> <|im_start|>assistant | — |
| vaeopt | VAE | — | |
| imageopt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| enable_resizeopt | BOOLEAN | true | — |
| enable_vl_resizeopt | BOOLEAN | true | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |
| image1 | IMAGE | — |
| image2 | IMAGE | — |
| image3 | IMAGE | — |
| latent | LATENT | — |