UniMate Mesh Loader
Pointing UniMate at a rigged skeleton
- rigged_mesh
- info
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 inoutput/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_meshinput 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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| mesh | COMBO | 1 options: <put a rigged .glb in ComfyUI/input> | |
| mesh_pathopt | STRING | Absolute path to a rigged GLB/GLTF/FBX; overrides the dropdown. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| rigged_mesh | STRING | — |
| info | STRING | — |