AI 3D animation for games: rig, generate, retarget

By GamesByAI · Updated · 32 sources

Three.js runs 265 of the 404 games we list, and plenty of them have a character who has to walk, jump and fall over. That character needs three things: a skeleton, motion clips, and code that plays them.

AI now helps with the first two. Auto-riggers build the skeleton from a mesh, text-to-motion models write clips from a sentence, and a phone video becomes motion capture. This guide covers each route, how to get the clips onto your own rig, and how to play them. Prices and licenses are as of October 1, 2026, linked where they appear.

Four ways to get motion

Pick the route by the move you need. A library covers the basics in minutes, text-to-motion makes moves no library has, video records your own timing, and physics skips clips entirely.

Route Best for Tools Cost to start Catch
Clip library Idle, walk, run, jump, stock attacks Mixamo, Meshy, Tripo Free (Mixamo) Stock moves that players may recognize
Text-to-motion A limp, a sneak, a victory dance Kimodo, HY-Motion 1.0, Meshy, Uthana Free on your own GPU (Kimodo) Humanoids only; Kimodo and Meshy cap a prompt at 10 seconds
Video capture Your own performance and timing Rokoko Vision, DeepMotion 30 or 60 free seconds a month Free tiers limit exports or commercial use
Physics Ragdolls, knockbacks, wobbly fighters Rapier or your engine’s physics Free You tune it in code, not on a timeline

The routes mix well: library clips for locomotion, a few generated or captured moves for personality, physics for falls.

1. Rig the character

A rig is a skeleton plus the weights that tie each vertex to its bones. Auto-riggers make both from a mesh, so you only fix what they get wrong.

Tool What it rigs Output Cost and license
Mixamo Bipedal humanoids only FBX Free with an Adobe ID; characters and animations royalty free, video games included (Adobe FAQ)
Meshy Textured humanoids up to 300,000 faces, facing +Z FBX and GLB, with walk and run clips (Meshy rigging) Credits; free-plan output is CC BY 4.0 with credit (Meshy license)
Tripo Biped, quadruped, hexapod, octopod, avian, serpentine, aquatic GLB or FBX, Mixamo bone names on request (Tripo rigging) Credits; read the plan terms
UniRig Humans, animals and objects FBX (UniRig) MIT code; runs locally on a CUDA GPU with at least 8 GB

Adobe’s checklist for Mixamo is a fair test for any auto-rigger (Adobe FAQ):

  • A humanoid with a clear head, body, arms and legs, and no wings, tails or big hair.
  • A neutral pose, and nothing else in the file: no cameras, props or helpers.
  • No gaps between parts, the character centered at the world origin, and a clean mesh.

Use one skeleton for your whole cast. Three.js finds a clip’s bones by name, so a clip made for one Mixamo-rigged character plays on the next. Tripo can output Mixamo bone names too, which keeps mixed sources on one standard. If your model came from a picture, image to 3D for games covers the A-pose and polygon budget that make rigging work.

2. Write motion from text

Text-to-motion models return skeleton motion, joint rotations plus a root path, not a video or a mesh. That is exactly what a game needs: the clip goes onto your rig like any motion capture.

Model Where it runs What you need License and cost
Kimodo (NVIDIA) Your PC An NVIDIA GPU: about 17 GB of VRAM, or under 3 GB with the text encoder on the CPU Free; weights under the NVIDIA Open Model License, commercial use allowed (GitHub)
HY-Motion 1.0 (Tencent) Your PC At least 24 GB of VRAM for Lite, 26 GB for the full model (GitHub) Free, but the license excludes the EU, the UK and South Korea (license)
Meshy Text to Motion Meshy’s servers A Meshy account 3 credits for a fast BVH clip, 10 for a higher-quality FBX clip; 2 to 10 seconds (Meshy)
Uthana Uthana’s servers An account Pay per second, from $0.02; paid use includes commercial rights (Uthana pricing)

Kimodo writes up to 10 seconds per prompt at 30 frames per second and exports BVH. The NVIDIA Kimodo guide walks through install, prompts, constraints and getting clips into each engine.

Prompts that come out usable

NVIDIA’s best practices for Kimodo (Kimodo docs), which HY-Motion’s example prompts follow too:

  • Start with “A person…”, and add a style when it matters: tired, angry, scared, drunk, injured, stealthy, old, childlike.
  • Ask for one or two behaviors per prompt. Chain longer actions as several prompts.
  • Use medium detail. “A person walks.” is too vague, and a paragraph about every joint is too much.
  • Stay inside the training data: locomotion, gestures, everyday actions, object interactions, videogame combat and dancing. Kimodo wasn’t trained on baseball, and NVIDIA uses a batting prompt as its example of what fails.

