Your AI Manga Character Looks Different Every Panel? Face-Locking from Character Sheet to ControlNet/IP-Adapter/LoRA

The most maddening part of making manga with AI isn't "mangled anatomy or extra limbs"—it's the same character looking like a completely different person from one panel to the next: hair color drifts, eyes change, the facial structure changes, and you can't assemble one consistent page. This isn't the AI malfunctioning—it's how it works: every generation resamples a fresh character that fits your description in latent space, rather than "copying the character from last time." So locking the face means building an orthogonal tech stack: one set of anchors handles the character's identity (face/features), another handles pose/composition, locked separately so they don't interfere. This piece breaks down: a character sheet as reference, text anchors + tag weights, ControlNet for pose + IP-Adapter for face, a character LoRA, ADetailer for auto face fixes, plus multi-character bleed control.

Why AI image gen never remembers your character

Once you understand the root cause, you'll know where to set your anchors. Hand-drawing stays consistent because the artist remembers what the character looks like. The AI has no such memory—every generation is a one-off random sample in latent space, and even with the same prompt, a different seed, angle, or scene pulls a "roughly-right-but-different" character.

So it's not "the AI has a bad memory"—it's that you haven't given it enough constraint to copy the previous character. And one more crucial thing: "who they are" and "what they're doing" are two different things, locked with different anchors—lots of people cram both into one prompt and brute-force it, and the face breaks the moment the pose changes. The stack below splits these two axes and anchors each.

The AI manga character-consistency stack

Anchor 1: Make a "character sheet" first, and crop a clean reference source

The common mistake is skipping character design and generating panels straight away—every panel drifts. The right first step is to lock the character down: generate (or pick) a look you're happy with and put it in a character sheet with hair, eyes, outfit, and colors fixed.

But there's a practical trap: don't dump a whole "turnaround / three-view sheet" into the AI as reference—feeding those arms-out front/back/side rows into IP-Adapter or i2i mixes three angles' features and produces mangled anatomy / extra limbs. Instead, crop a "single front-facing, clean-background, high-res face/bust shot" from the sheet as your reference source. This clean reference is the origin point for every anchor that follows.

Anchor 2: Text anchors—specific features + tag weights + Negative

Turn the character's features into a fixed, specific, reproducible prompt you attach every time. The key is specificity + weight:

  • ❌ Vague: "short-haired girl, cute"—free to drift every time
  • ✅ Specific + weighted: (amber eyes:1.2), shoulder-length black hair, side ponytail, sailor collar + a Negative Prompt to exclude unwanted features (blonde, long hair)

Tag weight ((feature:1.2)) strengthens key features during sampling; Negative blocks the directions prone to drift. But text anchors alone drift no matter how detailed—it's the cheapest, bottom-layer anchor, so always stack the image anchors below.

Anchor 3: Locking the face vs. locking the pose—ControlNet and IP-Adapter are different things

This is the core of the stack, and where beginners confuse things most. "Image reference" is actually two completely different techniques locking different axes:

  • i2i (image-to-image): redraws based on the image you give, so it binds composition and pose tightly. Raise the denoising strength and the face drifts; lower it and you can't change the pose. So i2i is for "tweaking the same image," not for putting the same character in new panels with different poses.
  • IP-Adapter / InstantID / PuLID: inject the reference's face/feature vector, achieving "lock the face, not the pose"—the workhorse for keeping the same character across panels. Feed it the clean front-facing face cropped in Anchor 1.
  • ControlNet (OpenPose / Lineart / Depth): locks the pose and composition—the action and camera you drew in your storyboard/layout.

The right answer is an orthogonal combination: ControlNet locks this panel's pose/composition + IP-Adapter (or LoRA) locks the character's face/identity. One handles "what they're doing," the other "who they are"; lock the two axes separately and the same character can strike any pose and enter any scene with the same face.

Anchor 4: Train a dedicated character LoRA—the strongest anchor, for high-frequency characters

If a character appears in hundreds of panels (a serial lead), attaching IP-Adapter by hand every panel gets old. Here it's worth dropping the strongest anchor: train a LoRA dedicated to that character (a.k.a. training or "baking" a LoRA)—train on several images of them, attach it at generation, and the look is "baked into" the model.

It's advanced and higher-cost (prep training images, spend compute), but for a high-frequency lead, train once and every panel is stable after—least effort long-term. Side characters and extras don't need this; character sheet + text anchor + IP-Adapter is enough. A LoRA also stacks with ControlNet to lock face + pose together.

Anchor 5: ADetailer / FaceDetailer auto face fixes—the last-mile consistency

Even with anchors stacked, small distant faces and complex compositions occasionally break or drift. Don't manually inpaint panel by panel for the finish anymore—the current standard is ADetailer (SD WebUI) / FaceDetailer (ComfyUI Impact Pack): it auto-detects the face and re-renders it locally at generation, and you can attach the character LoRA during that re-render to restore face consistency. Build it into your pipeline as a fixed step and drifted faces get repaired automatically.

Multi-character panels: use Regional Prompting to stop feature bleed

