HY-Motion Preview Animation (3D)
The inline viewer that doubles as a GLB exporter
- motion_data
- motion_data
For a few seconds, this node turns ComfyUI into a tiny game engine. Wire your motion_data into HY-Motion Preview Animation (3D) and an interactive Three.js viewer pops up in the UI showing the generated motion on the pack's wooden boy model - play/pause, speed control, timeline scrubbing, and toggles for skeleton, mesh, and grid. It's the difference between squinting at 2D stick figures and actually seeing a character move.
Under the hood the node converts the generated per-joint rotations into quaternions, packs the frames plus translation and timing into a JSON payload, and hands it to a frontend viewer that lives in the pack's web directory. All the heavy 3D work happens in your browser via Three.js, which is why this node has essentially zero Python dependencies and runs on anything the pack runs on.
And here's the trick worth knowing: that same viewer has an Export GLB button. It uses Three.js's GLTFExporter straight in the browser to save the animation as a .glb file - the wooden boy mesh with the motion applied. No Python FBX SDK, no retargeting, no extra packages. If the only thing you want is "a GLB of this motion on the default character," this node is the easiest path in the whole pack, and the README explicitly points FBX-troubled people here as the escape hatch.
Inputs
- motion_data - from HY-Motion Generate.
- sample_index - optional, 0-3, which generated sample to view. Defaults to 0.
That's it. Two inputs, one inline viewer, one output that passes the motion JSON through (a STRING output, mostly a formality - the display is the point).
The gotchas
Three things bite people here. First, nothing saves automatically. The node never writes a file - you must click "Export GLB" in the viewer to download the animation. The README says this in bold and it still catches people; they preview, queue the next run, and wonder where their file went.
Second, the viewer is showing the built-in wooden boy. If your goal is your own character, this node won't get you there - that's what HY-Motion Export GLB (Mixamo) is for, which retargets onto a custom rigged .glb in Python. The in-browser export here is the fast, zero-dependency, default-character path, and you should treat it as such.
Third, the viewer is an inline ComfyUI widget, which means it lives and dies with the node's output on the canvas. Regenerate and the old preview is gone. Want to keep the motion? Click Export GLB before you re-queue, or run the FBX/NPZ save nodes alongside.
It's the pack's most fun node and one of its most useful - for checking whether a motion actually reads as a person moving, nothing else comes close. Install is just the pack itself (Manager search "ComfyUI-HY-Motion1", or clone + pip install -r requirements.txt); the viewer assets ship in the repo.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| motion_data | HYMOTION_DATA | — | |
| sample_indexopt | INT | 00–3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| motion_data | STRING | — |