Nodes/ComfyUI-WanVideoWrapper/WanVideo Add Dual Control Embeds
ComfyUI Node Runs on cloud

WanVideo Add Dual Control Embeds

Combine dense and sparse control on Wan

By kijai·Created about a year ago·Updated 2 months ago· 6,650
WanVideo Add Dual Control Embeds
  • embeds
  • vae
  • dense
  • sparse
  • prev_images
  • image_embeds
strength1.00
start_percent0.00
end_percent1.00
first_frame_noise_level0.9259

The "dual" is the whole story here: this node takes two control signals - a dense one and a sparse one - and folds both into your Wan embeds at once. Dense control is the per-pixel-ish kind: a full depth video, a dense pose sequence, edges on every frame. Sparse control is looser: a handful of keyframes, a partial guide, a signal that doesn't cover every frame. Combining them lets you pin structure hard where you have it and stay loose where you don't.

Unlike its single-control sibling, this node encodes its control images itself, which is why it needs a VAE handed to it directly. It also carries a strength knob and a first-frame noise control, so it's the more configurable of the two control-embeds nodes.

How it works

You feed it your Wan embeds, a Wan VAE, and up to two control image sequences - dense and sparse. It VAE-encodes those into control latents, mixes them into the embeds under a strength and a timing window, and outputs modified embeds. The prev_images input lets you carry frames from a previous chunk for continuation, and first_frame_noise_level controls how much the opening frame is perturbed - relevant when you're anchoring on a known first frame and don't want it frozen stiff.

The inputs that matter

Required:

  • embeds (WANVIDIMAGE_EMBEDS) - the embeds being modified.
  • vae (WANVAE) - needed because this node encodes the control images itself.
  • strength (default 1.0, range 0–10) - overall control intensity. Your main dial; the wide range means you can genuinely overdrive it.
  • start_percent (0) / end_percent (1) - the sampling window where control applies.
  • first_frame_noise_level (default ~0.926) - how much noise on the first frame. Leave it near default unless your first-frame anchoring looks wrong.

Optional, and this is where the actual control goes in:

  • dense (IMAGE) - the dense control sequence.
  • sparse (IMAGE) - the sparse control sequence.
  • prev_images (IMAGE) - previous frames, for chunked continuation.

Output: image_embeds (WANVIDIMAGE_EMBEDS) for the sampler.

How to install it

Part of 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. You need a Wan control model that understands dual control plus the Wan VAE this node consumes; the control preprocessors (depth, pose) that produce your dense/sparse images live upstream. As with all of Wan, real VRAM is assumed.

Common issues & troubleshooting

One control does nothing. You can run with just dense or just sparse - but if you meant to use both and one is ignored, check it's actually connected and non-empty. The node happily runs with either.

Over-controlled, plasticky output. With a 0–10 strength range it's easy to crank too hard. Speed LoRAs already push Wan toward "flux level plastic skin" per the KB's PSA thread; heavy control on top compounds it. Drop strength back toward 1 and shorten the end_percent window.

Forgot the VAE. This node encodes its own control images, so the vae input is required, not decorative. If you're used to the single-control node (which takes pre-encoded latents), the VAE requirement here trips people up.

First frame looks frozen or wrong. That's first_frame_noise_level. The odd default (~0.926) is deliberate; only touch it if your anchored first frame is misbehaving.

CategoryWanVideoWrapper

Inputs (9)

NameTypeDefaultDescription
embedsWANVIDIMAGE_EMBEDS
vaeWANVAEVAE model
strengthFLOAT1.000–10Strength of the reference embedding
start_percentFLOAT0.000–1Start percentage of the embedding application
end_percentFLOAT1.000–1End percentage of the embedding application
first_frame_noise_levelFLOAT0.92590–1Noise level for the first frame when using previous frames
denseoptIMAGEDense control signal (depth) video input
sparseoptIMAGESparse control signal (tracks) video input
prev_imagesoptIMAGEPrevious frames for temporal consistency, default is 8 frames

Outputs (1)

NameTypeDescription
image_embedsWANVIDIMAGE_EMBEDS