Head-Swap Bernini Conditioning
Put a new head on an existing video
- positive
- negative
- vae
- guide_video
- head_image
- positive
- negative
- latent
- debug
The job this node does is right there in the name: take a video where everything - the scene, the body, the motion - is already correct, and swap in a different head. You're not generating a whole new clip and hoping identity holds up across a hundred frames; you're keeping a known-good guide_video and using it as the canvas, then injecting a head_image reference for the part you actually want to change.
That's a meaningfully different problem from the LTX Identity Transfer nodes elsewhere in this pack, which copy an arbitrary subject into a generation from scratch. This one is scoped specifically to heads, on top of an existing video, which is also why it doesn't take a model input at all - it's a conditioning builder, not a model patch. Wire its outputs into your sampler chain and the model patching happens elsewhere (paired with a compatible head-swap LoRA, the same way the rest of this pack's identity nodes expect).
What you feed it, and the one setting that actually matters
Required inputs: positive, negative, vae, guide_video (your source footage - output resolution matches this), and head_image (crop it to head-only, per the tooltip). length sets the frame count, snapped to 4k+1 the way LTXV wants it, trained at 73 frames.
The setting worth understanding is amplify_reference, a boolean that's on by default. With it on, the head reference goes on positive conditioning only, while the guide video stays on both positive and negative as a stable canvas - the practical effect is that your sampler's CFG amplifies the identity signal, because CFG is literally the difference between the positive and negative passes, and only positive carries the head. The tooltip is specific about pairing this with CFG around 3-5, and warns against LightX2V-style distilled samplers that run at CFG 1.0, since CFG 1.0 means no amplification at all - you'd have the setting on and get none of its effect. Turn amplify_reference off and the reference goes on both sides instead - weaker, but the legacy behavior if that's what an older workflow expects.
Outputs are positive, negative, latent, and a debug string - feed the first three into your usual LTXV sampler.
Getting it running
Search "ComfyUI-BFSNodes" in ComfyUI Manager, or install manually:
cd ComfyUI/custom_nodes
git clone https://github.com/alisson-anjos/ComfyUI-BFSNodes.git
cd ComfyUI-BFSNodes
pip install -r requirements.txt
Restart ComfyUI. You'll need a head-swap LoRA trained for this specific conditioning convention, loaded onto your LTXV model with the standard LoRA loader before the sampler - this node builds the conditioning, but the LoRA is what actually taught the model to respect the source_id-style head-versus-scene split underneath it.
Practical notes
If the swapped head looks washed out or the identity isn't reading strongly at CFG 3-5 with amplify_reference on, check you're not accidentally on a distilled/LightX2V-style sampler running near CFG 1 - that setting quietly does nothing there, and it's an easy thing to miss if you copied a sampler config from a different workflow. Crop head_image tightly to the head as instructed; the tooltip calls this out explicitly, and a wider reference crop is the kind of thing that degrades identity transfer subtly rather than obviously, so it's worth ruling out early rather than after several failed generations. And don't reach for this node if you're trying to convert an anime source into a photoreal one - this pack ships a separate BFSAnime2RealBerniniConditioning node for that job specifically, and its own README-adjacent notes warn that mixing the two (using head-swap conditioning on an anime2real LoRA) injects a token that LoRA was never trained to see.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| guide_video | IMAGE | Source video (scene/body/motion kept). Output size = this. | |
| head_image | IMAGE | Reference head/face image (identity). Crop to head only. | |
| length | INT | 731–1000 | Frame count (snapped to 4k+1). Trained at 73. |
| amplify_reference | BOOLEAN | true | ON: head reference goes on positive only, so the sampler's CFG amplifies the identity (guide stays on both as a stable canvas). Use CFG ~3-5, no LightX2V (CFG 1.0 = no amplification). OFF: reference on both (legacy, weaker). |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| debug | STRING | — |