Import any 3D model. Apply any animation. EasyRig handles skeleton generation, bone mapping, weight painting, and ragdoll physics automatically. Built for web game developers who have better things to do.
// load your model - skeleton generated automatically
const player = await EasyRig.load('player', '/character.glb')
// grab an animation from mixamo, blender, wherever
await player.applyAnimation('/run.glb')
// play it - bone mapping handled for you
player.play('run')
// enable ragdoll physics with one call
player.enableRagdoll(world).activateRagdoll()
Stop fighting with rigging software. EasyRig handles the technical complexity so you can focus on making your game.
Feed it a mesh with no rig - EasyRig analyzes the geometry and generates a proper skeleton. Humanoids, quadrupeds, creatures, custom shapes. T-pose recommended but not required.
Vertex weights calculated automatically using heat diffusion algorithms. No more painting weights by hand. Smooth deformations out of the box with configurable bone influence.
Mixamo animation on a custom model? Different bone naming conventions? EasyRig figures out the mapping and applies animations correctly every time.
One function call to enable physics-based ragdoll. Works with Cannon.js, Ammo.js, and Rapier. Joint constraints preconfigured for realistic motion.
Built-in IK system for foot placement, look-at targets, and procedural animation. FABRIK solver with configurable chain length, iterations, and constraints.
All processing happens at runtime. No export pipeline, no preprocessing, no build steps. Load a model, get a rigged character. Works with Three.js out of the box.
From static mesh to fully animated character with physics. No rigging experience required.
Any GLB or GLTF file. Rigged or unrigged, EasyRig handles both.
Geometry analyzed, skeleton generated, weights calculated automatically.
Load animations from any source. Bone names mapped automatically.
Enable ragdoll with one call. Joint limits preconfigured.
What usually takes hours of technical work now takes minutes of writing code.
A complete character setup in under 20 lines of code.
This example loads a character model, applies walk and run animations, sets up ragdoll physics, and handles animation blending. Everything you need for a game-ready character.
import * as CANNON from 'cannon-es'
// initialize
EasyRig.init({ debug: true })
// load character
const player = await EasyRig.load('hero', '/models/character.glb')
// apply animations
await player.applyAnimation('/anims/idle.glb', 'idle')
await player.applyAnimation('/anims/walk.glb', 'walk')
await player.applyAnimation('/anims/run.glb', 'run')
// setup physics
const world = new CANNON.World()
player.enableRagdoll(world)
// play animation
player.play('idle')
// on damage
function onHit(impact) {
player.activateRagdoll(impact.velocity)
}
// update loop
function update(dt) {
player.update(dt)
}
Add EasyRig to your project and start animating characters in minutes, not hours.
<script src="https://easy-rig.vercel.app/api/easyrig"></script>