ComfyUI Node

SCAIL CMU Motion

Play real mocap — walks, runs, fights — and chain them into one continuous performance

By ckinpdx·Created 9 months ago·Updated 8 months ago· 17
SCAIL CMU Motion
  • library
  • scail_pose
  • pose_sequence_in
  • pose_sequence
  • frame_count_out
  • motion_info
category
selection_mode
motion_id
transition_frames12
loop_mode
target_fps24

The AIST nodes make people dance; SCAILCMUMotion makes people do everything else. It plays single motion-capture sequences from the CMU library - walking, running, jumping, fighting, sports, climbing, sitting, even 55 two-person paired interactions like handshakes and partner dances. The standout feature is that it isn't dance-specific at all, and unlike AIST (which keeps dancers rooted in place), CMU motions keep their original trajectory: a walking motion actually moves the character across the frame. Chain a walk into a run into a jump and you get a continuous locomotion path, not a stationary figure doing calisthenics.

How it works

Feed it a CMU_LIBRARY from SCAILCMULibraryLoader and pick a motion:

  • category - one of 16 categories (walk, run, jump, dance, fight, sports, climb, interact, sit, crouch, gesture, swim, getup, fall, balance, misc). Walk alone has 955 motions.
  • selection_mode - random (grab any motion in the category) or specific, where you give a motion_id like 02_01.
  • loop_mode - none (play once), loop, or ping_pong (play, then reverse - great for a character pacing).
  • target_fps - output frame rate. The source data is 120fps and gets scaled down, so 24fps is a sensible default.
  • transition_frames - frames to blend from the previous pose or sequence, which is what makes chaining smooth.

The two optional inputs are where the chaining magic lives: scail_pose gives a reference pose for positioning/scaling (so your character starts where your character stands), and pose_sequence_in takes a previous motion's sequence so you can daisy-chain. The README's example is literally Walk → Run → Jump, each node's pose_sequence going into the next node's pose_sequence_in.

Outputs: pose_sequence (into the renderer or the next motion node), frame_count_out (an INT you can feed into your generation length), and motion_info (a STRING describing what was selected - handy when you picked random and want to know what you got).

Installing and troubleshooting

Pack-wide install: clone ckinpdx/ComfyUI-SCAIL-AudioReactive into ComfyUI/custom_nodes, pip install -r requirements.txt, restart, or use ComfyUI Manager. First run through the loader pulls the ~660MB CMU library - the largest download in the pack, and the thing to plan for.

Real-world gotchas: with random selection you get no control over which motion, which is exactly why motion_info exists. And because CMU motions drift (the character moves in world space), a chained sequence will keep accumulating that drift across nodes - great when you want continuous locomotion, surprising when you chain a walk into a stationary dance and the dancer arrives off-screen. Use scail_pose on the first node in a chain to anchor position, and keep an eye on transition_frames when switching categories so a run doesn't slam into a sitting pose.

CategorySCAIL/Motion

Inputs (9)

NameTypeDefaultDescription
libraryCMU_LIBRARY
categoryCOMBO16 options: walk, run, jump, dance, fight, sports, +10
selection_modeCOMBO2 options: random, specific
motion_idSTRINGMotion ID when selection_mode is 'specific' (e.g., '02_01')
transition_framesINT120–60
loop_modeCOMBO3 options: none, loop, ping_pong
target_fpsINT241–120
scail_poseoptSCAIL_POSE
pose_sequence_inoptSCAIL_POSE_SEQUENCE

Outputs (3)

NameTypeDescription
pose_sequenceSCAIL_POSE_SEQUENCE
frame_count_outINT
motion_infoSTRING