Wan VACE - Multi-Image Reference
Character consistency from a few reference images (cloud Wan VACE)
- video_file_path
- video_url
Feed it two pictures of the same character - one from the front, one from the back - and a prompt, and WanVACEImageReference ("Wan VACE - Multi-Image Reference") returns a video where that character stays recognizably the same person the whole time. That's the VACE reference-to-video mode that won the community over in the local Wan 2.1 days, and this node is the same trick on Alibaba's hosted wan2.1-vace-plus model. No 14B checkpoint grinding on your GPU, no ControlNet pipeline - just URLs in, video out, billed per job.
Character consistency across motion is the hardest problem in video generation, and reference-to-video is the best tool anyone has for it short of a trained LoRA. If you've been wrestling with faces that morph every few frames, this is the node you want to meet first.
How it works
The key input is ref_images_url: a list of reference images, one per line. What makes this node special is the obj_or_bg field - a parallel list (one obj or bg per line) that tells the model which references are objects (the character, the thing to keep consistent) and which is the background. Here's the part that saves you time: you usually don't need to set it. Leave obj_or_bg empty and the node auto-assigns - every image becomes obj except the last one, which becomes bg. So for a character + a scene, order matters: characters first, background last.
The full model: ref_images_url (newline-separated URLs, all of which must be publicly fetchable by Alibaba's servers), the prompt describing the video, size (1280720, 7201280, 960960, 8321088, 1088*832), seed, and the usual prompt_extend / watermark toggles. Outputs are video_file_path and video_url - preview via a "Load Video (Path)" node from ComfyUI-VideoHelperSuite.
How it fits the bigger picture
The KB's Wan essay notes that the local VACE reference mode produced its "wow" moment from exactly two images - dress from the front, dress from the back, no complicated workflow. The hosted version here is the same idea, minus the 15-40 minute local render. It also pairs with the rest of the VACE family in this pack: use this node to establish a consistent character, then feed the result into Video Repainting or Extension to carry that identity forward.
Install
ComfyUI Manager, search ComfyUI_Wan, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ru4ls/ComfyUI_Wan.git
pip install -r ComfyUI_Wan/requirements.txt
Restart, then copy config/.env.template to config/.env in the pack folder and set DASHSCOPE_API_KEY (plus DASHSCOPE_API_KEY_CHINA for mainland China). Dependencies are minimal - requests, Pillow, numpy, python-dotenv - because the model runs remotely. And it's a paid API: every video costs you, so tighten the prompt before you queue.
Gotchas
- Reference images must be public URLs. Local files won't work - Alibaba's servers fetch them. Host your references somewhere reachable first.
- The auto obj/bg rule is a rule, not a guess. If you have three references and want the middle one to be the background, you have to set
obj_or_bgyourself (one value per line, same order, same count - a mismatch throws an error). - Keep references visually rich but consistent: front/back views of the same outfit beat three near-identical selfies. The model can only hold onto what the images give it.
If you want this locally instead, the open-weight Wan 2.1 VACE runs in native ComfyUI - free, but you supply the VRAM and the patience. This node is the no-hardware version, and for reference consistency specifically, it's the best reason to have this pack installed at all.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | wan2.1-vace-plus | 1 options: wan2.1-vace-plus |
| prompt | STRING | Generate a video based on the provided reference images | — |
| ref_images_url | STRING | Newline-separated URLs for reference images | |
| region | COMBO | international | 2 options: international, mainland_china |
| obj_or_bgopt | STRING | Newline-separated values (obj/bg) corresponding to ref_images_url | |
| sizeopt | COMBO | 1280*720 | 5 options: 1280*720, 720*1280, 960*960, 832*1088, 1088*832 |
| seedopt | INT | 00–2147483647 | — |
| prompt_extendopt | BOOLEAN | false | — |
| watermarkopt | BOOLEAN | false | — |
| output_diropt | STRING | ./videos | Directory where the generated video will be saved. Browse to select a custom directory. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_file_path | STRING | — |
| video_url | STRING | — |