Nodes/ComfyUI-Blender-Nodes/Blender: FBX to GLB
ComfyUI Node

Blender: FBX to GLB

Convert FBX to GLB without ever opening the Blender window

By michaelgold·Created 6 months ago·Updated 17 days ago· 1
Blender: FBX to GLB
    • glb_file_path
    fbx_file_path

    The name tells you exactly what this does, and it does exactly that and nothing else. BlenderFBXToGLB takes one FBX file path, hands it to a headless Blender running as a Python module, and gives you back the path to a converted .glb sitting next to the original. No 3D preview, no settings dial, no GPU involved. If that sounds small, it is - but it's the small, boring node that makes an automated 3D pipeline actually close the loop.

    Why you'd reach for it

    FBX and GLB live on opposite sides of the same pipe. FBX is the DCC interchange format - what asset packs, clients, and pipelines hand you. GLB is the web/engine deliverable - what three.js, Google's model-viewer, and Unity/Unreal actually want to eat. If you're generating 3D assets inside ComfyUI (Hunyuan3D, TRELLIS, TripoSR), those models already spit out GLB natively, so you don't need this node there. You need it when FBX shows up as input: an asset you downloaded, a model someone sent you, or a batch of files that has to become engine-ready on a schedule. For one-off conversions you'd just open Blender and hit Export; this node earns its keep when the FBX is arriving inside a workflow and a manual GUI round-trip would break the flow.

    How it works

    The mechanism is refreshingly honest. The node checks the path exists and actually ends in .fbx, then derives the output path by swapping the extension - model.fbx becomes model.glb in the same folder. There's no destination picker, which is worth knowing up front.

    Then it does the clever part: instead of calling Blender's API in-process, it spawns an isolated subprocess running the pack's blender_worker.py using the same Python interpreter that runs ComfyUI. The worker resets Blender to factory settings, imports the FBX, bakes every object's location/rotation/scale transforms, packs all resources into the file, and exports a GLB with image format set to AUTO. That isolation isn't an accident - a Blender crash kills the conversion, not your whole ComfyUI session.

    The transforms get baked in, so the result lands as a world-aligned static mesh - exactly what a web viewer wants. It also means this is a static-mesh pipeline: if your FBX carries skeletal animation you need to keep, this isn't the node; do that in Blender.

    The inputs that matter

    There's only one, and it's the whole show:

    • fbx_file_path - a plain text field. Paste an absolute path, or drag the file in. ~ is expanded, so tilde shortcuts work.

    The single output is glb_file_path - a string you can wire into any node that wants a file path (a loader, a save node, or a Python script node doing more post-processing). One string in, one string out.

    Installing it - the catch

    Install the pack the normal way: via ComfyUI Manager (search "ComfyUI-Blender-Nodes"), or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/michaelgold/ComfyUI-Blender-Nodes
    

    Then restart ComfyUI. There are no model files to download and nothing heavy to compile - the whole pack is two small Python files.

    The actual gotcha is the dependency: bpy, Blender's Python API, must be importable from the same Python interpreter that runs ComfyUI, because that's the interpreter the worker spawns. And here's the trap - bpy wheels on PyPI are pinned to exactly one CPython version per release (the 4.3–5.0 series targets Python 3.11; the 5.2.1 release targets 3.13). ComfyUI's bundled Python on many installs is 3.12, where there is no matching wheel, so a plain pip install bpy will just refuse.

    # Only works if ComfyUI's Python matches a published bpy wheel
    pip install bpy
    

    If your Python is a supported one, that's the whole fix. If it isn't, you're in the mess that "bpy is not available" errors are made of - the same wall every Blender-based ComfyUI node (UniRig, MIA) runs into. The author knows this well; he maintains buildbpy, a builder for Blender-as-a-Python-module, and comfy3d, a docker image for exactly this kind of 3D-in-ComfyUI work. Those are your escape hatches when pip won't cooperate: run ComfyUI on a Python with a published wheel, or go the container route.

    Common issues

    • bpy is not available / module not found - bpy isn't in the interpreter ComfyUI actually runs. Re-check which Python the worker uses and install there.
    • FBX file not found - the path doesn't resolve. Absolute paths beat relative ones here.
    • Input file must be an FBX - the node checks the extension and means it.

    It's a thin, honest utility from a developer who clearly lives in the 3D corner of ComfyUI. Know what it is and isn't - a one-input converter, not a pipeline - and it'll quietly take one annoying manual step out of your workflow.

    Categoryblender

    Inputs (1)

    NameTypeDefaultDescription
    fbx_file_pathSTRING

    Outputs (1)

    NameTypeDescription
    glb_file_pathSTRING