Nodes/ComfyUI-UniMate/UniMate Mesh Loader
ComfyUI Node

UniMate Mesh Loader

Pointing UniMate at a rigged skeleton

By visualbruno·Created 21 days ago·Updated 21 days ago· 5
UniMate Mesh Loader
    • rigged_mesh
    • info
    ◄mesh▾►
    ◄mesh_path►

    If you came here from an image-to-3D workflow, reset your expectations, because this node does not do the thing that loader does. There's no TRIMESH socket, no geometry traveling down a wire, no interactive preview. UniMate Mesh Loader takes a file path to a rigged asset - mesh plus skeleton plus skin weights - and hands the rest of the graph a string. That's the whole node.

    It's a deliberate design choice, and a correct one. Everything downstream in this pack depends on the skeleton: preparation labels joints, the sampler conditions the motion on joint identities, export drives bone transforms. A trimesh carries triangles and nothing else, so a TRIMESH input here would be a type that can't express the thing you need. If you don't have a rig yet, this node can't help you and no amount of reloading will change that.

    How it works

    On load, the node walks ComfyUI/input recursively and collects every .glb, .gltf and .fbx it finds. That becomes the dropdown. Pick one, and it checks the file exists and reports its size - Rimuru.glb (12.4 MB) - as the info output. The rigged_mesh output is the absolute path as a string.

    That string is the point. It's the exact shape ComfyUI-SkinToken produces from its rigged_path output, so if you built a rig with that pack you can drag the wire straight across with no adapter, no conversion, no "why won't these connect". And because it's just a path, you can point it anywhere - a Blender export, a purchased asset, a rig you made last year.

    The inputs and outputs

    • mesh - dropdown of rigged files found under ComfyUI/input. Only files in there show up. That's the gotcha, and it's the one this node trips you on: your GLB sitting in output/ or on your desktop will not appear, and the empty-state placeholder (<put a rigged .glb in ComfyUI/input>) is the node telling you so.
    • mesh_path - optional, an absolute path. Overrides the dropdown entirely. This is how you feed it a file from anywhere on disk, including the output folder.
    • rigged_mesh - the path string. Wire it into UniMate Mesh Preparation, whose rigged_mesh input is a forced input, so this wire is the expected way in.
    • info - filename and size. Useful for confirming you picked the version of the asset you thought you did, which happens less often than you'd hope.

    Getting the pack installed

    The loader is instant and dependency-free, but the pack around it isn't, so here's the whole thing once:

    cd ComfyUI/custom_nodes
    git clone https://github.com/visualbruno/ComfyUI-UniMate
    pip install -r ComfyUI-UniMate/requirements.txt
    

    Then clone UniMate somewhere and point the pack at it - C:/Git/UniMate, ~/UniMate and /opt/UniMate are picked up automatically, otherwise set UNIMATE_REPO or drop the path in unimate_path.txt. Download a checkpoint run from Linzhan/UniMate into ComfyUI/models/unimate/<run>/ keeping config.json, dataset_stats.npy and checkpoints/ intact. ComfyUI Manager will also install it from the pack title if you'd rather click. Restart ComfyUI, and the five UniMate nodes appear under 3D/UniMate.

    What you should actually feed it

    This is where the wider 3D ecosystem matters. The image-to-3D models everyone reaches for - Hunyuan3D, TRELLIS - return triangle soup with machine-made UVs and no rig at all. Feeding one of those into this node gets you a file that passes the loader and then dies in preparation, because there's no skeleton to label. Same for a static prop.

    So your real options are: a rig you or an artist made in Blender, a rigged asset you downloaded or bought, or a rig built with a dedicated tool. UniMate doesn't rig anything for you - it's the motion half of the problem, and the rig is your input to it. Packs like Mesh2motion (and jtydhr88's work on the native ComfyUI 3D nodes) are the "get a rig inside ComfyUI" side of that; this is the "now make it walk" side.

    Two more practical notes. FBX is accepted here, but a meshless skeleton rig - bones with no skinned geometry - will sample fine and then fail at export, because there's no canonical mesh for the export node to write animation onto. And the joint limit that bites everyone is counted at the next node, not this one: the loader will happily hand over a 90-bone character rig, and Mesh Preparation is where you find out that 71 is the ceiling.

    Category3D/UniMate

    Inputs (2)

    NameTypeDefaultDescription
    meshCOMBO1 options: <put a rigged .glb in ComfyUI/input>
    mesh_pathoptSTRINGAbsolute path to a rigged GLB/GLTF/FBX; overrides the dropdown.

    Outputs (2)

    NameTypeDescription
    rigged_meshSTRING—
    infoSTRING—