Nodes/ComfyUI-SkinToken/SkinToken Rig
ComfyUI Node

SkinToken Rig

Auto-skeleton and skinning inside ComfyUI

By Rizzlord·Created 5 months ago·Updated 2 months ago· 43
SkinToken Rig
  • trimesh
  • trimesh
  • rigged_path
  • asset
  • backend
ckpt_nameexperiments/articulation_xl_quantization_256_token_4/grpo_1400.ckpt
deviceauto
save_filetrue
filename_prefix3D/SkinToken_
file_formatglb
use_transferfalse
use_postprocessfalse
group_per_vertex4
bottom_center_originfalse
smooth_angle55
skeleton_templateKeep model names
top_k5
top_p0.95
temperature1.0
repetition_penalty2.0
num_beams10

This is the node the pack is named for, and it's doing something genuinely annoying for you. Feed it a character mesh as a TRIMESH and it predicts a full skeleton - joint positions, bone hierarchy, lengths - plus per-vertex skinning weights, then exports a rigged GLB or FBX you can drop straight into Blender, Unity, or Unreal. No manual bone placement. No weight painting. That's the whole pitch, and it mostly delivers.

If you've been generating 3D in ComfyUI - TRELLIS, Tripo, HY3D - you know the pipeline stops at geometry. You get a pretty static mesh and no way to animate it. Historically the answer was "export to Blender, fight Mixamo, fix the weights by hand." This node is the in-graph version of that step. The model underneath is SkinTokens by VAST-AI, the successor to UniRig, and it's the real deal: a GRPO-trained autoregressive transformer on a Qwen3-0.6B backbone that predicts skeleton and skinning as a single token sequence, with an FSQ-CVAE (the last.ckpt VAE) handling the discrete skin tokens.

How it actually works

The vendored model reads your mesh's vertices, faces, and normals, runs the prediction, then hands the result to Blender to build the armature, assign vertex groups, and export. Blender is non-negotiable: it's either imported as bpy in your ComfyUI env (rare) or, far more commonly, run headless as a subprocess via the pack's bridge script. Python 3.12 environments always take the headless path, and most ComfyUI installs can't import bpy anyway. Headless still needs a real Blender binary - more on that below.

First run also downloads both checkpoints (~1.6 GB) into ComfyUI/models/skintoken/, so budget one slow pass before anything fast happens.

The inputs that matter

  • trimesh (required) - your mesh. A clean, closed character mesh in a T-pose gets noticeably better results than arbitrary geometry.
  • skeleton_template - Keep model names, Mixamo, or Unreal Engine 5. Renames bones so you can retarget directly. UE5 is the move for Mannequin retargeting.
  • file_format (glb/fbx) plus save_file and filename_prefix - where the export lands (3D/SkinToken_ under your output dir by default).
  • use_transfer - rig the original high-detail mesh instead of the (simplified) generated one. Turn this on for detailed characters; the README's own tip says results get better.
  • bottom_center_origin - pivots the skeleton at the character's feet. Recommended for game engines.
  • group_per_vertex (default 4) - max bone influences per vertex. Higher = smoother deformation, slower.
  • The sampling stack (top_k, top_p, temperature, num_beams, repetition_penalty) - lower temperature and more beams give more deterministic skeletons. Leave them alone until something looks wrong.

Outputs: trimesh (the rigged mesh, for further nodes), rigged_path (the exported file's path), asset (an internal SKINTOKEN_ASSET for chaining), and backend (a string telling you whether it used bpy or blender_headless).

Install and the two walls you'll hit

Install via ComfyUI Manager (search ComfyUI-SkinToken) or clone into custom_nodes and pip install -r requirements.txt. It's a heavy requirements list - transformers, diffusers, lightning, open3d, trimesh - and needs a CUDA GPU with ~4 GB VRAM.

The two things that actually bite beginners:

  1. "Blender binary was not found." The headless export needs Blender 4.0+ on your PATH, or the SKINTOKEN_BLENDER_BIN env var pointing at the binary. Install Blender, set the env var, restart. This is the #1 reason first runs die.
  2. It's CUDA-only. The model errors out hard on non-CUDA devices - no CPU fallback. If you're on Apple Silicon or an AMD-only box, this pack won't run for you.

Other notes: use_transfer needs the source mesh path internally, which the node sets itself, so it just works - but a mesh with no faces, or garbage geometry, raises a clear error. Expect output quality to track input quality; it's a young model and character-heavy meshes are its home turf. For quick game/animation prototypes this is the fastest auto-rig in the ComfyUI ecosystem right now, and it keeps the whole loop inside one graph. That's worth the setup friction.

Category3D/SkinToken

Inputs (17)

NameTypeDefaultDescription
trimeshTRIMESH
ckpt_nameCOMBOexperiments/articulation_xl_quantization_256_token_4/grpo_1400.ckpt1 options: experiments/articulation_xl_quantization_256_token_4/grpo_1400.ckpt
deviceCOMBOauto2 options: auto, cuda
save_fileBOOLEANtrue
filename_prefixSTRING3D/SkinToken_
file_formatCOMBOglb2 options: glb, fbx
use_transferBOOLEANfalse
use_postprocessBOOLEANfalse
group_per_vertexINT41–32
bottom_center_originBOOLEANfalse
smooth_angleFLOAT550–180
skeleton_templateCOMBOKeep model names3 options: Keep model names, Mixamo, Unreal Engine 5
top_kINT51–200
top_pFLOAT0.950.1–1
temperatureFLOAT1.00.1–2
repetition_penaltyFLOAT2.00.5–3
num_beamsINT101–20

Outputs (4)

NameTypeDescription
trimeshTRIMESH
rigged_pathSTRING
assetSKINTOKEN_ASSET
backendSTRING