ComfyUI Node

Character Repair

The Cleanup Pass That Keeps the Face Yours

By Spit8·Created 2 months ago·Updated 2 months ago· 1
Character Repair
  • image
  • character
  • model
  • clip
  • vae
  • ipadapter
  • clip_vision
  • mask
  • control_net
  • pose_image
  • image
positivesame character, clean details, fix hands, sharp lines, consistent outfit
negativeblurry, deformed, different character, extra limbs
seed0
steps20
cfg5.5
sampler_name
scheduler
denoise0.45
ipadapter_weight0.70
controlnet_strength0.85

Pose transfer is rarely one clean step. You warp or blend a pose onto a sprite, and suddenly the hands are mush, an arm has an extra joint, or the palette shifted a shade. CP_CharacterRepair is the scrub brush: a light img2img pass that fixes the artifacts while keeping the character recognizable - with an optional ControlNet lock so the cleanup doesn't drift your pose back to the starting one.

In the pack's mental model, this is the second half of the recommended Warp path: CP_WarpToPose (method none, sticks blended) produces a guided image with visible imperfections, and Repair runs over it at low denoise to finish the job.

How it works

It's a KSampler from the encoded latent of your input image at a deliberately low denoise (default 0.45), conditioned on your positive/negative strings. Identity comes from IP-Adapter fed your character's reference image. If you supply control_net + pose_image, it applies an OpenPose ControlNet condition before sampling, so the repaired image is held to the target pose instead of easing back toward the source.

The default denoise is the whole trick. High denoise = new image, character gone. Low denoise = cosmetic fix, character intact. 0.45 is the sweet spot the author landed on for "clean this up, don't redraw it."

The inputs that matter

  • image - the messy result to repair (e.g. CP_WarpToPose's guided).
  • character - supplies the identity reference for IP-Adapter.
  • model / clip / vae - SDXL stack, same as CP_CharacterRender.
  • denoise - default 0.45. Keep it under ~0.6 or you're asking for a different character.
  • ipadapter_weight - 0.7 default.
  • mask - optional; repair only the masked region.
  • control_net / pose_image / controlnet_strength - optional pose lock. controlnet_strength defaults to 0.85.

Output: image. Done.

Installing

Part of Spit8/_ComfyUI_CharacterPose:

cd ComfyUI/custom_nodes
git clone https://github.com/Spit8/_ComfyUI_CharacterPose
pip install -r _ComfyUI_CharacterPose/requirements.txt

IP-Adapter support needs ComfyUI_IPAdapter_plus installed, same as the Render node. Restart ComfyUI; it's under CharacterPose/Render.

Gotchas

  • The ControlNet architecture must match the checkpoint - SDXL model, SDXL ControlNet. Same footgun as CP_CharacterRender, same fix.
  • Denoise too high and you lose the character; that's the single most common repair mistake. If the output looks like a stranger, the answer is less denoise, not more.
  • If denoise hits 0, the node just returns the input image untouched - a safe no-op, but confusing if you expected something to happen.
  • The optional ControlNet lock is genuinely worth wiring: without it, img2img cleanup at 0.45 denoise has plenty of freedom to drift limbs back toward the source pose.

This is the node that makes the "warp-then-clean" path actually work. Small, surgical, and the one you'll reach for every time a pose transfer is almost right.

CategoryCharacterPose/Render

Inputs (20)

NameTypeDefaultDescription
imageIMAGE
characterCHARACTER
modelMODEL
clipCLIP
vaeVAE
positiveSTRINGsame character, clean details, fix hands, sharp lines, consistent outfit
negativeSTRINGblurry, deformed, different character, extra limbs
seedINT00–18446744073709550000
stepsINT201–100
cfgFLOAT5.50–30
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.450–1
ipadapter_weightFLOAT0.700–2
ipadapteroptIPADAPTER
clip_visionoptCLIP_VISION
maskoptMASK
control_netoptCONTROL_NET
pose_imageoptIMAGE
controlnet_strengthoptFLOAT0.850–2

Outputs (1)

NameTypeDescription
imageIMAGE