WanVideo Add Control Embeds
Add control-video conditioning to Wan-Fun
- embeds
- latents
- fun_ref_image
- image_embeds
This is the node that adds a control signal - a depth video, a pose video, an edge map, whatever you've encoded - into a Wan-Fun Control generation. If you've ever used ControlNet on images, the intent is familiar: steer the output with a structural reference. The difference is that Wan's diffusion-transformer architecture doesn't take classic UNet ControlNets, so control gets injected as latents folded into the Wan embeds instead. This node does that folding.
The KB spells out why it works this way: "Traditional UNet-based ControlNet does not directly transfer to Wan's diffusion transformer architecture," so the community routes control through VACE, control-LoRAs, or - as here - Fun Control models that take an encoded control video. This node is the Fun-Control entry point in Kijai's wrapper.
How it works
You pass in your existing Wan image embeds plus a control latent (your depth/pose/edge video, already VAE-encoded to a LATENT). The node mixes that control conditioning into the embeds, gated by a start/end percent window, and hands back modified embeds. There's also an optional Fun reference-image latent for reference-conditioned Fun models. Downstream, the WanVideoSampler follows the control.
The inputs that matter
embeds(WANVIDIMAGE_EMBEDS, required) - the embeds being modified.latents(LATENT, optional) - the control video, encoded to a latent. This is your actual control signal; despite being marked optional, it's the whole point of the node.fun_ref_image(LATENT, optional) - a reference-image latent for Fun reference models, if your variant uses one.start_percent(0) /end_percent(1) - when the control is active across sampling. Full range by default. Pullingend_percentdown lets structure lock early and frees the model to add detail late - a common move when control feels too rigid.
Output is image_embeds (WANVIDIMAGE_EMBEDS) for the sampler.
Notice what's not here: there's no strength on this node. Control intensity is governed by the percent window and by which Fun-Control model you loaded, not a strength slider - a real difference from its dual-control sibling.
How to install it
Ships with Kijai's WanVideoWrapper. 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. The node itself is free of downloads, but Fun Control needs a Wan-Fun Control checkpoint (Alibaba PAI's Fun line, mirrored in Kijai's WanVideo model repos) - base Wan won't consume control latents. You'll also want a preprocessor (depth, DWPose, etc.) and the Wan VAE to encode the control video into latents.
Common issues & troubleshooting
Control is ignored. Two prime suspects: you loaded base Wan instead of a Fun-Control model, or you didn't actually connect latents. Both leave the node passing embeds through basically untouched.
Structure is too rigid / bleeds artifacts. Because there's no strength knob, use the timing window - lower end_percent so control stops driving before the final denoising steps and the model can smooth things out. The KB's ControlNet note about depth "confining alterations to exactly the boundary of the depth map" applies here too: tight structural control limits how far the generation can deviate.
Wrong latent shape. The latents must be a control video encoded with the matching Wan VAE at the same resolution/length as your generation. A mismatched encode is a common quiet failure.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| embeds | WANVIDIMAGE_EMBEDS | — | |
| start_percent | FLOAT | 0.000–1 | Start percent of the control signal |
| end_percent | FLOAT | 1.000–1 | End percent of the control signal |
| latentsopt | LATENT | Encoded latents to use as control signals | |
| fun_ref_imageopt | LATENT | Reference latent for the Fun 1.1 -model |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_embeds | WANVIDIMAGE_EMBEDS | — |