Nodes/ComfyUI-GGUF-Loader/UniRig Skeleton Model Loader ⚡
ComfyUI Node

UniRig Skeleton Model Loader ⚡

The Thing That Guesses Where Bones Go

By ChrisColeTech·Created 2 months ago·Updated 4 days ago· 24
UniRig Skeleton Model Loader ⚡
    • skeleton_model
    ◄checkpoint▾►
    ◄precisionfp32►

    You've got a mesh from TripoSG or TRELLIS.2 and you want it to move. Somewhere in that triangle soup there's a skeleton waiting to be discovered, and UniRig's job - one half of it, anyway - is to find it. This node loads that half.

    What UniRig is, briefly

    UniRig is the SIGGRAPH 2025 paper everyone points at when this question comes up, and the reason isn't subtle: nothing in the open image-to-3D stack gives you a rig, and a mesh you can't pose is a mesh you can't animate. The reception when someone wrapped it for ComfyUI was warm and a little relieved - the release thread landed at +160 with comments along the lines of "that should be so much more convenient than the c4d rig I'm currently using". Auto-rigging has been a paid DCC feature and a research demo for years; here it is in a graph.

    Worth saying plainly, because this is where expectations go wrong: an auto-rig is a last step, not a shortcut past the work. If the mesh's topology is marching-cubes triangles, it'll rig, and the deformation will be mushy at joints because there are no loops to bend. The community's own framing is that you retopo first, then rig - and that retopo is Blender handiwork, not something ComfyUI is going to do for you. UniRig saves you the weight painting. It doesn't save you the modelling.

    What this node loads

    skeleton.safetensors, a 1.4 GB checkpoint containing UniRig's skeleton generator: a Michelangelo point-cloud encoder followed by an OPT-350m decoder running in pure PyTorch that emits bone tokens autoregressively. That "pure PyTorch" is doing real work here - the upstream ComfyUI-UniRig pack bundles its own Blender and a heavier dependency set, while this port needs no Blender, no spconv, no torch_scatter/torch_cluster, and no transformers at all. If your reason for avoiding 3D nodes in ComfyUI has been CUDA-extension install hell, this family is deliberately built to sidestep it.

    Two inputs:

    • checkpoint - the .safetensors from ComfyUI/models/unirig/. The dropdown lists them all, sorted so filenames containing "skeleton" float to the top, because having both UniRig checkpoints in one folder is the normal state of affairs.
    • precision - fp32 (default), bf16, fp16, auto. The tooltip spells out the split personality: fp32 is the POC's default; auto picks bf16/fp16 where the GPU supports it, which is what upstream ComfyUI-UniRig does. Start at fp32 if you're chasing fidelity on a 24GB card, switch to auto if you're tight on VRAM and the bones look the same to you.

    Output is skeleton_model, which only the Extract Skeleton node wants.

    Files and folders

    ComfyUI/models/unirig/ - deliberately the same folder upstream ComfyUI-UniRig downloads into, so if you already have skeleton.safetensors and skin.safetensors sitting there from that pack, this one just uses them. No re-download.

    # from ChrisColeTech/unirig on Hugging Face
    # skeleton.safetensors (1.4 GB)  -> ComfyUI/models/unirig/
    # skin.safetensors     (1.5 GB)  -> ComfyUI/models/unirig/
    

    Both packs can live side by side: every node id and socket type in this port is CCTech-prefixed (CCTECH_UNIRIG_SKELETON_MODEL and friends) specifically so installing this doesn't overwrite ComfyUI-UniRig's registrations.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
    pip install -r ComfyUI/custom_nodes/ComfyUI-GGUF-Loader/requirements.txt
    

    Manager search "ComfyUI-GGUF-Loader" is the same thing. For this family specifically the requirements.txt route matters - UniRig wants trimesh, addict, einops and optionally fast-simplification, and trimesh in particular is not optional: the skinning stage voxelizes the mesh with it. fast-simplification is the nice-to-have that gives you the POC's exact decimation; without it, core ComfyUI's QEM decimator is used instead.

    Where people get burned

    The dropdown says none. Nothing in models/unirig ends in .safetensors, or the folder is empty. There's no search outside that path.

    "UniRig checkpoint 'x' not found". The dropdown offered a name and then the path lookup failed - usually because the file was moved or a symlink broke between listing and execution. Rare, but it means your model folder isn't stable (network drive, half-synced cloud folder).

    Half the pair installed. This node is useless without the skinning model and vice versa; you need both checkpoints, both loaders, and an Extract Skeleton → Apply Skinning chain between them. If you've only downloaded skeleton.safetensors you have the ability to find a skeleton and no ability to bind anything to it.

    fp16 on a card that quietly mishandles it. The auto path uses ComfyUI's own capability checks; picking fp16 by hand overrides them. If the skeleton comes out mangled on a 10-series or an older AMD card, drop back to fp32.

    Category🤖 CCTech/UniRig

    Inputs (2)

    NameTypeDefaultDescription
    checkpointCOMBOskeleton.safetensors (UniRig articulation-xl AR model) in models/unirig.
    precisionCOMBOfp32fp32 is the POC default; auto = bf16/fp16 where the GPU supports it (ComfyUI-UniRig's default).

    Outputs (1)

    NameTypeDescription
    skeleton_modelCCTECH_UNIRIG_SKELETON_MODEL—