WanAnimatePlus ClipVisionEncode
CLIP-encode your reference so the character stops drifting
- clip_vision
- image_1
- image_2
- negative_image
- image_embeds
In a Wan Animate workflow, CLIP vision is what tells the model who your character is. The pose video says what the body does; the CLIP embeds say who's doing it. This node takes your reference image and turns it into the semantic image_embeds that anchor identity - the thing that decides whether your character stays the same person across a clip or quietly becomes somebody else. It's the WanAnimatePlus rename of the wrapper's standard ClipVisionEncode.
How it works. Feed it a clip_vision model (loaded from your core ComfyUI LoadCLIPVision node - the Wan 2.2 Animate family ships a matching clip_vision_h.safetensors) plus an image, and it runs CLIP vision encoding with a few levers on top. crop defaults to center, squaring the image to 224x224 before encoding; set it to disabled if your reference is already the right shape and you don't want it re-framed. strength_1 multiplies the resulting embed - useful if the model is under-anchoring identity, but you rarely want much more than 1. force_offload is on by default so the CLIP model doesn't hog VRAM after encoding.
The output is a WANVIDIMAGE_CLIPEMBEDS object, which wires into the clip_embeds input of WanAnimatePlus AnimateEmbeds or WanAnimatePlus SCAIL_2 Embeds. That's the whole job: encode here, inject there.
The multi-image angle. There's a second slot, image_2, plus combine_embeds with four options - average, sum, concat, batch. Two references averaged or concatenated lets you encode an identity from multiple angles, which is how people pin down a face that keeps wobbling. negative_image is the uncond version: encode what you don't want as the identity anchor. And tiles + ratio bring in matteo's tiled image encoding - it chunks the image, encodes each tile, and blends - which gives noticeably better accuracy on high-resolution references at the cost of being slower. tiles defaults to 0 (off); step it by 2, and ratio (default 0.5) controls how much of the tile average bleeds into the result.
Where people get burned. Using the wrong CLIP vision file. The Wan Animate ecosystem has a few vision encoders floating around, and swapping one silently changes identity behavior - use the one that came with your checkpoint. Second, cranking strength_1 to fix drift usually just makes the output mushy rather than more faithful; if identity still wanders, the fix is usually a better reference or a character LoRA, not a multiplier. And if you're encoding a whole batch of references, this single-image node isn't the tool - that's what the V2 sibling (WanAnimatePlus ClipVisionEncode V2) is for, with its sequence-friendly images input.
Install via ComfyUI Manager (search "WanAnimatePlus") or git clone https://github.com/wuwukaka/ComfyUI-WanAnimatePlus into custom_nodes, then restart and rebuild your chain from the fork's nodes. This one's a workhorse - boring, but everything downstream leans on it.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_vision | CLIP_VISION | — | |
| image_1 | IMAGE | Image to encode | |
| strength_1 | FLOAT | 1.0000–10 | Additional clip embed multiplier |
| strength_2 | FLOAT | 1.0000–10 | Additional clip embed multiplier |
| crop | COMBO | center | Crop image to 224x224 before encoding |
| combine_embeds | COMBO | average | Method to combine multiple clip embeds |
| force_offload | BOOLEAN | true | — |
| image_2opt | IMAGE | — | |
| negative_imageopt | IMAGE | image to use for uncond | |
| tilesopt | INT | 00–16 | Use matteo's tiled image encoding for improved accuracy |
| ratioopt | FLOAT | 0.500–1 | Ratio of the tile average |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_embeds | WANVIDIMAGE_CLIPEMBEDS | — |