HY-Motion’s README lists what it can’t do: animals, clothing or appearance, scenes and camera moves, two-person interactions, looping clips or in-place motion (HY-Motion). Plan to trim loops yourself. A starter set for a third-person game:

A person stands idle, shifting weight from foot to foot and glancing around.
A person jogs forward at a steady pace.
A person sneaks forward in a crouch, looking left and right.
A person swings a sword overhead with both hands, then returns to a fighting stance.
A person is hit in the chest, staggers back two steps and recovers.
A person falls backwards to the ground and lies still.

Takes differ from seed to seed, so generate several of each and keep the best one.

3. Capture motion from a phone video

Video capture turns a clip of you into skeleton motion. It is the quickest way to get your own timing, a specific dance or a stunt you can actually do.

Service Free tier Paid Output
Rokoko Vision 30 seconds of processing a month, FBX only (Rokoko) Basic: $10 a month billed yearly, 600 seconds, custom character retargeting FBX, BVH
DeepMotion Animate 3D 60 seconds a month, personal non-commercial use (DeepMotion pricing) Paid plans for commercial use FBX, BVH, MP4; GLB for custom characters

Rokoko Vision doesn’t track fingers. DeepMotion charges extra credits for hand and face tracking. Open-source research code is tempting, but check its license: GVHMR’s covers education, research and non-profit use only, so it can’t go into a game you sell.

DeepMotion’s capture guidelines are a good baseline for any video service (DeepMotion):

  • Put the camera on a tripod 2 to 6 meters away, square to you. No pans or zooms.
  • Keep your whole body in frame for the whole clip, with nothing in front of your limbs.
  • Wear fitted clothes with some pattern, not all black.
  • Film at 1080p and 30 fps or more, in even light, against a background that contrasts with you.

4. Or skip clips: physics

Some games need no authored motion at all. Floppy Brawler fights with loose-limbed ragdolls. In Goal-Locked: The Crucible, collisions and momentum shape each match instead of fixed animations. And in Pro Skater: The Warehouse, a bail turns the skater into a ragdoll who gets back up.

Rapier, a physics engine with JavaScript bindings, has the joints a ragdoll needs (Rapier joints). A prompt for your coding agent:

Add a ragdoll to the player with @dimforge/rapier3d. Make one capsule rigid body per limb, spherical joints at the shoulders and hips, and revolute joints at the elbows and knees (RAPIER.JointData.spherical, RAPIER.JointData.revolute, world.createImpulseJoint). On a hard hit, copy the current bone transforms into the bodies and switch from the animation clip to physics. After two seconds, blend back into the get-up clip.

5. Retarget clips onto your rig

Retargeting maps each bone of the clip’s skeleton onto yours and corrects for different names, rest poses and units. Do it once, while building, and ship the result.

It rarely works by name alone. Kimodo’s skeleton calls the thigh LeftLeg while Mixamo’s LeftLeg is the shin, Kimodo’s BVH is in centimeters while glTF uses meters, and one rig rests in a T-pose while the next uses an A-pose.

Where you build When it happens How
Blender, for any engine Once, before export File › Import › Motion Capture (.bvh) or FBX (Blender manual), then the free Retarget extension for Blender 5.0+, with presets for Mixamo, Unreal and other rigs (Retarget). Export a GLB
Three.js At load SkeletonUtils.retargetClip(target, source, clip, { names, hip }) (docs). Bones whose local axes differ need localOffsets, as three.js’s own retargeting example shows
Babylon.js At load AnimatorAvatar and retargetAnimationGroup(), added in Babylon.js 9.0 (Babylon.js forum)
Godot 4 On import Advanced Import › Skeleton3D › Retarget: a BoneMap with SkeletonProfileHumanoid, Rest Fixer’s Overwrite Axis, then save the clips as an AnimationLibrary (Godot docs)
Unity On import Rig tab › Animation Type › Humanoid on the character and on each clip’s FBX (Unity manual)
Unreal Engine In the editor Right-click the animation › Retarget Animation Assets, with Auto Generate Retargeter on (Unreal docs)

Godot’s docs call Overwrite Axis “the most important option for sharing animations in Godot 4”. Unity wants at least 15 bones for a Humanoid. Neither imports BVH: Godot takes glTF, .blend and FBX (Godot formats), and Unity’s Humanoid setup works on FBX files, so convert BVH in Blender first. For the web, retargeting in Blender and shipping a baked GLB is the least fragile route.

