Wan22 Fun Control To Video (Tiled VAE Encode)
Drive a Wan 2.2 video from another video
- positive
- negative
- vae
- ref_image
- control_video
- positive
- negative
- latent
Want a character to move the way another video moves, but rendered as whatever your prompt describes? That's VACE Fun Control, and this node is the ComfyUI-native control-to-video conditioner with a tiled VAE encode so it doesn't need a giant slab of VRAM to do it. It's the simplest node in this pack - which is nice, because the workflow around it is where the fiddling lives.
What it actually does
You feed it two images/videos: a ref_image (who or what you want in the shot) and a control_video (the motion you want to borrow). The node VAE-encodes the control video into latent space and stuffs it into the conditioning as the control_video field, so the Wan 2.2 model uses it as a per-frame driver. The reference image becomes a reference_latents entry. Same job as the stock Wan22FunControlToVideo node - the only change under the hood is that every encode goes through encode_tiled() instead of a whole-tensor encode().
This matters more than it looks. Control videos are long, and the full encode is exactly the kind of operation that pushes an 8–12GB card over the edge while the sampler itself would have been fine. With the tiled version you trade a bit of time for dramatically lower peak memory.
Inputs and outputs
It's a lean node. Required: positive / negative conditioning, vae, width / height / length / batch_size, and the tiling quartet - tile_size (512), overlap (64), temporal_size (64 frames per chunk), temporal_overlap (8). Optional: ref_image and control_video. That's the whole surface.
Outputs: positive, negative, and latent. Wire the conditioning and the empty latent into your KSampler exactly as you would with the original node - this is a drop-in replacement, so existing Fun Control workflows carry over with the tiling controls appearing in the node.
A small implementation note, if you're the curious type: the control latent is expanded to double channels (concatenated with itself) because that's how the model expects a control-video conditioning to look, and there's a concat_mask_index set to match. You don't set any of that; it's just why the wiring lines up when you swap nodes.
Installing it
ComfyUI Manager → search Fossiel or WAN-Additional-Tilers, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Fossiel/ComfyUI-Fossiel-WAN-Additional-Tilers
Restart ComfyUI. No Python dependencies beyond ComfyUI itself, and no models shipped with the pack - you need the Wan 2.2 checkpoint, CLIP, and VAE on hand.
Gotchas
The typical one applies: keep ComfyUI current, because the temporal tiling arguments on encode_tiled() need a recent build. And since the reference encode uses a single-frame tile (tile_t=1), the temporal_size knob effectively only affects the control video - which is the part that eats VRAM anyway, so it's the knob you'll actually turn. If you're still hitting memory limits, drop tile_size before you drop resolution.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–16384 | — |
| height | INT | 48016–16384 | — |
| length | INT | 811–16384 | — |
| batch_size | INT | 11–4096 | — |
| tile_size | INT | 51264–4096 | Tile size for VAE encoding (X and Y). |
| overlap | INT | 640–4096 | Overlap between spatial tiles. |
| temporal_size | INT | 648–4096 | Number of frames to encode per temporal tile. |
| temporal_overlap | INT | 84–4096 | Overlap between temporal tiles. |
| ref_imageopt | IMAGE | — | |
| control_videoopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |