ποΈ Multi-ControlnetUnion
The mode-picker stack
- multicontrolnet_stack
- image_1
- image_2
- image_3
- multicontrolnet_stack
Union ControlNets changed the install story in a way worth understanding before you touch this node. Instead of one .safetensors per condition - a canny model here, a depth model there, a pose model somewhere else - a union is a single checkpoint that handles most or all of them, and you pick the mode at inference time. MultiControlnetUnion is the pack's stack builder for exactly that situation. It looks almost identical to its sibling MultiControlnet, with one crucial difference: each unit gets a controlnet_type_N dropdown instead of just a file picker.
How it works
The controlnet_type menu is the interesting bit:
auto Β· openpose Β· depth Β· hed/pidi/scribble/ted Β· canny/lineart/anime_lineart/mlsd Β· normal Β· segment Β· tile Β· repaint
That's the mode you're asking the union model to run in for that unit. auto lets the model guess the condition type from the image you feed it; the others are explicit. Notice the shape of the list - it's SDXL-union flavored, covering the twelve-condition xinsir-style menu including normal, segment, and repaint (the mask-driven inpaint mode).
The required inputs are controlnet (pick the union file from models/controlnet) and add_more_switches - a toggle that reveals the second and third unit slots. That's the pack's pattern for keeping the node compact: the switches exist on the node, but they're hidden until you say you want them. The per-unit inputs match MultiControlnet exactly - switch_N, controlnet_strength_N, start_percent_N, end_percent_N, image_N - and the output is the same multicontrolnet_stack type that feeds into MultiControlnetApply.
The input that matters
For beginners, it's the mode dropdown, and the mistake is choosing a mode your model can't do. A modern Flux-2 or Z-Image union covers canny, depth, pose, scribble-ish edges, gray - but not segment or normal, which exist on the SDXL union. The mode list here is the union menu in general, not a promise about your specific file. If you select normal and the union wasn't trained on normals, you'll get garbage or silence. Check the model card before assuming the dropdown is gospel.
Everything else is the familiar ControlNet stack flow: per-unit strength, per-unit start/end window (end early to let the model add detail), toggle switches for A/B testing, and the same daisy-chaining multicontrolnet_stack input if three slots aren't enough.
Install
ComfyUI Manager β search ComfyUI-NeuralMedia, or:
cd ComfyUI/custom_nodes
git clone https://github.com/YarvixPA/ComfyUI-NeuralMedia
cd ComfyUI-NeuralMedia
pip install -r requirements.txt
Restart ComfyUI. Same pack, same author (YarvixPA, the FLUX.1-Fill-GGUF quantizer), same note as the other pack nodes: if the repo URL 404s during a manual clone, install through Manager.
One more honest note
Union strength has come down since the SD 1.5 era. The old 1.0 default overcooks on modern unions - the published recommendations run 0.65β0.8 for the Fun unions and 0.8β1.0 for Qwen's. Treat the node's 1.0 default as a starting guess, not a target. And if you're on a union, you generally don't need to tune the blend the way you did with separate files - that's the entire appeal.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| add_more_switches | BOOLEAN | false | β |
| controlnet | COMBO | 1 options: None | |
| multicontrolnet_stackopt | MULTICONTROLNET_STACK | β | |
| switch_1opt | BOOLEAN | false | β |
| controlnet_type_1opt | COMBO | 9 options: auto, openpose, depth, hed/pidi/scribble/ted, canny/lineart/anime_lineart/mlsd, normal, +3 | |
| controlnet_strength_1opt | FLOAT | 1.00-10β10 | β |
| start_percent_1opt | FLOAT | 0.0000β1 | β |
| end_percent_1opt | FLOAT | 1.0000β1 | β |
| image_1opt | IMAGE | β | |
| switch_2opt | BOOLEAN | false | β |
| controlnet_type_2opt | COMBO | 9 options: auto, openpose, depth, hed/pidi/scribble/ted, canny/lineart/anime_lineart/mlsd, normal, +3 | |
| controlnet_strength_2opt | FLOAT | 1.00-10β10 | β |
| start_percent_2opt | FLOAT | 0.0000β1 | β |
| end_percent_2opt | FLOAT | 1.0000β1 | β |
| image_2opt | IMAGE | β | |
| switch_3opt | BOOLEAN | false | β |
| controlnet_type_3opt | COMBO | 9 options: auto, openpose, depth, hed/pidi/scribble/ted, canny/lineart/anime_lineart/mlsd, normal, +3 | |
| controlnet_strength_3opt | FLOAT | 1.00-10β10 | β |
| start_percent_3opt | FLOAT | 0.0000β1 | β |
| end_percent_3opt | FLOAT | 1.0000β1 | β |
| image_3opt | IMAGE | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| multicontrolnet_stack | MULTICONTROLNET_STACK | β |