Nodes/MiniMax H3 Transparent Video - SatoDive/H3 Transparent Video - SatoDive
ComfyUI Node

H3 Transparent Video - SatoDive

Real alpha out of a video model, without the haze

By SatoDive·Created 21 days ago·Updated 21 days ago· 31
H3 Transparent Video - SatoDive
  • images
  • video
  • audio
  • keep_mask
  • garbage_mask
  • pass_b
  • preview_plate
  • foreground
  • alpha
  • rgba
  • preview
  • report
◄backdropAuto►
◄custom_color#00B140►
◄screen_gain1.00►
◄screen_balance0.00►
◄shadowsKeep►
◄plate_fix1.00►
◄clip_black0.030►
◄clip_white0.950►
◄edge_solvetrue►
◄edge_detail2►
◄choke0.00►
◄softness0.00►
◄despill1.00►
◄edge_extendtrue►
◄despeckle8►
◄temporal0.50►
◄output_formatProRes 4444 (.mov) - Premiere/AE/Resolve►
◄filenameh3_transparent►
◄fps0.000►
◄alpha_typeStraight (recommended)►
◄preview_onCheckerboard►
◄preview_videotrue►
◄fill_holes0►

You cannot get an alpha channel out of a diffusion video model. Video transparency has been its own research line for years - TransPixar and friends - and the practical route everyone uses is the boring one: generate over a flat backdrop, then key it. H3 Transparent Video is that second half, in one node.

Why it matters. The instinct is to reach for a segmentation model instead - BiRefNet, InSPyReNet, RMBG - and it fails on video for a structural reason: a segmentation model labels each pixel foreground or background, and matting predicts fractional alpha. Smoke, motion blur, a thin veil, a spark trail are neither solid nor absent, and a hard mask can't say so. Keying against a modelled backdrop can.

How it works

A generated clip never has a truly flat background - it has gradients, vignettes and shading - so the keyer models the backdrop instead of assuming a colour. keyer.py reads the frame border across up to a dozen frames, robustly, and reports a border-match confidence. It then estimates a per-frame clean plate at low resolution from confident backdrop pixels, fills the holes the subject punched in it with push-pull, and smooths it in space and time. Every pixel is compared against its own local backdrop. That is the mechanic that kills haze: a flat key colour leaves a faint veil wherever the generation was slightly off-green; a per-pixel plate doesn't.

The key itself is colour-difference "screen" keying for green and blue, unmultiply for glow on black, and the mirror for smoke and ink on white. Then the cleanup: a colour-guided filter that snaps the matte to full-resolution edges (repairing 4:2:0 chroma blockiness), motion-gated temporal smoothing so moving edges don't ghost, despill, a proper un-mix of the foreground out of the plate - F = (C - (1-a)P) / a - and colour extension under near-transparent pixels so edges don't pick up a dark fringe when you scale or composite. The docstring makes an unusually honest argument for one pass over two-render triangulation: a diffusion model can't re-render a background behind a held subject, because holding the subject holds whatever was behind its soft edges.

The inputs you'll actually touch

backdrop first, matching what H3 Shot wrote into your prompt; Auto reads it from the border and usually gets it right. Then images (frames straight out of VAE Decode - no intermediate MP4 loss) or video, plus audio. output_format is the real decision: ProRes 4444 for Premiere/AE/Resolve/Final Cut, RGBA PNG sequence, or "Don't save (preview only)". filename names a numbered folder under output/H3_Transparent_Video/; fps at 0 takes the rate from the video input, or assumes 24 for images; leave alpha_type on Straight.

Everything else you touch when something is wrong. screen_gain is the master strength - raise it if a faint veil survives, lower it if thin or soft parts vanish. plate_fix at 1 is the full per-pixel backdrop model. clip_black (0.03) clears leftover haze; clip_white (0.95) fills faint holes. despeckle, despill, choke, softness, shadows, temporal and edge_solve are the usual keyer controls, and keep_mask / garbage_mask accept masks from any segmentation node.

Outputs

foreground (RGB), alpha (MASK), rgba (composite-ready frames), preview (composited over what preview_on says - Checkerboard, Grey, Black, White, or your preview_plate), and report. Read the report: backdrop kind and hex, border-match percentage, haze and flicker numbers, plate unevenness, and any warnings. It also lands in report.txt next to the renders.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/SatoDive/Minimax-H3-Transparent-Video

Restart. No extra Python packages - torch, numpy, Pillow and av, all bundled - and no model downloads. The README points at a ready workflow (workflows/H3_Generate_Transparent_Clip.json, plus a Patreon download); the chain it documents is H3 Shot → sampler → VAEDecode → this node, with VAEDecodeAudio alongside.

