WanVideo Add Fantasy Portrait
Drive facial expression on a Wan clip
- embeds
- portrait_embeds
- image_embeds
FantasyPortrait is expression driving for Wan - it transfers facial expression and motion from a driving source onto your generated character. Think of it as the cousin of the audio-talking nodes: where MultiTalk and FantasyTalking sync a mouth to audio, FantasyPortrait drives the face - expressions, head motion, the emotive stuff - from portrait conditioning. When it landed, the community immediately clocked it as "looks like MultiTalk" and wondered how well it'd adapt to Wan.
This node is the step that adds that portrait conditioning onto your Wan image embeds. You bring the portrait embeds (built upstream from your driving source); this folds them in at the strength and over the window you choose.
How it works
It takes an existing WANVIDIMAGE_EMBEDS and injects PORTRAIT_EMBEDS - the encoded facial-expression signal - as conditioning, so the model animates the subject's face to follow it. Strength controls how strongly the expression transfers, a start/end window controls when in the clip it applies, and a dedicated portrait-CFG controls guidance for the portrait signal specifically.
The inputs that matter
embeds(WANVIDIMAGE_EMBEDS, required) - the image embeds you're conditioning.portrait_embeds(PORTRAIT_EMBEDS, required) - the expression signal from your FantasyPortrait encoder upstream. This is what carries the face motion.strength(FLOAT, default 1, up to 100) - how hard the expression drives.1is the natural start; go up for more pronounced expression transfer, down if the face is overacting. The range goes absurdly high - you almost never want the top end.start_percent/end_percent(0 to 1, default full) - the slice of sampling where portrait conditioning applies.portrait_cfg(FLOAT, default 1) - guidance scale for the portrait conditioning on its own.
The output is image_embeds (WANVIDIMAGE_EMBEDS) → onward to the sampler.
How to install it
ComfyUI Manager: search ComfyUI-WanVideoWrapper, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. A full FantasyPortrait graph needs the FantasyPortrait model downloaded (plus whatever produces the PORTRAIT_EMBEDS), so grab those into the wrapper's model folders before expecting this to do anything.
Common issues & troubleshooting
"Missing nodes" when loading a FantasyPortrait workflow. This is the single most common complaint people hit with FantasyPortrait - a downloaded workflow shows red missing-node boxes. It's almost always an out-of-date WanVideoWrapper install or the FantasyPortrait model files not being present. Update the pack, confirm the model downloaded, restart.
Expression barely transfers, or overacts. That's strength. The input allows values into the tens, but that's rope to hang yourself with - start at 1 and make small moves. Overdriving flattens identity and gives you a rubber face.
Results underwhelm versus MultiTalk. Fair - early hands-on reactions were that MultiTalk's results were superior. FantasyPortrait is about expression transfer rather than audio lip-sync, so it's a different job; but if you're choosing between them for talking content, don't assume this is the stronger one. Test against your footage.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| embeds | WANVIDIMAGE_EMBEDS | — | |
| portrait_embeds | PORTRAIT_EMBEDS | — | |
| strength | FLOAT | 1.000–100 | Strength of the portrait embedding |
| start_percent | FLOAT | 0.000–1 | Start percentage of the embedding application |
| end_percent | FLOAT | 1.000–1 | End percentage of the embedding application |
| portrait_cfg | FLOAT | 1.000–20 | CFG scale for the portrait embedding |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_embeds | WANVIDIMAGE_EMBEDS | — |