Optimizing ComfyUI Workflows for Consistent Character Generation using IP-Adapter
The secret is using the IP-Adapter-Plus-Face model combined with a precise weight strategy. If you leave the weight at 1.0, the AI often copies the background and lighting of your reference image, which kills your flexibility.
Here is the specific node logic I use to keep characters locked in:
The Core Setup
Load IPAdapter Model: Use ip-adapter-plus-face_sdxl_vit-h. This is specifically tuned for facial features.
IPAdapter Unified Loader: Connect this to your model and CLIP.
Image Input: Feed your high-res reference portrait here. I recommend a clear, front-facing shot with neutral lighting.
To stop the "style bleed" where the AI copies the reference image's color palette, I use a Weight Schedule. Instead of a flat weight, I use a Custom IP-Adapter node (from the ComfyUI_IPAdapter_Plus pack) and set the weight to 0.6 - 0.8.
# This isn't code you run, but the logic for your node settings:
Weight: 0.7
Noise: 0.0
Start At: 0.0
End At: 0.8 # Stop the adapter before the final sampling steps to let the prompt refine detailsOne major gotcha: if your character starts looking like a plastic doll, your IP-Adapter weight is too high or your prompt is too weak. I've found that adding a "strong" text prompt describing the character's traits (e.g., "freckles, sharp jawline, messy brown hair") actually helps the IP-Adapter anchor the identity more accurately. It creates a synergy between the visual reference and the text token.
For those struggling with clothing consistency, don't try to do it all with one IP-Adapter. Use a Dual IP-Adapter setup.
The Dual-Stream Workflow
Stream 1 (Face): Use ip-adapter-plus-face at 0.7 weight. This handles the identity.
Stream 2 (Clothing/Style): Use a standard ip-adapter-plus with a reference image of the outfit. Set this weight lower, around 0.4.
By splitting these, you can change the "Clothing" reference image while keeping the "Face" reference image the same, effectively swapping outfits while keeping the person identical.
If you're still seeing slight drifts in the face, pipe the final output through a FaceDetailer (Impact Pack). Set the guide_size to 256 and use a low denoise (0.3 - 0.4). This doesn't just sharpen the image; it re-projects the IP-Adapter's influence onto the face in a high-resolution pass, which usually fixes any "uncanny valley" glitches.
My current productivity gain from this setup is that I no longer spend three hours training a LoRA for a single character. I can just grab 2-3 reference photos and have a consistent asset in minutes.
All Replies (0)
No replies yet — be the first!
