Nodes/ComfyUI TK3R Extensions/TK3R Qwen Image DiffSynth ControlNet Advanced (Custom)
ComfyUI Node

TK3R Qwen Image DiffSynth ControlNet Advanced (Custom)

Start, stop, and fade the Qwen-Image DiffSynth ControlNet

By TK3R·Created 7 months ago·Updated 7 months ago· 2
TK3R Qwen Image DiffSynth ControlNet Advanced (Custom)
  • model
  • model_patch
  • vae
  • image
  • mask
  • MODEL
strength1.00
start_percent0.00
stop_percent1.00
decaynone

ComfyUI's native QwenImageDiffsynthControlnet applies a DiffSynth ControlNet to a Qwen-Image model - but it hands you one strength slider and no timing. You get full control for the whole sample or nothing. TK3R's advanced version adds what the stock node lacks: start_percent, stop_percent, and a decay curve, so you can decide when the controlnet bites and how hard it fades.

That timing is the whole point, and it's the same trick the ControlNet crowd has been running for years: hold the condition while composition forms, then release it so the model can do detail. The author's own framing nails it - cut the controlnet off earlier and the model fills in the finer details; cut it off very early and the controlnet is only guiding the general composition. On a 20B model that's a meaningful difference in the final image, not a micro-optimization.

How it works

Modern DiT controlnets don't work the way SD-era ones do. Instead of a duplicated encoder feeding skip connections, this one patches the model's transformer blocks directly: the controlnet model is loaded as a MODEL_PATCH, and the node wraps it in a block patch that injects the control image's encoded condition at the double-block layers. The advanced part is that each step's injection is scaled by strength * multiplier, where the multiplier comes from where the current sigma sits in the window between start_percent and stop_percent. The decay options are the standard menu: none (instant cutoff), linear, cosine, exponential (fast initial decay), and inverse_exponential (slow initial decay).

Inputs and output

  • model - your Qwen-Image model.
  • model_patch - the DiffSynth ControlNet, loaded as a MODEL_PATCH (this is the controlnet weights, separate from the base model).
  • vae - the Qwen VAE; it's used to encode the control image into the latent space the patch works in.
  • image - the control image (canny, depth, pose map, etc.).
  • strength - −10 to 10, default 1. Note the negative range, which the stock node doesn't offer - handy if you want to subtract a condition.
  • start_percent / stop_percent - 0–1. stop_percent is the one to play with first.
  • decay - the curve menu.
  • mask (optional) - limits where the control applies.

Output is a single patched MODEL, which wires into the sampler - and, usefully, into another one of these nodes.

A tip that took the community a while

You can chain these. Because the node returns a patched model, connecting its output into the model input of another copy stacks multiple controlnets - depth from one image, pose from another, each with its own strength and stop point. People report this works much better than blending two preprocessed images into one. TK3R's decay and stop controls make stacking even more practical, since each unit gets its own timing.

Installing

Part of the TK3R Extensions pack:

  • ComfyUI Manager → search "TK3R Extensions" → Install, then restart.
  • Or cd ComfyUI/custom_nodes && git clone https://github.com/TK3R/ComfyUI_TK3R_Ext and restart.

The node itself needs only rich. The heavy lifting is the models: you need a Qwen-Image checkpoint, its VAE, and the DiffSynth ControlNet file (from the Qwen/InstantX family, or wherever your workflow pulls it from). This node doesn't download any of those - bring your own, same as the stock version.

Where people get burned

Forgetting that model_patch is a separate input from model is the top mistake - wire the controlnet weights there, not into model. And remember the strength scale: the modern union-style controlnets publish lower weights than the old 1.0 default, so starting at 1.0 may overcook it. Drop strength to ~0.8 and set stop_percent to 0.75–0.85 before you blame the model.

CategoryTK3R/Advanced

Inputs (9)

NameTypeDefaultDescription
modelMODEL
model_patchMODEL_PATCH
vaeVAE
imageIMAGE
strengthFLOAT1.00-10–10
start_percentFLOAT0.000–1
stop_percentFLOAT1.000–1
decayCOMBOnoneStrength decay curve: none=instant cutoff, linear=even decay, cosine=smooth S-curve, exponential=fast initial decay, inverse_exponential=slow initial decay
maskoptMASK

Outputs (1)

NameTypeDescription
MODELMODEL