ComfyUI Node

SkinTokens Relabel

SkinTokens Relabel speaks Mixamo and UE5

By stevelittlefish·Created 3 days ago·Updated a day ago· 1
SkinTokens Relabel
  • glb
  • relabeled_glb
filename_prefixskintokens_relabeled
conventionMixamo
relabel_fingerstrue

Here's a fact of the 3D world that surprises no one who's been burned by it: animation tools match bones by name. A skeleton is a tree of joints, and Mixamo-based tools (and NVIDIA's Kimodo text-to-motion, which is the thing this whole pack is quietly building toward) look for mixamorig:Hips, mixamorig:LeftArm, and friends by string, not by geometry. Rig a character with generic bone names and no animator on earth will touch it. SkinTokens Relabel exists to fix exactly that.

It takes an already-rigged glb whose joints are named bone_0 … bone_N and renames them to a standard convention - Mixamo (mixamorig:LeftHandIndex1…) or UE5 (pelvis, spine_01, upperarm_l, hand_l, …). Crucially, it's model-free: no SKINTOKENS_MODEL socket, no 14 GB download, pure offline Python. That makes it usable on rigs that came from anywhere, not just from this pack's own Rig node.

How it finds the bones without any ML

The recognizer is topology-driven rather than learned. It walks the skeleton graph and finds the pelvis as the first bone with three or more children, then splits descendants into spine and legs by subtree size, walks up the spine to the chest, and separates arms from neck the same way. Left and right are decided anatomically from the rig's own forward direction (it reads the toes), so it works regardless of which way a generated character happens to face. Finger fan-out varies rig to rig, which is why finger relabeling is its own toggle.

The whole pass renames roughly the two dozen core humanoid bones via per-convention name tables. And it never reorders joint indices - only names change - so the JOINTS_0 weight data built from indices stays perfectly consistent with the renamed glTF nodes. No re-skinning happens, which is the part people worry about for no reason.

Inputs and output

  • glb - a FILE_3D_GLB, FILE_3D_GLTF, or generic FILE_3D. Needs to be a rigged file; a bare mesh has no joints to rename.
  • convention - Mixamo (default) or UE5.
  • relabel_fingers - on by default. Leave it on for characters; if you're relabeling a rig whose finger chain doesn't match the expected structure, this is the first thing to try flipping off.
  • filename_prefix - defaults to skintokens_relabeled; the output file lands in ComfyUI's output directory with unique-name handling.

Output is a single relabeled_glb on a FILE_3D_GLB socket, ready for Preview3DAdvanced (flip on showSkeleton and you'll see the new names in the node tree) or Save3D, or a wire straight into an animation stage.

Install

ComfyUI Manager, search SkinTokens-NoBlender, or:

cd ComfyUI/custom_nodes
git clone https://github.com/stevelittlefish/ComfyUI-SkinTokens-NoBlender
pip install -r ComfyUI-SkinTokens-NoBlender/requirements.txt

The requirements list is light here - transformers/diffusers for the Rig path plus trimesh and pygltflib for glb I/O. This node touches only the pure-Python side, so it runs even if you never want to pull the big model.

When it won't help

It's a humanoid relabeler. Feed it a quadruped or a prop with a rig and there's nothing structural for the recognizer to map - don't expect mixamorig:Hips out of a four-legged skeleton. And it renames bones; it doesn't fix a bad rig. If your glb has generic names and contaminated weights, run SkinTokens Clean Weights alongside, or just rig fresh with SkinTokens Rig, which folds relabeling in as a default-on flag and does it all in one pass.

CategorySkinTokens

Inputs (4)

NameTypeDefaultDescription
glbFILE_3D_GLB,FILE_3D_GLTF,FILE_3D
filename_prefixSTRINGskintokens_relabeled
conventionCOMBOMixamo2 options: Mixamo, UE5
relabel_fingersBOOLEANtrue

Outputs (1)

NameTypeDescription
relabeled_glbFILE_3D_GLB