GLB Export (AnimoFlow)
The last node in the pipeline, and the one that makes your animation portable
- glb_filename
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.
characterdrives the snap sidecar lookup and brand policy (it's re-emitted fromAnimoFlow_Rig), andtraj_restore_jsoncomes 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, flipreduce_keyframeson. - 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
gltfpackbinary) and texture downscaling to ≤1024px JPEG are optional. The README flags a real edge case here: Blender 5's bundled glTF addon rejectsEXT_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.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| fbx_filename | STRING | — | |
| enabled | BOOLEAN | true | — |
| output_diropt | STRING | /tmp/animoflow-output | — |
| reduce_keyframesopt | BOOLEAN | false | — |
| error_degreesopt | FLOAT | 3.00.1–30 | — |
| snap_to_groundopt | BOOLEAN | true | — |
| characteropt | STRING | — | |
| traj_restore_jsonopt | STRING | — | |
| compress_outputopt | BOOLEAN | false | — |
| downsize_texturesopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| glb_filename | STRING | — |