Where it bites

Leftover dots after keying is the classic complaint, and not specific to this pack - a July 2026 thread about Krea 2 green-screen output had the same symptom in Resolve, with commenters split between matting nodes and "green screen is honestly more hassle than just masking directly in post." Cheap fixes first: raise screen_gain, lower clip_black, raise despeckle, and read the report's border-match percentage.

Holes in the subject mean it contains the backdrop colour - green clothing on green screen. Switch to Blue, use keep_mask, lower clip_white, or fill_holes.

Fire, sparks and orange glow belong on Black, not green; dark-grey objects on White come out partly transparent by design, because that mode is for ink, smoke and dust.

Check the report if a Pro-only setting looks ignored. The source has an edition switch: on a Free build, custom colour falls back to Auto, edge solve / temporal / fill holes / keep and garbage masks are skipped, WebM and QuickTime Animation save as ProRes 4444, and only the first 124 frames get keyed.

CategorySatoDive/H3 Transparent Video

Inputs (30)

NameTypeDefaultDescription
backdropCOMBOAutoWhat the clip was generated on. Auto reads it from the frame border.
custom_colorSTRING#00B140Only for 'Custom colour': the backdrop colour as hex.
screen_gainFLOAT1.000.5–2How strongly the backdrop is removed. Raise if a faint veil remains, lower if thin or soft parts disappear.
screen_balanceFLOAT0.000–10 compares the key channel with the strongest other channel (protects yellows and cyans). Raise toward 1 for softer, more transparent edges.
shadowsCOMBOKeepShadows on a green/blue backdrop: Keep exports them as soft dark alpha, Remove drops them (slightly thins very dark edges).
plate_fixFLOAT1.000–1Compensate an uneven backdrop (gradients, vignette). 1 = full per-pixel plate.
clip_blackFLOAT0.0300–0.5Alpha below this becomes fully clear. Removes leftover haze.
clip_whiteFLOAT0.9500.5–1Alpha above this becomes fully solid. Fills faint holes in the subject.
edge_solveBOOLEANtrueSolve motion-blurred and anti-aliased edges of strongly coloured subjects (red car, orange fire) from the local subject colour. Without it such edges come out too hard with a dark fringe.
edge_detailINT20–8Edge-aware refinement radius in pixels: snaps the matte to image edges. 0 = off.
chokeFLOAT0.00-4–4Shrink (+) or grow (-) the matte, in pixels.
softnessFLOAT0.000–4Blur the final matte edge, in pixels.
despillFLOAT1.000–1Remove backdrop colour reflected onto the subject (green/blue spill).
edge_extendBOOLEANtrueFill colour under near-transparent pixels from the subject, so edges never show a dark or coloured fringe after compositing or scaling.
despeckleINT80–200Remove isolated faint specks up to this area in pixels. Strong sparks are kept.
temporalFLOAT0.500–1Smooth matte flicker across frames. Motion-aware, so moving edges do not ghost.
output_formatCOMBOProRes 4444 (.mov) - Premiere/AE/ResolveProRes 4444 carries real alpha in Premiere, After Effects, Resolve and Final Cut. MP4/H.264 can never be transparent.
filenameSTRINGh3_transparentProject folder name under output/H3_Transparent_Video. Each run gets a new numbered folder.
fpsFLOAT0.0000–1200 = take it from the video input, or 24 (H3) for images.
alpha_typeCOMBOStraight (recommended)Straight is what editors expect for ProRes 4444 and PNG.
preview_onCOMBOCheckerboardBackground for the preview output and the in-node player.
preview_videoBOOLEANtrueAlso write small preview/matte MP4s for the player inside the node.
fill_holesINT00–16Fill pinholes enclosed by the subject, up to about this radius in pixels. Fixes black specks in yellow fire keyed from green. 0 = off, 3-6 is typical. Open notches and gaps between separate shapes are never filled.
imagesoptIMAGEFrames straight from VAE Decode (best quality).
videooptVIDEOOr a loaded video; its audio and fps are used.
audiooptAUDIOMuxed into the saved file.
keep_maskoptMASKOptional: areas that must be solid (from any segmentation node).
garbage_maskoptMASKOptional: white where the subject may be; everything black is forced clear.
pass_boptIMAGEAdvanced: the same shot over a second backdrop. Used for exact triangulation only where both passes agree.
preview_plateoptIMAGEOptional background for 'Plate input' preview.

Outputs (5)

NameTypeDescription
foregroundIMAGE—
alphaMASK—
rgbaIMAGE—
previewIMAGE—
reportSTRING—