Apply Advanced ControlNet(1) ππ π π
One conditioning stream in, one out
- conditioning
- control_net
- image
- mask_optional
- timestep_kf
- latent_kf_override
- weights_override
- vae_optional
- CONDITIONING
- model_opt
This is the single-conditioning cousin of the main apply node. Instead of taking a positive and a negative and returning both, it takes one conditioning stream in and returns one out. That fits the workflows - and the newer base models - where you carry a single conditioning line rather than the classic positive/negative pair, and it's tidier when you're stacking several ControlNets in a row and don't want to drag two wires through each one.
Everything the pack is known for still applies: strength scheduling across sampling steps, per-frame latent keyframes, attention masks, custom weights. This node is just the one-lane version of the apply step.
How it works
It applies a loaded ControlNet to your single conditioning, auto-converting whatever model you pass into the Advanced version so all the pack's features light up. The start_percent/end_percent window controls when during denoising the guidance is active; the optional keyframe and weight inputs shape how it behaves inside that window. Because you can chain these - the output conditioning of one straight into the input of the next - building a multi-ControlNet stack is just repeating the node, each with its own control image and schedule.
The inputs and outputs that matter
Required: conditioning (your single stream), control_net, image (the preprocessed control map), then strength (default 1.0, up to 10), start_percent, and end_percent. In practice you'll set strength and the timing window and leave the rest alone. Start below 1.0 on modern union models.
Optional: mask_optional (attention mask for where the control lands), timestep_kf (a timestep-keyframe schedule), latent_kf_override and weights_override (shortcuts for latent keyframes or custom weights on their own), and vae_optional for control types that need a VAE.
Outputs are conditioning - feed it onward to the next apply node or into your sampler - and model_opt, the patched MODEL. That second output matters: if you're running SparseCtrl, SVD-ControlNet, or Anima LLLite, the control lives in the model, so you have to route model_opt into your KSampler or nothing happens. For a plain canny/depth/pose ControlNet you can ignore it.
How to install it
ComfyUI Manager: search ComfyUI-Advanced-ControlNet, install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet
then restart. No heavy dependencies. The pack gives you the nodes; the ControlNet model files go in ComfyUI/models/controlnet, and the preprocessors that generate your control maps come from Fannovel16/comfyui_controlnet_aux.
Common issues & troubleshooting
You're not sure whether to use this or the two-conditioning node. Simple rule: if your graph runs a combined positive+negative pair, use the regular Apply Advanced ControlNet v2; if you're on a single-conditioning line, use this. Mixing them means an extra convert somewhere.
SparseCtrl or Anima does nothing. You skipped the model_opt wire. That output is the whole point of it existing on this node - the model-patching controls need it to reach the sampler.
Stacked controls fight each other. When you chain several, each still has an independent strength and step window. If the result is muddy, pull one back rather than raising them all; ending some earlier than others (via end_percent) usually untangles it.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | β | |
| control_net | CONTROL_NET | β | |
| image | IMAGE | β | |
| strength | FLOAT | 1.000β10 | β |
| start_percent | FLOAT | 0.0000β1 | β |
| end_percent | FLOAT | 1.0000β1 | β |
| mask_optionalopt | MASK | β | |
| timestep_kfopt | TIMESTEP_KEYFRAME | β | |
| latent_kf_overrideopt | LATENT_KEYFRAME | β | |
| weights_overrideopt | CONTROL_NET_WEIGHTS | β | |
| vae_optionalopt | VAE | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | β |
| model_opt | MODEL | β |