WanVideo Controlnet Apply
Depth and pose control for Wan generations
- model
- controlnet
- control_images
- model
ControlNet is how you stop a video model from freelancing and make it follow a structure you hand it - a depth sequence, a pose video, an edge map, whatever. This node ("WanVideo Controlnet Apply") wires a Wan-compatible ControlNet into your generation: you give it the model, a loaded controlnet, and your control image sequence, and it patches the model so sampling follows that control signal. Out comes a patched model you feed to the sampler.
Worth setting expectations, because ControlNet works differently on Wan than on the SD/SDXL era you might remember. Traditional UNet ControlNet doesn't transfer to Wan's diffusion-transformer architecture, so these are purpose-built control models, and as the community puts it, a Wan control signal "competes with text conditioning" rather than sitting cleanly on top of it. It's real control, but it's a different beast.
How it works
The node applies the controlnet's guidance to the Wan model across the denoising process. Your control_images are the frame-by-frame structure (a depth map video, a pose sequence); the controlnet translates those into a signal that biases the model toward matching them. Strength and a start/end window let you control how hard and over what part of the schedule that bias applies - the standard ControlNet levers, adapted to video.
The inputs and outputs that matter
model(WANVIDEOMODEL) - the Wan model to patch.controlnet(WANVIDEOCONTROLNET) - the loaded Wan control model, from its own loader upstream.control_images(IMAGE) - your control sequence, one frame of structure per generated frame (depth, pose, tile, etc.).strength(default 1) - how strongly the control binds. Ease down if the control is fighting your prompt too hard; this is the knob you'll actually move.control_start_percent/control_end_percent(defaults 0 and 1) - the slice of denoising the control is active over. A common trick: let control run early to lock composition, then release it (control_end_percent< 1) so the model refines detail freely.control_stride(default 3) - how frequently the control is applied across frames; a performance/fidelity lever.
Output is the patched model (WANVIDEOMODEL) → into your sampler.
How to install it
ComfyUI Manager - search ComfyUI-WanVideoWrapper, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. You need a Wan-specific ControlNet model (loaded via the pack's controlnet loader) plus a preprocessor to make the control frames - DWPose for pose (see WanVideoUniAnimateDWPoseDetector), a depth estimator for depth. The control models live on Kijai's WanVideo_comfy repo.
Common issues & troubleshooting
The control barely does anything, or overpowers everything. On Wan, control competes with text conditioning rather than layering on top, so the balance is touchier than on SDXL. If it's weak, raise strength; if it's steamrolling your prompt, lower it. There's a real sweet spot and it's model-dependent.
Depth control refuses to let a shape change. A known limitation: depth confines alterations to the exact boundary of the depth map, so trying to, say, turn a tight outfit into a flowing one fails because the new shape falls outside the original silhouette. If you need the shape to change, pose or a looser control type behaves better than depth.
Wrong ControlNet model. An SD/SDXL ControlNet will not work here - Wan's transformer architecture needs a Wan-trained control model. If loading errors or the output ignores your control entirely, check you've got a genuine Wan controlnet, not a repurposed image-model one.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | WANVIDEOMODEL | — | |
| controlnet | WANVIDEOCONTROLNET | — | |
| control_images | IMAGE | — | |
| strength | FLOAT | 1.00000–10 | controlnet strength |
| control_stride | INT | 31–8 | controlnet stride |
| control_start_percent | FLOAT | 0.000–1 | Start percent of the steps to apply controlnet |
| control_end_percent | FLOAT | 1.000–1 | End percent of the steps to apply controlnet |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | WANVIDEOMODEL | — |