🦾 Creature Rig Bridge (TRELLIS mesh -> anyCreature anims)
Give a rigless TRELLIS monster a skeleton (and free animations)
- glb_path
The KB's 3D generation doc is blunt about the ceiling here, and the corpus quote behind it is even blunter: generated meshes are "entirely unusable for interactive applications" because they have no rig at all. Humanoids get solved by template rigs and retargeting. Creatures generally don't - nothing wants to guess where a hound's shoulder is.
Creature Rig Bridge takes a different route. Instead of inventing a skeleton, it borrows one: take an existing creature GLB that already has an armature with baked idle/move animations, bind your static generated mesh onto it, and you inherit those animations for free. The pack's own note calls this the R&D path and says it's the only one on this stack that produces textured and animated creatures, because the humanoid tooling - SOMAX, Kimodo - is humanoid-only by policy.
How it works
Blender runs headless as a subprocess, same discipline as the rest of the pack's Blender work - no bpy imported into ComfyUI's process.
- Import the creature GLB (armature, skinned meshes, actions) and the mesh GLB (static, textured).
- Find the armature, sanity-check that it has skinned body meshes, and find a materialised target mesh that isn't bound to it.
- Normalise the mesh onto the creature: uniform scale to
height_ratio, XZ-centred on the creature's bounds, base-aligned to minimum Z. That's the "it stands on the ground and isn't sideways" step. - Skin. For every mesh vertex, compute the distance to every deformable bone segment in world space (head to tail, not just the head point), take the top-K bones by inverse distance, normalise them into weights, and write them as vertex groups plus an armature modifier - standard linear blend skinning.
- Optionally delete the creature's own body meshes and export a GLB with skins and animations.
Two details stand out as sensible rather than clever, which is the right kind of sensible. Bone segments rather than joint points means a vertex on a forearm binds to the forearm instead of the elbow. And the bounding-box checks fail loudly - "no armature in creature GLB", "no skinned body mesh on creature armature", "no materialized target mesh found", "bbox failure" - instead of exporting something subtly wrong.
Inputs and outputs
creature_glb- the anyCreature GLB with armature and animations: a filename ininput/oroutput/, or an absolute path.mesh_glb- your static textured mesh (a TRELLIS asset). Same resolution rules.height_ratio(default 1.0, 0.05–10) - mesh height as a fraction of the creature's bind-pose height. This is your scale dial: 0.5 for a cub-sized version of the same mesh, 1.5 for something imposing.max_influences(default 3, 1–8) - max bones per vertex, nearest segments winning. 3 is a sane default; push to 4 for smoother deformation on complex creatures, higher if you see hard creases at joints.strip_body(default true) - delete the creature's own body meshes so only your bound mesh exports. Turn it off if you want the original body too.
One output: glb_path, written to ComfyUI's output/.
Install
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/JayDataEngineer/melite-poser-nodes.git
Restart, or install melite-poser-nodes via ComfyUI Manager. Pack deps are py-soma-x[anny], trimesh and xatlas; this node uses none of them directly. It shares Blender resolution with RayRenderGLBViews: BLENDER_BIN, else blender on PATH, else the portable fallback, else a loud FileNotFoundError. Runs CPU-only, which is fine - it's geometry maths, not rendering.
Where people get burned
Nearest-segment skinning has no idea what your model is. A vertex on a tail that happens to sit close to a hind leg will bind to the leg. So will anything thin and ambiguous - antennae, fins, ear flaps, a spiked ridge. The fix is usually max_influences and a better height_ratio, but for genuinely awkward silhouettes, this is where you go back to Blender.
Scale first, or the bind is wrong. height_ratio sets a uniform scale fit before skinning. Get the proportions off and a hound mesh comes out as a chihuahua-perched-on-a-stallion. Check one render before you batch.
strip_body is destructive and defaults to on. With it enabled, the creature's original body isn't in the output. If you wanted the original skin showing through as an underlayer, turn it off.
The creature GLB has to be a real animated rig. Armature plus skinned meshes plus actions. A static creature mesh with a bone-less "rig" produces the "no skinned body mesh on creature armature" error, which is at least a clear one.
You inherit the creature's rig proportions, not your mesh's. The animations were authored for whatever the source creature's limb lengths were. A mesh with very different proportions will look like it's moving someone else's body. There's no retargeting here - that's the trade for skipping the retargeting problem entirely.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| creature_glb | STRING | anyCreature GLB (armature + idle/move): filename in input/ or output/, or absolute path. | |
| mesh_glb | STRING | Static textured mesh GLB (e.g. TRELLIS asset) to bind onto the skeleton. | |
| height_ratio | FLOAT | 1.000.05–10 | Mesh height as a fraction of the creature bind-pose height. |
| max_influences | INT | 31–8 | Max bone influences per vertex (nearest segments win). |
| strip_body | BOOLEAN | true | Delete the creature body meshes; export only the bound mesh. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| glb_path | STRING | — |