ComfyUI Node

SCAIL FBX Motion

Play any Mixamo FBX animation as a SCAIL pose sequence (you'll need Blender)

By ckinpdx·Created 9 months ago·Updated 8 months ago· 17
SCAIL FBX Motion
  • scail_pose
  • pose_sequence_in
  • pose_sequence
  • frame_count_out
  • motion_info
fbx_file
blender_versionNOT FOUND - Install Blender
target_fps24
transition_frames12

Every node in this pack wants to generate motion for you - beats, physics, mocap libraries. But sometimes you have a very specific animation in mind: that one Mixamo karate kick, a walk cycle that actually looks like a walk, a dance move you already own. SCAILMixamoFBX is the node that says "fine, let's just play your animation." It turns an FBX file into a SCAIL pose sequence, which means your rendered cylinder skeleton does exactly what the animation says - no audio analysis, no choreography guessing.

The name is doing double duty. "Mixamo" is Adobe's free animation site (mixamo.com), where you can grab character animations for nothing and download them as FBX. This node's real job is that it reads any FBX file, so Mixamo is the easiest source but not the only one. Drop whatever you have into ComfyUI/input/fbx_animations/ and it shows up in the dropdown.

How it works

The clever bit: the pack doesn't try to parse FBX in Python. FBX is a proprietary soup, and parsing it right means reimplementing a character rig. So this node cheats with Blender. It scans for Blender installs, then shells out headless:

blender --background --python blender_extract.py

with the FBX path and an output JSON passed via environment variables. Blender's built-in FBX importer handles the retargeting, extracts joint positions per frame, and the node resamples that trajectory to your target fps. It's a slow, separate-process operation - give it up to a couple of minutes for a long clip - but it's the one approach that actually works with real-world FBX files.

Inputs and outputs that matter

The fbx_file dropdown is built by scanning ComfyUI/input/fbx_animations/ (created automatically on install). blender_version is a dropdown of detected Blender installations - if it says "NOT FOUND - Install Blender," that's the whole problem. target_fps resamples to your video's fps (24 by default), and transition_frames blends in from the reference pose so the animation doesn't snap-jump when it starts.

The two optional inputs are worth knowing: scail_pose is a reference pose for scaling and positioning (wire in your DWPose base so the Mixamo character lands where your character actually stands), and pose_sequence_in chains onto a previous motion - same pattern as the CMU nodes. Outputs are pose_sequence (into the Pose Renderer), frame_count_out (handy for setting your generation length), and motion_info, a text description of what you just played.

Installing it

The pack itself is the usual dance:

cd ComfyUI/custom_nodes
git clone https://github.com/ckinpdx/ComfyUI-SCAIL-AudioReactive
pip install -r requirements.txt   # taichi, numpy, torch, librosa

ComfyUI Manager can also find it if you search the pack title. The extra requirement here is Blender itself - that's not a pip package, it's a program. Install it from blender.org on your PATH or in a standard location, restart ComfyUI, and the dropdown populates. On Linux, /usr/bin/blender, /snap/bin/blender and /opt/blender* are all checked.

Common issues

The two failure modes are the two dropdowns. Blender missing or in a weird spot → the node throws "Blender not found. Please install Blender and restart ComfyUI." FBX folder empty → the dropdown just says "NO FBX FILES." Both are self-explanatory once you see them. One real gotcha: Mixamo FBX exports can be huge and detailed, so a 30-second clip takes a while to extract - that's Blender chewing, not a hang. Keep target_fps at your video fps and you'll get frame counts that line up with the rest of the pack.

CategorySCAIL/Motion

Inputs (6)

NameTypeDefaultDescription
fbx_fileCOMBOFBX file from ComfyUI/input/fbx_animations/ folder
blender_versionCOMBONOT FOUND - Install Blender1 options: NOT FOUND - Install Blender
target_fpsINT241–120Output FPS (will resample if different from source)
transition_framesINT120–60Blend frames from reference pose
scail_poseoptSCAIL_POSEReference pose for scaling/positioning
pose_sequence_inoptSCAIL_POSE_SEQUENCEChain from previous motion

Outputs (3)

NameTypeDescription
pose_sequenceSCAIL_POSE_SEQUENCE
frame_count_outINT
motion_infoSTRING