SCAIL Align to Reference
Nudge a whole dance sequence to match your character's position
- pose_sequence
- reference_pose
- aligned_sequence
Here's a scenario that'll happen your first time with this pack: you run the audio analysis, the beat-driven choreographer hands you a perfect dance sequence, and then you render it - and the dancer is standing somewhere that doesn't match your character at all. The choreographer works in its own abstract world-space; your reference pose (from DWPose) lives in the camera's space. SCAILAlignPoseToReference is the reconciliation step. It shifts an animated pose sequence so it lines up with a reference pose, and it does it using the neck.
Two inputs, both required:
pose_sequence- the animated sequence you want to move (output ofSCAILBeatDrivenPose,SCAILAISTBeatDance,SCAILAISTFullSequence, a CMU motion, whatever).reference_pose- the target you're aligning to. The tooltip is honest about the mechanism: it uses the neck position. The node takes the neck joint of the first character in the reference pose, subtracts the neck of the first frame of the sequence, and applies that offset to every frame.
That's the whole trick, and it's worth understanding because it sets expectations. This is a translation, not a full re-rig. The sequence keeps its own scale, orientation and motion - it just gets picked up and placed so its neck lands where your character's neck is. If the dancer is the right size but in the wrong place (which is the common case), this fixes it perfectly. If the scale is off or the character is rotated wrong, this node isn't the fix; you'd want to address that at the base-pose stage instead.
The single output, aligned_sequence, is the same SCAIL_POSE_SEQUENCE type it took in, so you can drop it straight into SCAILPoseRenderer or chain it onward. It slots naturally after any motion generator and before the render, which is where the alignment problem actually bites.
It's a small node with a small job, and it's one of those things that looks pointless until the moment it saves you from manually eyeballing offsets across 80 frames. Pair it with SCAILPoseFromDWPose when your base pose comes from a real image, or with SCAILBasePoseGenerator when you've positioned a procedural skeleton - the generator already places skeletons where you put them, so you'll most often need this when mixing a generated sequence with an image-derived reference.
Installation is the pack's shared routine: clone ckinpdx/ComfyUI-SCAIL-AudioReactive into ComfyUI/custom_nodes, pip install -r requirements.txt, restart. No models, no downloads, no extra deps beyond the pack's shared taichi/librosa stack. It just does one thing and does it cheaply.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_sequence | SCAIL_POSE_SEQUENCE | Animated pose sequence to align | |
| reference_pose | SCAIL_POSE | Target pose to align to (uses neck position) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| aligned_sequence | SCAIL_POSE_SEQUENCE | — |