SCAIL-Pose2 Replacement Condition Video
The replacement helper the README tells you to skip (mostly)
- driving_video
- pose_video_mask
- driving_video_condition
- summary
Let me save you some head-scratching: this node is marked legacy in its own README. The canonical replacement route in ComfyUI-SCAIL-Pose2 feeds the raw driving video straight into the Condition node and does the background lock with a denoise mask at the sampler. This node is the old way - and the old way has a real downside.
SCAILPose2ReplacementConditionVideo suppresses the original subject's pixels in the replacement driving video before that video becomes SCAIL-2 conditioning. The idea makes sense: you're swapping person A for person B, so why give the model A's pixels to work with? The problem, per the README's own warning, is that editing the video weakens SCAIL-2's official pose-latent motion signal. The pose is read from that video, and repainting the subject throws away motion information along with the pixels.
What it actually does
It takes the original driving video and the colored semantic mask, builds a subject mask from the mask's foreground, optionally grows and blurs it, then fills the subject region according to suppression_mode. That's it - a targeted inpainting/fill step for the person you're replacing.
Inputs that matter
driving_videoandpose_video_mask- the originals. Use the same mask the Condition node gets.mask_preset-custom,tight,default,loose, orsoft. Non-custom presets override your grow/blur values, so don't set those and then wonder why they're ignored.grow_pixels/blur_pixels- how far the subject region expands and how soft its edge is.suppression_mode- how the subject gets filled:blur_fill(default),mean_fill,black_fill,white_fill, ornoise_fill. Blur fill keeps the local context-ish color; black/white/noise are progressively more aggressive.suppression_strength-0.0keeps the original subject untouched,1.0fully suppresses it. That's the dial if you want partial suppression.noise_seed- deterministic seed fornoise_fillonly.
Outputs are driving_video_condition (an IMAGE you'd wire into Condition.driving_video) and a summary string.
How the presets break down
If you're going to experiment, the README's own conservative starting point is custom preset, grow_pixels=8, blur_pixels=0, blur_fill, suppression_strength=1.0. The built-in presets are tight (2px grow, 0 blur), default (8/0), loose (16/2), and soft (12/4).
When it's worth using
Honestly, rarely. The README calls it a "legacy/experimental/manual fallback" and warns it can reduce pose accuracy. If you use it, do it as a deliberate experiment, and only after you've confirmed the sampler denoise-mask path is wired correctly - because if that path is broken, no amount of suppression here fixes the background bleed, and you'll have degraded the pose signal for nothing. The one thing it can't do is make the canonical route faster. It's a tool that exists for edge cases, and the pack is refreshingly honest about that.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| driving_video | IMAGE | — | |
| pose_video_mask | IMAGE | — | |
| mask_preset | COMBO | custom | 5 options: custom, tight, default, loose, soft |
| grow_pixels | INT | 80–512 | — |
| blur_pixels | INT | 00–512 | — |
| suppression_mode | COMBO | blur_fill | 5 options: blur_fill, mean_fill, black_fill, white_fill, noise_fill |
| suppression_strength | FLOAT | 1.000–1 | — |
| noise_seed | INT | 00–4294967295 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| driving_video_condition | IMAGE | — |
| summary | STRING | — |