Nodes/ComfyUI-HY-Motion1/HY-Motion Export FBX
ComfyUI Node

HY-Motion Export FBX

From tensor to a file Blender and Maya will actually open

By jtydhr88·Created 8 months ago·Updated 5 days ago· 307
HY-Motion Export FBX
  • motion_data
  • fbx_paths
output_dirhymotion_fbx
filename_prefixmotion
custom_fbx_path
yaw_offset0
scale0.00

This is where your motion stops being a tensor and becomes a file every DCC tool speaks. HY-Motion Export FBX takes the motion_data from Generate and writes a standard .fbx you can pull into Blender, Maya, Unreal, or any pipeline that eats FBX. It's the pack's most DCC-facing export, and it's also the one with the fiddliest dependency - plan around that.

There are two modes. With no custom model, it bakes the motion onto the pack's bundled "wooden boy" rig (a SMPL-H rigged model that ships in the repo) using its own SMPLH-to-FBX converter - that's the zero-friction path and it needs nothing beyond the pack itself. Give it a custom_fbx_path pointing at a Mixamo-rigged character and it switches to retargeting mode: it maps your generated SMPL skeleton onto the Mixamo rig's mixamorig: bones, applies the animation, and writes out the character with your motion on it. The retargeting code is adapted from the ComfyUI-HyMotion project, per the README, and it handles scale and orientation via two optional knobs:

  • yaw_offset - rotate the character around Y in degrees (-180 to 180). Set 180 if your character faces the wrong way relative to the motion.
  • scale - force a scale multiplier; 0.0 means automatic height-based scaling, which is what you want almost always.

The input that matters

custom_fbx_path has specific path rules. 3d/char.fbx defaults to ComfyUI/input/3d/char.fbx; you can be explicit with input/3d/char.fbx or output/3d/char.fbx; absolute paths work if the file exists; empty means wooden boy. The README's table covers this, and the resolution code implements exactly that - most people's first mistake is dropping a file somewhere and passing a path that doesn't match any of the patterns.

Along with motion_data, you set output_dir (a subfolder of ComfyUI's output/, default hymotion_fbx) and filename_prefix (default motion). The node returns the list of written paths and drops a .txt next to each .fbx containing the source prompt.

The dependency that will fight you

FBX export requires the official fbxsdkpy binding, and it does not install like a normal package:

pip install fbxsdkpy --extra-index-url https://gitlab.inria.fr/api/v4/projects/18692/packages/pypi/simple

That command is in the pack's requirements.txt too, but two things go wrong: the install is fragile, and the SDK is a compiled binding that historically won't build on Python 3.13 - a real, documented complaint from the pack's launch thread ("went with Python 3.13 on my install which is blocking FBX"). If the node returns "FBX SDK not installed," that's your failure mode, and you have two options: use an older Python, or skip FBX entirely and use the HY-Motion Preview Animation (3D) node's in-browser GLB export, which needs no Python deps at all. The README's own recommendation, in so many words, is that if fbxsdkpy fights you, don't fight back - take the GLB.

One more note: retargeting quality is "automatic Mixamo mapping, right now" per the README - Mixamo rigs work out of the box, other rigs are a coin flip. Check the result in your DCC before you trust it for production.

CategoryHY-Motion

Inputs (6)

NameTypeDefaultDescription
motion_dataHYMOTION_DATA
output_dirSTRINGhymotion_fbx
filename_prefixSTRINGmotion
custom_fbx_pathoptSTRINGPath to custom FBX model (Mixamo character). Supports: 'input/3d/char.fbx', 'output/3d/char.fbx', or just '3d/char.fbx' (defaults to input/). Leave empty for default wooden boy.
yaw_offsetoptFLOAT0-180–180Rotate the character around Y-axis in degrees (e.g., 180 to face opposite direction).
scaleoptFLOAT0.000–10Force specific scale multiplier. Leave at 0.0 for automatic height-based scaling (recommended).

Outputs (1)

NameTypeDescription
fbx_pathsSTRING