Nodes/XB_ToolBox/XB_WanFunControlToVideo
ComfyUI Node

XB_WanFunControlToVideo

One node for control-video conditioning

By wjluoxiao·Created 5 months ago·Updated 6 days ago· 302
XB_WanFunControlToVideo
  • positive
  • negative
  • vae
  • clip_vision_output
  • start_image
  • control_video
  • positive
  • negative
  • latent
width832
height480
length81
batch_size1
vae_tile_size64
scale_methodlanczos
crop_modecenter

Wan 2.2 Fun Control is Alibaba's official control model - you feed it a driving video (pose, depth, whatever signal you preprocessed) and it makes your generation follow that motion. The problem is that the stock ComfyUI graph for it is a wall of latent-concat and conditioning plumbing that's easy to get subtly wrong. XB_WanFunControlToVideo is the XB_ToolBox pack's one-node wrapper for that plumbing: it takes your start image plus a control_video, VAE-encodes both, and builds the doubled-channel concat_latent_image the Fun Control model expects - then hands you clean positive, negative and latent outputs.

The display name is the raw class name (XB_WanFunControlToVideo), no fancy label - this is one of the pack's more "power user, here's a function" nodes rather than its hand-holding front door.

How it works

The Fun Control model wants a control signal interleaved into the latent as a second channel stack. The node builds a concat_latent with twice the latent channels (a Wan21().process_out normalized zero tensor repeated across 2× channels), then:

  • start_image → VAE-encoded and written into the second half of the channel stack (the actual image content to animate).
  • control_video → upscaled to your resolution, VAE-encoded, and written into the first half (the control signal driving the motion).

Both conditioning paths (positive and negative) get stamped with the same concat latent - and if you pass a clip_vision_output, it's attached to both sides too. Outputs are the three sockets a sampler wants: positive, negative, latent.

Inputs that matter

width/height default to 832×480 (landscape - Fun Control demos are usually landscape), length 81, vae_tile_size 64. The two inputs that do the real work are start_image (what you're animating) and control_video (how it moves). Supply a clip_vision_output from a CLIP Vision encode of your subject for better identity retention. scale_method/crop_mode fit the control video to your target resolution - worth checking that your control frames and target share an aspect ratio, because an aggressive center crop can shift the pose you spent time preprocessing.

Install & context

Same as every node here: ComfyUI Manager → XB_ToolBox, or:

cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/XB_ToolBox.git

restart. The pack's declared pip deps are opencv-python and easyocr; no weights ship - you need a Wan 2.2 Fun Control checkpoint (Wan2.2-Fun-Control-14B) plus the usual VAE/CLIP/T5, and the control video itself usually comes from a pose/depth preprocessing pass elsewhere in your graph.

Two honest caveats. First, this node only does the conditioning - the sampling, control strength and masking live in the rest of your graph, so it's one component of a Fun Control workflow, not the whole thing. Second, Fun Control is a 14B model and it's slow; pair it with a distilled/speed-LoRA regime (CFG 1.0, a few steps) or you'll be waiting a long time per clip.

CategoryXB_ToolBox/Pipeline

Inputs (13)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–8192
heightINT48016–8192
lengthINT811–8192
batch_sizeINT11–4096
vae_tile_sizeINT6464–3840
clip_vision_outputoptCLIP_VISION_OUTPUT
start_imageoptIMAGE
control_videooptIMAGE
scale_methodoptCOMBOlanczos5 options: lanczos, bilinear, bicubic, nearest-exact, area
crop_modeoptCOMBOcenter2 options: center, disabled

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT