ComfyUI Node

Retargeting

Toggle whether LivePortrait drives the eyes and lips

By MixLabPro·Created 2 years ago·Updated 2 years ago· 479
Retargeting
  • crop_info
  • crop_info
liptrue
eyetrue

Retargeting is a tiny pass-through node with exactly one job: decide whether LivePortrait is allowed to move the eyes and the lips. It sits in the wire between FaceCropInfo and LivePortraitNode - crop info goes in, the same crop info comes out, but flagged so the animation either drives those features or leaves them alone. That's it. Small node, but it fixes a real annoyance.

Here's why you'd reach for it. LivePortrait's eye and mouth retargeting is what keeps the source's blinks and lip shapes sensible while copying the driving performance - most of the time that's what you want. But sometimes it's not. Maybe the driving clip's blinking looks wrong on your subject, or you want the mouth to stay shut regardless of what the driver is doing, or the retargeting is introducing a twitch you'd rather kill. Retargeting lets you switch either channel off without touching the rest of the pipeline.

How it works

It takes the CROP_INFO produced upstream and sets flags on it for lip and eye driving, then passes it along. The heavy lifting still happens in LivePortraitNode; this node just tells it which of those two motion channels to honor. Because it's a straight pass-through on the crop info, you can drop it into an existing graph - FaceCropInfoRetargetingLivePortraitNode - without rewiring anything else.

The inputs and outputs that matter

  • crop_info (CROP_INFO, required) - the crop info from FaceCropInfo. This is what gets tagged and forwarded.
  • lip (BOOLEAN, default true) - whether lip motion is driven. Turn it off to keep the source's mouth from following the driving clip.
  • eye (BOOLEAN, default true) - whether eye motion is driven. Turn it off to stop the eyes (blinks, gaze) tracking the driver.

Both default to on, which matches normal LivePortrait behavior - so if you never insert this node you lose nothing. You add it precisely when you want to disable one of those channels.

The output is crop_info (CROP_INFO) - the same bundle, now carrying your eye/lip settings, ready to plug into LivePortraitNode's crop input.

How to install it

Via ComfyUI Manager: search comfyui-liveportrait, install, restart. Or clone the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/shadowcz007/comfyui-liveportrait

then restart ComfyUI. Drop the LivePortrait and InsightFace weights (Google Drive / Baidu links in the README) into ComfyUI/models/liveportrait and ComfyUI/models/insightface. If you already run comfyui-mixlab-nodes, no extra dependencies are needed.

Common issues

This node has almost no failure surface of its own - it doesn't detect, download, or render anything, so if something breaks it's upstream. The most common confusion is expecting it to do something on its own; it won't, it only changes how the LivePortraitNode downstream behaves, so you have to wire the whole FaceCropInfoRetargetingLivePortraitNode chain for the toggles to have any effect. If disabling eye or lip seems to do nothing, confirm the output really is feeding LivePortrait's crop_info input and not a dangling wire. Everything else is inherited from the pack: the models aren't auto-downloaded, InsightFace is the dependency most likely to break the import, and its weights are non-commercially licensed.

Category♾️Mixlab/Video/LivePortrait

Inputs (3)

NameTypeDefaultDescription
crop_infoCROP_INFO
lipoptBOOLEANtrue
eyeoptBOOLEANtrue

Outputs (1)

NameTypeDescription
crop_infoCROP_INFO