Nodes/ComfyUI-SCAIL-Pose2/SCAIL-Pose2 SCAIL-2 Condition
ComfyUI Node

SCAIL-Pose2 SCAIL-2 Condition

The hub every SCAIL-2 workflow in this pack plugs into

By rookiestar28·Created 3 months ago·Updated 14 days ago· 13
SCAIL-Pose2 SCAIL-2 Condition
  • pose_video_mask
  • ref_image
  • ref_mask
  • pose_video
  • driving_video
  • additional_ref_image
  • additional_ref_mask
  • condition
modeanimation
width512
height512
num_frames81
reference_fit_modeauto
reference_anchorauto
reference_target_frame_policymedian_bbox
reference_control_regionauto
reference_bbox_margin0
reference_max_scale2.00
reference_min_mask_area_ratio0.0005

This is the node everything else in ComfyUI-SCAIL-Pose2 is building toward. The colored mask decides who's who, the geometry node keeps poses aligned, but SCAILPose2SCAIL2Condition is where all of it gets assembled into the payload SCAIL-2 actually conditions on. If you're building a workflow with this pack, this node is the middle of the graph.

It takes your semantic masks, your reference image and mask, and your mode, and produces a validated SCAIL2_CONDITION payload - the thing every downstream adapter and embedding consumer expects.

The two modes, and why they're not optional

The mode input is the biggest decision you make here:

  • animation - uses the rendered pose video (pose_video). You're animating a character into the motion of the driving subject. Reference-geometry alignment is skipped.
  • replacement - requires the raw driving_video (it raises if you leave it unconnected) and uses the reference image to replace the subject. In this mode the node automatically aligns ref_image and ref_mask to the pose_video_mask geometry before building the condition - so a reference with a different crop, aspect, or subject scale than the driving person still lands in the right place. That alignment is the quiet magic of this node.

Both optional video inputs can stay wired at once; the node picks pose_video for animation and driving_video for replacement. Just never feed rendered skeletons into driving_video in replacement mode - they can't preserve the original subject's proportions relative to the mask.

Inputs that matter most

  • pose_video_mask, ref_image, ref_mask - the core trio. The mask comes from SCAILPose2ColoredMask.pose_video_mask; if you have no separate reference mask, ColoredMask.reference_image_mask works.
  • width / height - keep these at the final generation size. The README is explicit: don't halve them to match pose latents, because downstream integrations handle pose-latent encoding internally.
  • num_frames - default 81, which is SCAIL-2's native context. Match it to your actual frame count.
  • reference_fit_mode, reference_anchor, reference_control_region - replacement-only alignment controls. auto is usually right: whole-subject alignment for tall full-body masks, upper-subject local alignment for portraits. If the head lands wrong in a replacement, reference_control_region=upper_subject is the first thing to try.
  • reference_bbox_margin, reference_max_scale, reference_min_mask_area_ratio - safety rails so alignment can't place the reference off-screen, overscale it, or run on an empty mask. If validation fails, the node logs a warning and falls back to your direct ref_image/ref_mask.

Optional: pose_video, driving_video, and the multi-reference pair additional_ref_image / additional_ref_mask (which must be wired together, and matched in length).

Output and wiring

One output: condition (SCAIL2_CONDITION). It feeds SCAILPose2WanVideoSCAIL2Adapter.condition (or in non-wrapper workflows, whatever consumes SCAIL-2 conditions). The payload also records identity diagnostics - selected driving identity count, reference slot count, under-provisioned references - so the adapter can warn you about multi-identity setups that are missing reference coverage. Those warnings are advisory: a single reference for a two-person shot can still be a deliberate stylization choice.

The usual suspects

The classic trap is mode confusion - replacement mode erroring because driving_video is disconnected, or quietly reverting to animation behavior because you're on the wrong wire. Second: reference mismatch. If the global scale is right but the head/face is offset, that's the reference_control_region knob, not a prompt problem. And as with everything in SCAIL-2 replacement, mask coverage rules: a partial pose_video_mask leaves parts of the original subject on the preserve side, and no reference quality fixes that.

CategorySCAIL-Pose2/SCAIL-2

Inputs (18)

NameTypeDefaultDescription
pose_video_maskIMAGEColored semantic driving mask for SCAIL-2 identity control; not a binary denoise mask.
ref_imageIMAGE
ref_maskIMAGEReference semantic mask kept separate from the RGB reference image.
modeCOMBOanimation2 options: animation, replacement
widthINT512
heightINT512
num_framesINT81
reference_fit_modeCOMBOauto5 options: auto, contain, cover, fit_height, fit_width
reference_anchorCOMBOauto3 options: auto, bottom_center, center
reference_target_frame_policyCOMBOmedian_bbox3 options: median_bbox, first_valid, largest
reference_control_regionCOMBOauto3 options: auto, subject, upper_subject
reference_bbox_marginINT00–512
reference_max_scaleFLOAT2.000.01–10
reference_min_mask_area_ratioFLOAT0.00050–1
pose_videooptIMAGEHistorical socket name for the RGB driving/conditioning video used by animation mode.
driving_videooptIMAGERaw RGB replacement driving video; used instead of pose_video when mode is replacement.
additional_ref_imageoptIMAGE
additional_ref_maskoptIMAGE

Outputs (1)

NameTypeDescription
conditionSCAIL2_CONDITION