Face Fix - Composite Repaired Video
Sew the repaired face back into the video
- ltx_face_frames
- face_fix_context
- repaired_video_frames
- applied_face_mask
- repaired_frame_count
Everything before this node works in a bubble: a face gets cropped to 512×512, enhanced, reanimated by LTX. But the video you actually care about is full resolution, and a face repaired in isolation will sit on top of the original like a badly pasted sticker unless someone does the compositing properly. VRGDGFaceFixComposite is that someone - it feathers the repaired LTX face frames back into the original full-resolution frames, masks out the no-face sections, and hands you a finished video.
How it works. You connect the final IMAGE batch from LTX VAE Decode to ltx_face_frames - and the tooltip is emphatic: the final decoded batch, not source crops or anchors. The other input, face_fix_context, comes from the "Collect LTX Inputs" node and supplies the original full-resolution frames, the crop rectangles for every frame, and the no-face safety decisions made back in Prepare. The node uses that context to paste each repaired face back onto its original frame at the exact right position, then blends the boundary so the seam disappears.
Two settings do the heavy lifting:
feather_pixels(18) - how wide the blended transition is. Higher = smoother seam but can soften facial detail; lower = sharper but risks a visible edge. The author's recommendation is 18; think of it as the "how hard is the edge" dial.color_match(0.65) - shifts the repaired crop's average color toward the original face region before blending. This is what kills the "repaired face is a different color than the rest of the shot" problem. Increase it for lighting seams, decrease it if skin tone starts looking dull or unstable.
The outputs. repaired_video_frames is the finished full-resolution sequence - wire it to VHS Video Combine for the final file. applied_face_mask shows you exactly which pixels got replaced, which is gold for debugging ("why is my background changing?" - it shouldn't be). repaired_frame_count tells you how many frames actually received repairs.
Installing. Part of the vrgamedev pack:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
or install via ComfyUI Manager. Requires VideoHelperSuite and the same model set as the rest of the Face Fix pipeline.
Troubleshooting. The most common mistake is wiring the wrong thing into ltx_face_frames - grab the decoded output from an earlier stage and you'll paste garbage. If you see a visible rectangle around the face, lower feather_pixels isn't the answer (that adds to the seam); raise it. If the repaired face doesn't match the shot's lighting, raise color_match toward 1 - that's its entire job. And if whole sections of the video still show the blurry original face, that's not this node's fault: it only composites frames LTX actually repaired, so check upstream detection settings (the repaired_frame_count output will confirm).
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| ltx_face_frames | IMAGE | Connect the final IMAGE batch from the LTX VAE Decode node. Do not connect source crops or anchor images here. | |
| face_fix_context | VRGDG_FACE_FIX_CONTEXT | Connect Collect LTX Inputs: face_fix_context. It supplies original full-resolution frames, crop rectangles, and no-face safety decisions. | |
| feather_pixels | INT | 180–256 | Softens the boundary where each repaired face crop meets the original frame. Higher values create a wider, smoother transition; too high may weaken facial detail. Lower values are sharper but can reveal a visible edge. Recommended starting value: 18. |
| color_match | FLOAT | 0.650–1 | Shifts the repaired crop's average color toward the original face region before blending. 0 disables matching; 1 applies the full measured correction. Increase for lighting/color seams, decrease if skin tone becomes dull or unstable. Recommended: 0.65. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| repaired_video_frames | IMAGE | — |
| applied_face_mask | MASK | — |
| repaired_frame_count | INT | — |