𦴠Zero-Click Autonomous 3D Mesh Rigging Engine. Browser-local ONNX vision model + dual-pipe zero-copy Web Workers for instant procedural character rigging.
3
stars
10
commits
TypeScript
primary language
Sep 9, 2026
updated
Zero-Click, Browser-Local Character Rigging Pipeline
Upload a static .gltf mesh. Instantly get a fully rigged, IK-ready SkinnedMesh.
No server-side processing. No manual bone placement. No weight painting.
The Problem Β· Architecture & Workflow Β· Tech Stack Β· API Usage
In interactive 3D web platforms (metaverses, configurators, UGC gaming), empowering users to upload custom avatars usually requires a massive compromise:
auto-rig-web shifts the entire pipeline to the client. Using a lightweight, browser-local ONNX vision model, it analyzes mesh topology, predicts joint locations, constructs a skeletal hierarchy, and computes biharmonic skin weights procedurally using Three.jsβall within milliseconds.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β auto-rig-web β
β β
β 1. Ingestion 2. AI Inference 3. Topology β
β ββββββββββββββ βββββββββββββββ ββββββββββββββ β
β β Static β β ONNX Runtimeβ β Procedural β β
β β THREE.Mesh ββββββ>β (WebGPU) βββββββ>β Skinning β β
β ββββββββββββββ β Joint Predictβ β (Weights) β β
β βββββββββββββββ ββββββββ¬ββββββ β
β β β
β 4. Output 5. Animation β β
β ββββββββββββββ βββββββββββββββ β β
β β SkinnedMeshβ<ββββββ CCDIK Solverβ<ββββββββββββββ β
β β (Ready) β β (Real-Time) β β
β ββββββββββββββ βββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
onnxruntime-web (WebGPU accelerated) to predict 3D coordinates for a standard 19-joint bipedal hierarchy.This library is engineered for performance at the edge:
onnxruntime-web leveraging the WebGPU execution provider. This allows complex spatial CNNs to run directly on the client's GPU without WebGL overhead or CPU blocking.BufferGeometry to skinning-ready buffers (skinIndex, skinWeight).npm install auto-rig-web three onnxruntime-web
import * as THREE from 'three';
import { RiggingEngine, JointType } from 'auto-rig-web';
// 1. Initialize the engine (loads the ONNX model via WebGPU)
const engine = new RiggingEngine({
modelPath: '/models/joint_estimator_quantized.onnx',
skinningFalloff: 2.5
});
await engine.init();
// 2. Load your static mesh (e.g., via GLTFLoader)
const staticMesh = myLoadedGltf.scene.children[0] as THREE.Mesh;
// 3. Boom. Rigged.
const skinnedMesh = await engine.autoRig(staticMesh);
scene.add(skinnedMesh);
Once rigged, easily pose the character by moving targets.
// Create a visual target (e.g., a red sphere to control the hand)
const handTarget = new THREE.Vector3(1, 1, 0);
// Assign the target to the IK Solver
engine.setIKTarget({
joint: JointType.RightHand,
position: handTarget,
influence: 1.0 // 0.0 to 1.0 interpolation
});
// Update the solver in your render loop
function animate() {
requestAnimationFrame(animate);
// Solve IK chains for the current frame
engine.updateIK(skinnedMesh.skeleton);
renderer.render(scene, camera);
}
animate();
MIT β iKi / Frozen Flame
This project is 100% open-source software under the MIT License.
You are explicitly permitted to use, modify, fork, integrate, package, and sell commercial products or SaaS built using this engine with one visible attribution requirement:
Attribution Requirement: You must include a visible credit to nff747 in your application (e.g.,
Powered by nff747linking to https://github.com/nff747 in your application UI, footer, about modal, or documentation).
<!-- Example visible footer attribution -->
<p>Powered by <a href="https://github.com/nff747" target="_blank">nff747</a></p>
10 commits
TypeScript
100.0%
𦴠Zero-Click Autonomous 3D Mesh Rigging Engine. Browser-local ONNX vision model + dual-pipe zero-copy Web Workers for instant procedural character rigging.
3
stars
10
commits
TypeScript
primary language
Sep 9, 2026
updated
Zero-Click, Browser-Local Character Rigging Pipeline
Upload a static .gltf mesh. Instantly get a fully rigged, IK-ready SkinnedMesh.
No server-side processing. No manual bone placement. No weight painting.
The Problem Β· Architecture & Workflow Β· Tech Stack Β· API Usage
In interactive 3D web platforms (metaverses, configurators, UGC gaming), empowering users to upload custom avatars usually requires a massive compromise:
auto-rig-web shifts the entire pipeline to the client. Using a lightweight, browser-local ONNX vision model, it analyzes mesh topology, predicts joint locations, constructs a skeletal hierarchy, and computes biharmonic skin weights procedurally using Three.jsβall within milliseconds.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β auto-rig-web β
β β
β 1. Ingestion 2. AI Inference 3. Topology β
β ββββββββββββββ βββββββββββββββ ββββββββββββββ β
β β Static β β ONNX Runtimeβ β Procedural β β
β β THREE.Mesh ββββββ>β (WebGPU) βββββββ>β Skinning β β
β ββββββββββββββ β Joint Predictβ β (Weights) β β
β βββββββββββββββ ββββββββ¬ββββββ β
β β β
β 4. Output 5. Animation β β
β ββββββββββββββ βββββββββββββββ β β
β β SkinnedMeshβ<ββββββ CCDIK Solverβ<ββββββββββββββ β
β β (Ready) β β (Real-Time) β β
β ββββββββββββββ βββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
onnxruntime-web (WebGPU accelerated) to predict 3D coordinates for a standard 19-joint bipedal hierarchy.This library is engineered for performance at the edge:
onnxruntime-web leveraging the WebGPU execution provider. This allows complex spatial CNNs to run directly on the client's GPU without WebGL overhead or CPU blocking.BufferGeometry to skinning-ready buffers (skinIndex, skinWeight).npm install auto-rig-web three onnxruntime-web
import * as THREE from 'three';
import { RiggingEngine, JointType } from 'auto-rig-web';
// 1. Initialize the engine (loads the ONNX model via WebGPU)
const engine = new RiggingEngine({
modelPath: '/models/joint_estimator_quantized.onnx',
skinningFalloff: 2.5
});
await engine.init();
// 2. Load your static mesh (e.g., via GLTFLoader)
const staticMesh = myLoadedGltf.scene.children[0] as THREE.Mesh;
// 3. Boom. Rigged.
const skinnedMesh = await engine.autoRig(staticMesh);
scene.add(skinnedMesh);
Once rigged, easily pose the character by moving targets.
// Create a visual target (e.g., a red sphere to control the hand)
const handTarget = new THREE.Vector3(1, 1, 0);
// Assign the target to the IK Solver
engine.setIKTarget({
joint: JointType.RightHand,
position: handTarget,
influence: 1.0 // 0.0 to 1.0 interpolation
});
// Update the solver in your render loop
function animate() {
requestAnimationFrame(animate);
// Solve IK chains for the current frame
engine.updateIK(skinnedMesh.skeleton);
renderer.render(scene, camera);
}
animate();
MIT β iKi / Frozen Flame
This project is 100% open-source software under the MIT License.
You are explicitly permitted to use, modify, fork, integrate, package, and sell commercial products or SaaS built using this engine with one visible attribution requirement:
Attribution Requirement: You must include a visible credit to nff747 in your application (e.g.,
Powered by nff747linking to https://github.com/nff747 in your application UI, footer, about modal, or documentation).
<!-- Example visible footer attribution -->
<p>Powered by <a href="https://github.com/nff747" target="_blank">nff747</a></p>
10 commits
TypeScript
100.0%