Preview Motion (AnimoFlow)
Watch your raw motion before you bother rigging it
- npz_b64
The full AnimoFlow pipeline is generator → resample → IK → rig → export, and the rigged preview is the slow part. AnimoFlow_PreviewMotion is the shortcut: it renders the raw motion straight from the NPZ as a simple animated skeleton in the ComfyUI preview pane - no IK, no Blender, no character - so you can decide in seconds whether a seed is worth carrying forward. It's a sanity-check node, and honestly the most-used node in the pack for anyone iterating on prompts.
It does this natively in the ComfyUI process with matplotlib - the skeleton's joints get projected at a fixed elevation and azimuth and drawn as frames, then shown as a preview image sequence. The "motion" here is the pure pose data: a stick figure on a page, not a lit character. That's the point; you're checking whether the walk looks like a walk before you spend minutes rigging and exporting. The node has no outputs and is an output node, so it sits at the end of a branch off npz_b64 - you can wire the same NPZ into both the preview and the real pipeline.
The settings
- npz_b64 - an
ANIMOFLOW_NPZfrom any generator, ideally post-AnimoFlow_Resample(the preview respects the fps you give it). - motion_fps - 1–60, default 20. How fast the motion plays. Generators natively run at 20 (or 30 for Kimodo), so this should match the data you're previewing.
- frame_skip - 1–30, default 2. Renders every Nth frame. For long motions this is how you keep the preview from becoming a 200-image slideshow; the playback fps is
motion_fps / frame_skip. - size - 128–768, default 384. Preview image resolution.
- elevation / azimuth - default 15 / -60. Camera angle around the skeleton. The default three-quarter view reads motion much better than a dead-on side view.
- show_trace - default true. Draws a dashed root trajectory trace behind the character, so you can see the path as well as the pose - genuinely useful for checking whether priorMDM or Kimodo actually followed your drawn curve.
Getting it working
It's a native node - no container, no weights, no Blender. Install is the standard nodes step (ComfyUI Manager, search "AnimoFlow", or git clone https://github.com/AnimoFlow/comfyui-animoflow.git into custom_nodes/), and it needs matplotlib, which rides in with the pack's requirements. The Docker backend isn't required for this node at all; only the generator feeding it needs containers.
The one gotcha is the same one that bit people on the full pipeline: frame rate. If the motion you're previewing was generated at 20 fps but you set motion_fps to 30, the preview plays fast and you'll think the generation is broken. Wire native_fps into motion_fps and you remove the whole class of error. And if you're deciding between this and AnimoFlow_PreviewFBX: preview the NPZ when you're iterating on prompts, preview the FBX when you've committed and want to check the rigged result. This one is the cheap early gate.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| npz_b64 | ANIMOFLOW_NPZ | — | |
| motion_fps | INT | 201–60 | — |
| frame_skip | INT | 21–30 | — |
| size | INT | 384128–768 | — |
| elevation | FLOAT | 15-90–90 | — |
| azimuth | FLOAT | -60-180–180 | — |
| show_trace | BOOLEAN | true | Draw dashed root trajectory trace behind character |
Outputs (0)
No outputs