Nodes/COMFYUI-MODELINSTALLER/PMA Character Swap (Basic)
ComfyUI Node

PMA Character Swap (Basic)

The 'Character Swap' node that doesn't swap yet — but its control maps are useful

By Pis7i·Created 10 months ago·Updated 9 months ago· 0
PMA Character Swap (Basic)
  • reference_image
  • character_face
  • output_image
  • pose_preview
  • depth_preview
positive_prompthigh quality, detailed face, professional photo, 8k
negative_promptbad face, deformed, ugly, blurry, low quality, bad anatomy
pose_strength1.00
depth_strength0.70
face_strength0.85
seed0
canny_strength0.50

The honest review first

PMA Character Swap (Basic) is pitched as ControlNet-based face swapping: feed it a reference_image (the pose and scene you want to keep) plus a character_face, get back a picture of your character in that pose. That's the pitch. The reality, straight from the source code: the swap part isn't implemented. Right now the node extracts pose and depth maps from your reference image and returns the reference image untouched as its output_image. The code even prints a warning to your ComfyUI console: "This is a placeholder implementation."

I'm telling you this before anything else because it changes how you should use it. As a face-swap node, it's not there. As a one-shot ControlNet preprocessor - pose map, depth map, optional canny - it works, and that's the part worth knowing.

What it does (and what it doesn't)

It's a small node from the COMFYUI-MODELINSTALLER pack (the "PMA Utils" collection by a single hobbyist dev, with essentially no public footprint yet - treat it as an experiment). Inside, it runs OpenPose and depth extractors against reference_image, optionally canny too, and hands you the resulting control maps.

  • reference_image - the pose/scene you're keeping. This is the only image that actually gets processed.
  • character_face - the face you'd eventually want pasted in. Accepted, stored, and currently ignored.
  • pose_strength (0–2, default 1) / depth_strength (0–2, default 0.7) / canny_strength (0–2, default 0.5) - how much each control map should weigh further down the pipeline.
  • face_strength, seed, and the positive/negative prompt fields exist in the schema but aren't wired up yet.

Outputs: output_image (today that's just your reference image), pose_preview, and depth_preview. Those two previews are the useful part.

Why you'd reach for it

If you're building the classic "put character X into this pose and scene" workflow, you need pose and depth maps of the reference anyway - ControlNet conditions on structure, and this node hands you both maps in one step. From there the normal move is feeding them into ControlNet Apply nodes. For the identity side, the ecosystem's mature answer is IP-Adapter FaceID (generative, ArcFace embedding plus a companion LoRA) layered on top of the ControlNet structure, or a pixel-level post-process swapper like ReActor. Tellingly, the pack's own one-click model downloader stages ControlNet Union SDXL and IP-Adapter FaceID Plus v2 - exactly the stack this node is meant to eventually drive. It's a scaffold with the right parts in the room.

Install

Same as the rest of the pack: ComfyUI Manager → search COMFYUI-MODELINSTALLER, or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/Pis7i/COMFYUI-MODELINSTALLER

Restart ComfyUI and the node appears under PMA Utils/Character.

The real dependency to know about: the pose/depth extractors come from ComfyUI-ControlNet-Aux (Fannovel16's pack), not from this repo. Without it, the node logs an error and returns flat grayscale stand-ins. That's the most common way this node "silently does nothing."

Troubleshooting

  • Previews come out gray and flat - controlnet_aux isn't importable. Install ComfyUI-ControlNet-Aux and restart.
  • output_image looks identical to your input - expected, it's a placeholder, not a bug.
  • Watch the console - the [CharacterSwap] WARNING lines name exactly what's missing.

If you need a working face swap today, skip this and build the pipeline from native ControlNet + IP-Adapter FaceID nodes (or ReActor). This one is worth having for its control maps and its hints about where the pack is going - not for a finished swap.

CategoryPMA Utils/Character

Inputs (9)

NameTypeDefaultDescription
reference_imageIMAGE
character_faceIMAGE
positive_promptSTRINGhigh quality, detailed face, professional photo, 8k
negative_promptSTRINGbad face, deformed, ugly, blurry, low quality, bad anatomy
pose_strengthFLOAT1.000–2
depth_strengthFLOAT0.700–2
face_strengthFLOAT0.850–1
seedINT00–18446744073709550000
canny_strengthoptFLOAT0.500–2

Outputs (3)

NameTypeDescription
output_imageIMAGE
pose_previewIMAGE
depth_previewIMAGE