Multi-character panels are where a raw prompt breaks most—two characters' features bleed (A's red hair leaks onto B). The fix isn't just "give each a reference image" but regional splitting: Regional Prompting / Attention Couple / Latent Couple divide the frame into regions, assign each region its own character's prompt and IP-Adapter, so A's features only act in A's region. Now a shared panel locks each face separately without cross-contamination.

Before / After: resampling every panel vs. orthogonal locking

No stack (❌)Orthogonal locking (✅)
Reference sourcewhole turnaround dumped in, extra limbssingle clean front-facing face cropped
Textvague promptspecific features + tag weights + Negative
Face/posemixed, breaks on pose changeControlNet for pose + IP-Adapter for face
High-frequency leadattached by hand every panelcharacter LoRA baked in
Finishhand-inpaint panel by panelADetailer auto face fix
Multi-character panelfeatures bleedRegional Prompting splits regions

Three common traps

  • Cramming "who they are" and "what they're doing" into one prompt: the face breaks when the pose changes. Lock pose with ControlNet, face with IP-Adapter/LoRA—two separate axes.
  • Using a whole turnaround as reference: the AI mixes the angles into mangled anatomy. Crop a single front-facing clean face/bust as the reference source.
  • Brute-forcing consistency with post-hoc manual inpainting: slow and prone to new breaks. Use ADetailer/FaceDetailer to auto-detect and fix, and build the fix into your pipeline.

The real fix: automate this stack, without wiring the nodes yourself

Everything above (character sheet → text anchors → ControlNet + IP-Adapter → LoRA → ADetailer → Regional Prompting) is technically doable, but here's the truth: wiring this whole node chain in ComfyUI yourself, tuning the parameters, and managing each character's reference source and LoRA is a high enough barrier that most people give up. The ceiling of doing it by hand isn't the tech—it's maintaining the pipeline itself.

LitMemo's manga generation wraps this face-locking stack into something ready to use: define your character (sheet, features, reference) in character management, and at each panel's generation the system automatically attaches that character's anchors and cross-references adjacent panels (bidirectional anchoring). You just draw the storyboard and specify "who does what in this panel"—face-locking, multi-character bleed control, and cross-panel consistency are handled, no wiring nodes, tweaking denoise strength, or training LoRAs required. It turns "character consistency" from "maintain a whole ComfyUI workflow yourself" into "pick a character and it stays stable."

Wrap-up

AI manga characters drift not because the AI has a bad memory, but because it resamples in latent space every time—you need an orthogonal stack that locks "face" and "pose" separately.

The key to face-locking: a clean character sheet as reference, specific features + tag weights, ControlNet for pose + IP-Adapter for face, a LoRA for high-frequency leads, ADetailer for auto fixes, and Regional Prompting to split multi-character panels. Split the two axes, stack the anchors, and the same character holds the same face in any pose and any scene.

Frequently Asked Questions

Why does my character look different every panel in AI manga?
Because every generation is a one-off random sample in latent space, not a copy of last time's character. Even with the same prompt, a different seed, angle, or scene pulls a different face. The fix is to stack anchors: a character-sheet reference, specific features + tag weights, IP-Adapter/LoRA to lock the face, and ControlNet to lock pose and face separately.
Can I keep a character consistent with prompts alone?
Prompting alone is rarely enough. However detailed and weighted your tags, it drifts. Stack an image anchor on the text: keeping the same character across panels is IP-Adapter/InstantID (locks the face, not the pose), not i2i (i2i binds composition and breaks the face on pose changes). High-frequency leads add a character LoRA.
What's the difference between i2i, IP-Adapter, ControlNet, and LoRA, and which locks the character?
i2i redraws and binds composition—good for tweaks, bad for pose changes. IP-Adapter/InstantID locks the face without locking the pose—the workhorse across panels. ControlNet locks pose/composition. LoRA bakes the character into the model—the strongest. The right answer to locking a character is "ControlNet for pose + IP-Adapter or LoRA for face," two separate axes.
How do I stop feature bleed between characters in one panel?
A raw prompt bleeds most in shared panels (A's hair color leaks onto B). The fix is regional splitting: Regional Prompting / Attention Couple / Latent Couple divide the frame into regions and assign each its own character's prompt and IP-Adapter, so features only act in that character's region.
If a face breaks in one panel, do I regenerate the whole panel?
No. Regenerating is slow and invites new breaks. Use ADetailer (SD WebUI) / FaceDetailer (ComfyUI) to auto-detect and locally re-render the face, attaching the character LoRA during the re-render to fix it back to consistent—faster and steadier than hand-inpainting, built into the finish as a fixed step.
I can't wire ControlNet/IP-Adapter/LoRA/ADetailer nodes in ComfyUI—is there a simpler way?
Yes. The stack itself is the barrier—node wiring, parameter tuning, and managing each character's reference and LoRA are where people give up. An integrated AI manga tool wraps face-locking into something ready to use: define the character and the system attaches the anchors at generation and cross-references adjacent panels for consistency; you just draw the storyboard and say who does what in this panel, without building the workflow yourself.