SCAIL-Pose2 SCAIL-2 Condition
The hub every SCAIL-2 workflow in this pack plugs into
- pose_video_mask
- ref_image
- ref_mask
- pose_video
- driving_video
- additional_ref_image
- additional_ref_mask
- condition
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 rawdriving_video(it raises if you leave it unconnected) and uses the reference image to replace the subject. In this mode the node automatically alignsref_imageandref_maskto thepose_video_maskgeometry 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 fromSCAILPose2ColoredMask.pose_video_mask; if you have no separate reference mask,ColoredMask.reference_image_maskworks.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- default81, 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.autois 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_subjectis 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 directref_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.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_video_mask | IMAGE | Colored semantic driving mask for SCAIL-2 identity control; not a binary denoise mask. | |
| ref_image | IMAGE | — | |
| ref_mask | IMAGE | Reference semantic mask kept separate from the RGB reference image. | |
| mode | COMBO | animation | 2 options: animation, replacement |
| width | INT | 512 | — |
| height | INT | 512 | — |
| num_frames | INT | 81 | — |
| reference_fit_mode | COMBO | auto | 5 options: auto, contain, cover, fit_height, fit_width |
| reference_anchor | COMBO | auto | 3 options: auto, bottom_center, center |
| reference_target_frame_policy | COMBO | median_bbox | 3 options: median_bbox, first_valid, largest |
| reference_control_region | COMBO | auto | 3 options: auto, subject, upper_subject |
| reference_bbox_margin | INT | 00–512 | — |
| reference_max_scale | FLOAT | 2.000.01–10 | — |
| reference_min_mask_area_ratio | FLOAT | 0.00050–1 | — |
| pose_videoopt | IMAGE | Historical socket name for the RGB driving/conditioning video used by animation mode. | |
| driving_videoopt | IMAGE | Raw RGB replacement driving video; used instead of pose_video when mode is replacement. | |
| additional_ref_imageopt | IMAGE | — | |
| additional_ref_maskopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| condition | SCAIL2_CONDITION | — |