Nodes/ComfyUI-WanVaceAdvanced/WanVacePhantomExperimentalV2
ComfyUI Node

WanVacePhantomExperimentalV2

The full-feature V2 when you want every knob

By drozbay·Created about a year ago·Updated 7 months ago· 95
WanVacePhantomExperimentalV2
  • model
  • positive
  • negative
  • vae
  • latent_in
  • control_video_1
  • control_masks_1
  • vace_reference_1
  • control_video_2
  • control_masks_2
  • vace_reference_2
  • phantom_images
  • wva_options
  • model
  • positive
  • negative
  • neg_phant_img
  • latent
  • trim_latent
width832
height480
length81
batch_size1
vace_strength_11.00
vace_ref_strength_11.00
vace_strength_21.00
vace_ref_strength_21.00
phantom_mask_value1.00
phantom_control_value0.00
phantom_vace_strength0.00

Think of WanVacePhantomExperimentalV2 as WanVacePhantomDualV2 plus the Phantom region controls, plus the pack's options bundle. Same dual VACE contexts, same built-in model patching, same latent_in continuation handling - and then three extra knobs that tune exactly how the Phantom embedding region interacts with the VACE mask, plus a slot for a WVA_OPTIONS node. It's the kitchen sink of the V2 family, and the "Experimental" label is doing the honest job of telling you these extra knobs are the part that changed during development.

What the extra inputs do

The three Phantom controls are the interesting ones, and the author's tooltips are unusually clear, so trust them:

  • phantom_mask_value (default 1.0) - the VACE mask value applied over the Phantom embed region.
  • phantom_control_value (default 0.0) - the padded value used for the VACE-embedded latents inside that region.
  • phantom_vace_strength (default 0.0) - the strength of the VACE embedding applied to the Phantom region. Read that carefully: it is not the strength of the Phantom embeddings. It controls how much ordinary VACE control bleeds into the region the Phantom identity occupies. If you've been fighting Phantom identity getting "overwritten" by your control video, this is the knob.

Then there's wva_options, a WVA_OPTIONS pipe produced by the pack's WVAOptionsNode (tiled VAE, debug prints, phantom resize mode, and so on). Only the ExperimentalV2 node takes it, so if you want those global settings, this is the node you wire it into.

Everything else

Inputs otherwise mirror the DualV2: model (patched automatically if connected), positive, negative, vae, width/height/length/batch_size, latent_in, the two full VACE contexts (control_video_1/2, control_masks_1/2, vace_reference_1/2, vace_strength_1/2, vace_ref_strength_1/2), and phantom_images. Outputs: model, positive, negative, neg_phant_img, latent, trim_latent. Note positive and vae are required in practice - the node raises a clear error if you run it without them.

Both strength inputs accept per-frame float lists (each value = 4 video frames), and the node auto-sizes width/height to match a connected latent_in, trimming or padding reference frames as needed for continuation videos.

Which one should you actually use?

Straight answer: if you don't have a reason to touch phantom_vace_strength or wva_options, use WanVacePhantomDualV2 - same core, fewer knobs, less to trip over. Reach for this one when you're doing serious Phantom identity work and want the VACE/Phantom boundary tuneable, or when you're already building an options pipe. And remember the house rules that apply to every Phantom node here: CFG above 1.0 (1.5–3.5 typical), and combine negative + neg_phant_img via Conditioning Combine. Phantom+VACE is genuinely powerful but it's also the stack where people report the fiddliest results - the knobs here exist precisely because that boundary needed tuning.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/drozbay/ComfyUI-WanVaceAdvanced
# restart ComfyUI

or ComfyUI Manager → "ComfyUI-WanVaceAdvanced". Dependencies are numpy + scipy; grab KJNodes + VideoHelperSuite for model/video loading, and either Phantom 14B + VACE module weights or the pre-merged Wan2.1_VACE_Phantom checkpoint.

CategoryWanVaceAdvanced

Inputs (24)

NameTypeDefaultDescription
modeloptMODEL
positiveoptCONDITIONING
negativeoptCONDITIONING
vaeoptVAE
widthoptINT83216–16384
heightoptINT48016–16384
lengthoptINT811–16384
batch_sizeoptINT11–4096
latent_inoptLATENTOptional latent input to continue from
control_video_1optIMAGE
control_masks_1optMASK
vace_reference_1optIMAGE
vace_strength_1optFLOAT1.000–1000
vace_ref_strength_1optFLOAT1.000–1000
control_video_2optIMAGESecond control video input
control_masks_2optMASKSecond control masks input
vace_reference_2optIMAGE
vace_strength_2optFLOAT1.000–1000
vace_ref_strength_2optFLOAT1.000–1000
phantom_imagesoptIMAGE
phantom_mask_valueoptFLOAT1.000–1Vace mask value for the Phantom embed region.
phantom_control_valueoptFLOAT0.000–1Padded vace embedded latents value for the Phantom embed region.
phantom_vace_strengthoptFLOAT0.000–1000Vace strength value for the Phantom embed region. (Read: *NOT* the strength of the Phantom embeds, just the strength of the Vace embedding applied to the Phantom region.)
wva_optionsoptWVA_OPTIONS

Outputs (6)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
neg_phant_imgCONDITIONING
latentLATENT
trim_latentINT