WanVacePhantomSimpleV2
The Wan VACE node you'll actually use every day
- model
- positive
- negative
- vae
- latent_in
- control_video
- control_masks
- vace_reference
- phantom_images
- model
- positive
- negative
- neg_phant_img
- latent
- trim_latent
If you're doing anything serious with Wan video and VACE in ComfyUI, this is the node to start from. WanVacePhantomSimpleV2 is the pack's flagship: one VACE context, full Phantom reference-image support, and - the thing that separates it from the older nodes - it patches the model for you and aligns everything with context windows automatically. The README calls it "the go-to node for most VACE operations," and that's not marketing fluff.
VACE is Wan's control framework - you feed it a control video (pose, depth, layout) plus optional reference images, and the model follows them while the text prompt does the rest. Phantom is the character-consistency trick: drop in one or more reference images of your subject and the model hangs on to the likeness. VACE without Phantom drifts on identity; Phantom gives you the anchor. This node wires both into one conditioning package, encodes the VACE frames through your VAE, and hands you a ready-to-sample latent.
The inputs that matter
Everything here is optional, which is the first surprise for people coming from the older node - positive, negative, and vae aren't marked required. Still connect them: the node raises a clear error if positive or vae are missing.
model- the key upgrade over the V1 nodes. Wire your Wan model in and it comes out themodeloutput patched for per-frame strengths. No separate patch node needed.control_video+control_masks- your pose/depth/layout video and the mask telling VACE where control applies. Skip both for pure reference-image work.vace_reference- the reference image for the VACE context.vace_strength/vace_ref_strength- control strength and reference strength, both default 1.0. Both can take a list of floats for per-frame control (each value = 4 decoded frames, since VACE works on latent frames).phantom_images- your character reference images. Keep the subject the focus; background doesn't have to be removed.latent_in- "Optional latent input to continue from." This is the extension/continuation path, and it auto-detects reference frames and trims or pads to match.
Outputs: positive, negative, neg_phant_img (the negative you need for Phantom - combine it with your main negative using a ConditioningCombine), the patched model, a latent ready for the sampler, and trim_latent, an INT that tells you how many frames the node reserved for references - that's why a 81-frame length can produce a shorter latent.
Install and models
Install the pack, then grab the weights:
cd ComfyUI/custom_nodes
git clone https://github.com/drozbay/ComfyUI-WanVaceAdvanced
# restart ComfyUI, nodes appear under "WanVaceAdvanced"
You need a Phantom 14B (Phantom-Wan-14B_fp16.safetensors from Kijai/WanVideo_comfy) plus a VACE module (Wan2_1-VACE_module_14B_bf16 or the fp8), or the pre-merged Wan2.1_VACE_Phantom from InnerReflections. KJNodes and VideoHelperSuite are the usual companions.
The gotchas
Phantom only works well with CFG > 1.0 - the README says 1.5–3.5 is the sweet spot. Run it at CFG 1.0 with a speed LoRA and the likeness falls apart. People also get burned doing video inpainting for character consistency and coming back with mushy results - usually a too-weak vace_strength, a mask that's too small, or CFG pinned at 1. The node's author, drozbay (the AbleJones behind the WanTests sampler shootout and the current maintainer of RES4LYF), keeps a WanTests page with real comparisons if you want to see what different settings do before you burn the GPU hours.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| modelopt | MODEL | — | |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — | |
| vaeopt | VAE | — | |
| widthopt | INT | 83216–16384 | — |
| heightopt | INT | 48016–16384 | — |
| lengthopt | INT | 811–16384 | — |
| batch_sizeopt | INT | 11–4096 | — |
| latent_inopt | LATENT | Optional latent input to continue from | |
| control_videoopt | IMAGE | — | |
| control_masksopt | MASK | — | |
| vace_referenceopt | IMAGE | — | |
| vace_strengthopt | FLOAT | 1.000–1000 | — |
| vace_ref_strengthopt | FLOAT | 1.000–1000 | — |
| phantom_imagesopt | IMAGE | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| neg_phant_img | CONDITIONING | — |
| latent | LATENT | — |
| trim_latent | INT | — |