{"service":"SkinTokens: automatic rigging (skeleton + skinning weights) for any 3D mesh (ACM TOG 2026)","model":{"model":"VAST-AI/SkinTokens","model_revision":"79736cad0fd84de384d5eede659b4ebd24effe33","checkpoint":"experiments/articulation_xl_quantization_256_token_4/grpo_1400.ckpt","skin_vae":"experiments/skin_vae_2_10_32768/last.ckpt","llm_backbone":"Qwen/Qwen3-0.6B architecture (config revision c1899de2); weights from the checkpoint","model_license":"MIT","code":"https://github.com/VAST-AI-Research/SkinTokens/tree/273b691d35989d71cd17ff2895fdc735097b92d1","code_license":"MIT","vendored_from":"https://huggingface.co/spaces/VAST-AI/SkinTokens/tree/1f4445ba2afc15adec83eb4108f893066dc2f61b (src/, configs/, bpy_server.py)","blender":"bpy 4.5.4 (wheel from the official Space)","paper":"https://arxiv.org/abs/2602.04805","method":"TokenRig: autoregressive skeleton tokens + learned skin tokens (FSQ-CVAE), beam search"},"gpu":"ZeroGPU slice of an NVIDIA RTX Pro 6000 Blackwell; only the TokenRig forward pass (mesh encoder, autoregressive token generation, skin decoding) runs there","input":"one mesh file (.glb, .gltf, .obj, .fbx, up to 60 MB): the raw request body of POST /api/rig (?filename=), a multipart `file` field, or JSON with \"example\" or \"mesh_url\"","output":"rigged.glb (mesh + armature + skin weights, glTF 2.0), rig.json (joint names, parents, rest positions, skin statistics), skin.npz (per-vertex weights), preview.png (mesh + skeleton, front and side), preview.glb (rigged mesh with visible bones and a procedural test motion)","parameters":{"num_beams":"1-20 (default 10): beam-search width; more beams, better skeletons, slower","seed":"integer (default random): the same mesh, options and seed reproduce the rig","keep_skeleton":"true: keep the armature found in the file and predict only the skin weights (default false)","preserve_original":"true: transfer the rig onto the untouched input mesh so textures, materials and world scale survive (default false: the GLB is in the normalized [-1, 1] frame)","postprocess":"true: voxel-based mask on the skin weights before normalization, slower (default false)","influences":"1-8 bones kept per vertex in the GLB (default 4)","top_k":"1-200 (default 5)","top_p":"0.1-1.0 (default 0.95)","temperature":"0.1-2.0 (default 1.0)","repetition_penalty":"0.5-3.0 (default 2.0)","preview":"true (default): also render preview.png and preview.glb"},"limits":{"upload_bytes":62914560,"max_tokens":2048,"formats":[".glb",".gltf",".obj",".fbx"],"job_ttl_h":24},"examples":["cesium_man","fox","giraffe","rigged_figure"],"workflow":["POST /api/rig with the mesh (body, multipart, \"example\" or \"mesh_url\") and options -> result with file URLs","GET the rigged_glb / rig_json / skin_npz / preview_png URLs","GET /api/jobs/{job_id} to read a result again (24 h)"],"docs":{"guide":"https://townbox-skintokens-for-agents.hf.space/llms.txt","openapi":"https://townbox-skintokens-for-agents.hf.space/openapi.json","swagger":"https://townbox-skintokens-for-agents.hf.space/docs","mcp":"https://townbox-skintokens-for-agents.hf.space/gradio_api/mcp/","gradio_api":"https://townbox-skintokens-for-agents.hf.space/gradio_api/info","examples":"https://townbox-skintokens-for-agents.hf.space/api/examples"},"stats":{"gpu_calls":2,"last_gpu_seconds":5.439,"startup_seconds":22.1,"bpy_launches":1}}