6. Play the clips in the browser

In Three.js, each character gets an AnimationMixer, and each clip becomes an action you start, stop and crossfade (AnimationAction). This is the pattern from three.js’s blending example, trimmed for a game:

import * as THREE from 'three';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import * as SkeletonUtils from 'three/addons/utils/SkeletonUtils.js';

const gltf = await new GLTFLoader().loadAsync('/models/hero.glb');
const hero = SkeletonUtils.clone(gltf.scene); // one clone per character on screen
scene.add(hero);

const mixer = new THREE.AnimationMixer(hero);
const action = (name) => mixer.clipAction(THREE.AnimationClip.findByName(gltf.animations, name));
const idle = action('idle');
const run = action('run');
idle.play();

function startRunning() {
  run.reset().play();
  idle.crossFadeTo(run, 0.25, false);
}

const timer = new THREE.Timer();
timer.connect(document);
renderer.setAnimationLoop(() => {
  timer.update();
  mixer.update(timer.getDelta());
  renderer.render(scene, camera);
});

SkeletonUtils.clone matters: a plain clone() leaves the copy’s skinned mesh bound to the original’s bones. Two more things come up in every game:

  • In-place clips. Generated walks travel forward, but game code usually moves the character. Pin the hips’ X and Z to the first frame and keep the up-and-down bob:
function inPlace(clip, hips = 'mixamorigHips') {
  const track = clip.tracks.find((t) => t.name === `${hips}.position`);
  if (track === undefined) return clip;
  const v = track.values; // x, y, z per keyframe
  for (let i = 0; i < v.length; i += 3) { v[i] = v[0]; v[i + 2] = v[2]; }
  return clip;
}
  • File size. Generated and captured clips usually carry a key on every frame. glTF Transform’s resample removes redundant keyframes without changing the motion (glTF Transform):
gltf-transform resample hero.glb hero-lean.glb
gltf-transform inspect hero-lean.glb

In Babylon.js, a GLB’s clips arrive as AnimationGroups, and group.start(true) loops one. The 3D game guide covers the scene, camera and physics around the character.

What runs in the browser, and what doesn’t

None of these generators run inside a browser game. Kimodo and HY-Motion need a desktop GPU with plenty of memory, and Meshy, Uthana, Rokoko and DeepMotion run on their own servers. You generate while building and ship finished clips, which play in any browser that runs Three.js or Babylon.js.

Real-time generation exists, but on a server. NVIDIA’s ARDY, a sibling of Kimodo, streams motion from text and keyboard input with an average generation latency of 33 ms on an RTX 4090, according to its paper (ARDY). That is a GPU server, not something a browser game can carry.

Licenses to check before you ship

  • Kimodo: NVIDIA’s license allows commercial use and claims no ownership of the motion you generate.
  • HY-Motion 1.0: not licensed in the EU, the UK or South Korea (license). A company whose products had more than 1 million monthly active users at its release must ask Tencent for a license.
  • Free tiers: DeepMotion’s free minutes are for personal, non-commercial use. Cascadeur’s free plan is non-commercial and exports only its own .casc format (Cascadeur plans). Meshy’s free output needs a credit line.
  • Mixamo: royalty free, including in games.
  • Steam asks you to disclose pre-generated AI content that ships with the game (Steam). Keep a note of which tool made which clip.

Next: give the character a world

Games to look at

Questions

What is the best AI tool for 3D game animation?

It depends on the move. A free library such as Mixamo covers idles, walks and runs. For moves no library has, NVIDIA's Kimodo writes clips from text on your own GPU at no cost. For your own timing, video capture services such as Rokoko Vision and DeepMotion turn a phone clip into motion.

Is Mixamo still free?

Yes. Adobe's FAQ says Mixamo is free with an Adobe ID and that its characters and animations are royalty free in commercial projects, including video games. Its auto-rigger only handles bipedal humanoids.

Can AI animate a four-legged character?

It can rig one: Tripo's rigging covers quadrupeds, birds, snakes and fish, and the open-source UniRig handles animals and objects. The text-to-motion and video capture tools on this page output human motion, so animals still need a library, keyframes or procedural code.

Can a browser game generate animations while you play?

Not with these models. They run on a desktop GPU or a vendor's servers, so you generate clips while building and ship them in the game's GLB. NVIDIA's real-time model, ARDY, averages 33 ms per generation on an RTX 4090, which is a desktop GPU, not a phone.

More sources

  1. docs.meshy.ai/en/api/animation