DP ControlNet Apply Advanced
Apply a ControlNet with a strength and step-range dial
- positive
- negative
- control_net
- image
- positive
- negative
- control_info
This is Desert Pixel's take on the node that actually wires a ControlNet into your generation. If you've used core ComfyUI's "Apply ControlNet (Advanced)", you already know the shape of it: you feed in your positive and negative conditioning, a loaded ControlNet, and a preprocessed control image, and it hands back conditioning that's been steered toward the structure in that image. The one thing DP adds on top is a control_info text output that reports back what it applied - handy when you're stacking a couple of these and want a readout instead of guessing.
The reason you reach for ControlNet at all: it's the difference between "make a person" and "make a person in this exact pose." As our ControlNet notes put it, it lets you control what gets generated with the prompt and where it goes with the map. The key thing beginners miss is that the image input isn't your reference photo - it's the preprocessed map: a canny edge image, a depth map, an openpose skeleton. You make that upstream (the Aux Preprocessors pack does it) and this node consumes it.
The inputs that matter
strength(0–10, default 1) - how hard the ControlNet pushes. Here's the thing worth knowing: the old SD 1.5 habit of parking this at 1.0 overcooks the modern union models. Flux and Qwen unions publish recommended scales down around 0.65–0.9. If your output looks stiff, traced, or fried, this is the first knob to pull down.start_percent/end_percent(0–1) - when during denoising the control is active. This is the sleeper setting. Start at 0 and end around 0.5 and the ControlNet locks composition early, then lets go so the model fills in its own detail. The community's standing advice for structure-heavy work is exactly that: release the condition once the layout has formed. Holding it to 1.0 the whole way is what makes results feel over-constrained.
The other three (positive, negative, control_net, image) are just wiring - conditioning in from your CLIP encode, the ControlNet from a loader, the map from a preprocessor.
Outputs are positive and negative conditioning (wire both into your KSampler) plus control_info (a string you can route to a text preview if you want to see what happened).
How to install it
ComfyUI Manager is the easy path: open Manager, search ComfyUI-Desert-Pixel-Nodes, install, restart. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/DesertPixelAi/ComfyUI-Desert-Pixel-Nodes
then restart. There's no model to download for the node itself, but you do need an actual ControlNet checkpoint loaded (a Load ControlNet Model node feeding control_net) and something producing the preprocessed map. The Desert Pixel pack is a big one-author grab-bag - you'll find these under the "DP" / "Desert Pixel" prefix in the node search.
Common issues & troubleshooting
Nothing changes / the control barely bites. Two usual causes: your image is the raw reference instead of a preprocessed map, or your ControlNet file doesn't match your base model. An SD-era ControlNet will not load on Flux, Qwen, or Z-Image - every architecture needs its own set, trained from scratch. Match the ControlNet to the checkpoint.
Output looks traced and lifeless. Strength too high for a modern union. Drop toward 0.7 and set end_percent to ~0.5 so the model gets the back half of the sample to itself.
You wanted 40% of a pose and the edit model couldn't do it. That's the whole case for using ControlNet over an instruction-edit model - you get a real strength dial and step range, and you can stack conditions. If you only need one condition described in a sentence, an edit model is less hassle; if you need partial strength or two maps blended, this is the tool.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| control_net | CONTROL_NET | — | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| control_info | STRING | — |