Nodes/ComfyUI-Advanced-ControlNet/ControlNet++ Input πŸ›‚πŸ…πŸ…’πŸ…
ComfyUI Node Runs on cloud

ControlNet++ Input πŸ›‚πŸ…πŸ…’πŸ…

Tag a condition image for a multi-control model

By KosinkadinkΒ·Created 3 years agoΒ·Updated 8 days agoΒ· 993
ControlNet++ Input πŸ›‚πŸ…πŸ…’πŸ…
  • image
  • prev_plus_input
  • PLUS_INPUT
β—„control_typeβ–Ύβ–Ί

ControlNet++ is the "one model, many conditions" style of ControlNet - a single union checkpoint that can take a depth map and a pose skeleton and a canny edge map at the same time. But the model has to be told which image is which. That's this node's whole job: you hand it one condition image and tell it what kind of condition that is, and it produces a tagged input that the ControlNet++ Multi loader knows how to route. Chain several of these together and you've described a full multi-condition setup.

Think of it as labeling. The model can accept a stack of conditions; each Input node is one labeled item in that stack.

How it works

A ControlNet++ union model was trained to recognize multiple condition types through one network, with learned fusion so the conditions blend without per-workflow tuning. To use more than one at once you build a list: each condition image gets paired with its type via an Input node, and the nodes chain through prev_plus_input so the list grows. The combined PLUS_INPUT then goes into the ControlNet++ Multi loader, which loads the model and assembles the conditions. For a single condition you can skip the chaining and use the ControlNet++ Single loader instead - this node is really about stacking two or more.

The inputs and outputs that matter

  • image (required, IMAGE) - one preprocessed condition map (a depth map, a pose skeleton, a canny edge image, and so on). Preprocess it the normal way first, with comfyui_controlnet_aux.
  • control_type (required, dropdown) - what kind of condition that image is. This is the label the union model uses to route it correctly. Match it to the map you actually fed in - a depth map tagged as pose won't behave.

Optional prev_plus_input (PLUS_INPUT) chains a previous Input node onto this one, which is how you accumulate multiple conditions.

Output is PLUS_INPUT - connect it to the next Input node's prev_plus_input (to add more), or into the plus_input of the Load ControlNet++ Model (Multi) node when the chain is complete.

How to install it

ComfyUI Manager: search ComfyUI-Advanced-ControlNet, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet

then restart. No dependencies for the node. You'll need a ControlNet++ / union model in ComfyUI/models/controlnet (xinsir's SDXL union ProMax is the canonical one) and the preprocessor pack Fannovel16/comfyui_controlnet_aux to build the condition maps.

Common issues & troubleshooting

Your conditions are getting crossed. Almost always a mislabeled control_type - the tag has to match the map. Double-check each Input node names the condition you actually plugged into it.

Only one condition seems to apply. You didn't chain them. Each Input node's PLUS_INPUT output must feed the next node's prev_plus_input; the final one goes to the Multi loader. A broken chain means only the last link survives.

You only have one condition. Then you don't need the Input/Multi pair at all - use Load ControlNet++ Model (Single), which takes the image and type directly.

CategoryAdv-ControlNet πŸ›‚πŸ…πŸ…’πŸ…/ControlNet++

Inputs (3)

NameTypeDefaultDescription
imageIMAGEβ€”
control_typeCOMBO8 options: openpose, depth, hed/pidi/scribble/ted, canny/lineart/mlsd, normal, segment, +2
prev_plus_inputoptPLUS_INPUTβ€”

Outputs (1)

NameTypeDescription
PLUS_INPUTPLUS_INPUTβ€”