Nodes/AnimoFlow/GLB Export (AnimoFlow)
ComfyUI Node

GLB Export (AnimoFlow)

The last node in the pipeline, and the one that makes your animation portable

By AnimoFlow·Created 2 months ago·Updated about a month ago· 1
GLB Export (AnimoFlow)
    • glb_filename
    fbx_filename
    enabledtrue
    output_dir/tmp/animoflow-output
    reduce_keyframesfalse
    error_degrees3.0
    snap_to_groundtrue
    character
    traj_restore_json
    compress_outputfalse
    downsize_texturesfalse

    AnimoFlow_GLBExport is the terminal node of the standard AnimoFlow workflow: it takes the rigged FBX from AnimoFlow_Rig and converts it to GLB - the format that actually plays everywhere. GLB is the whole artifact: mesh, texture, skeleton, and animation in one self-contained binary you can drop into a web viewer, Blender, a game engine, or a Three.js scene. The raw rig FBX doesn't have the production treatment; this node is where snap-to-ground, trajectory restore, and the character's polish get baked in.

    It works by shelling out to Blender - same binary requirement as AnimoFlow_Rig, same blender: command not found failure if it's missing. The Blender script it runs is the pack's single source of truth for export: the same script the hosted HF Space executor runs, so a local GLB carries the full treatment. That means phantom-mesh strip (cleaning leftover helper meshes), snap-to-ground, trajectory restore (putting the character back on the exact curve you drew), the Y_bot brand tint, and matte-list character flattening.

    Inputs that matter

    • fbx_filename - the path string from AnimoFlow_Rig.
    • enabled - default true. False skips the RDP keyframe-reduction pass but still converts FBX→GLB. This is the toggle for "I want to debug the geometry without the aggressive simplification."
    • snap_to_ground - default true. Forces the character's lowest point onto the floor plane. Leave it on; it's the difference between a floating animation and a planted one.
    • character and traj_restore_json - both optional and both usually auto-wired. character drives the snap sidecar lookup and brand policy (it's re-emitted from AnimoFlow_Rig), and traj_restore_json comes from the draw-pad nodes ({"theta_rad","tx","tz"} from curve canonicalization) so the export puts the motion back where you drew it. Empty string = identity, no restore.
    • reduce_keyframes / error_degrees - optional full-skeleton keyframe reduction via a shared RDP (Ramer–Douglas–Peucker) pass. error_degrees (default 3°) controls how much rotation error the simplification tolerates. If your animation's file size matters more than perfect fidelity, flip reduce_keyframes on.
    • compress_output / downsize_textures - the two post-steps, both default off locally. On the hosted Space they're enabled because file serving is throttled; locally the files come off your own disk, so Draco+Meshopt compression (requires the gltfpack binary) and texture downscaling to ≤1024px JPEG are optional. The README flags a real edge case here: Blender 5's bundled glTF addon rejects EXT_meshopt_compression, which is another reason these stay off by default.

    Output

    A single glb_filename (STRING). The curated workflows run it into AnimoFlow_FBXToPreview3D for on-canvas playback, but that's just the preview path - the GLB is also your deliverable.

    Gotchas

    Two things bite people. First, Blender: it must be installed and findable, same as AnimoFlow_Rig. Second, if you hand-built a graph and skipped the rig node, there's no FBX - this node converts FBX, not BVH or NPZ, so the chain is Rig → GLBExport or nothing. And if you're exporting for a web viewer, remember the preview note: GLB is the artifact to ship, not the rig FBX - the GLB carries the snap, tint, and trajectory-restore that make it look right.

    CategoryAnimoFlow/Export

    Inputs (10)

    NameTypeDefaultDescription
    fbx_filenameSTRING
    enabledBOOLEANtrue
    output_diroptSTRING/tmp/animoflow-output
    reduce_keyframesoptBOOLEANfalse
    error_degreesoptFLOAT3.00.1–30
    snap_to_groundoptBOOLEANtrue
    characteroptSTRING
    traj_restore_jsonoptSTRING
    compress_outputoptBOOLEANfalse
    downsize_texturesoptBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    glb_filenameSTRING