Nodes/ComfyUI-Apt_Preset/Stack_WanVaceToVideo
ComfyUI Node

Stack_WanVaceToVideo

Stack_WanVaceToVideo

By cardenluo·Created 2 years ago·Updated a day ago· 324
Stack_WanVaceToVideo
  • control_video
  • control_masks
  • reference_image
  • Vace
width832
height480
length81
strength1.00

VACE is Alibaba's official control framework for Wan - reference-to-video, video extension, and inpainting driven by a control video, all from the same model family. It's the reason Wan, which has no native ControlNet of its own, still gets pose-and-depth-guided clips. Stack_WanVaceToVideo is the Apt_Preset way to feed a VACE condition into the pack's Wan controller: you set the geometry and the strength, attach a control video, a mask, and a reference, and it hands sum_stack_Wan a ready-made WANVACE token.

This is one of the more usable nodes in the pack's 😺backup Wan set, because VACE is well-trodden ground - it's been out since May 2025 and the community knows what works. It's also the node most likely to teach you why VACE gets a bad rap from people who skipped the mask.

What it actually does

Same packager pattern as its siblings: bundle (width, height, length, strength, control_video, control_masks, reference_image) into a WANVACE token, feed it to sum_stack_Wan → Vace. The stack then converts it into the VACE conditioning. Your creative decisions - how hard the control applies, what the reference identity is - happen on this node.

The inputs that matter

  • control_video - the video that drives the generation: a pose sequence, a depth render, a motion reference. This is VACE's whole point; without it, you're doing plain img2vid.
  • control_masks - where the control actually applies. If you're doing localized edits (only the character, not the background), this limits the influence to the masked region.
  • reference_image - the subject whose appearance you want to carry into the new clip. This is what separates reference-to-video from plain motion transfer.
  • strength - how hard the control bites. Default 1.0; the range goes to 1000 but you'll live in the 0.4–1.2 neighborhood. Too low and the model wanders, too high and the video goes stiff and copy-pastey.
  • width / height / length - frame geometry, default 832×480×81, Wan's native comfort zone.

One output: Vace (WANVACE), into sum_stack_Wan → Vace.

Wiring it in

Standard spine: sum_load_simple (Wan 2.2 Unet + clip1) → conditioning → sum_stack_Wan with this node's Vace token attached → sum_Ksampler. The stack's vace_trim_latent output tells you where the VACE-constrained segment ends, handy when you're chaining an edited clip back into a longer take.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
cd ComfyUI-Apt_Preset
pip install -r requirements.txt   # Windows: double-click install.bat

Or ComfyUI Manager → search ComfyUI-Apt_Preset. VACE itself is an Apache 2.0 Alibaba model on HuggingFace (Wan-AI/Wan2.1-VACE-14B); grab the 14B or 1.3B weights and drop them in models/unet.

Common issues

The community's VACE pain is almost always masks. From the Fun VACE threads that still circulate: the mask must be a complete area - disconnected or branched mask regions silently produce bad results, because VACE treats the mask as a contiguous region to reconstruct. Also, VACE is control-heavy: if your clip looks like it's rehashing the control video frame by frame, dial strength down toward 0.6 rather than blaming the model. And as with the whole 😺backup family, this node renders nothing on its own - no token output visible means the fault is upstream (mask generation, control video) or downstream (sum_stack_Wan missing).

CategoryApt_Preset/stack/😺backup

Inputs (7)

NameTypeDefaultDescription
widthINT83216–4096
heightINT48016–4096
lengthINT811–4096
strengthFLOAT1.000–1000
control_videooptIMAGE
control_masksoptMASK
reference_imageoptIMAGE

Outputs (1)

NameTypeDescription
VaceWANVACE