AnimSmith

Is this clip game-ready?

AnimSmith lints skeletal animation clips for the problems that only show up after import: popped loops, sliding feet, drifting root motion, T-posed limbs. Point it at a glTF or FBX export and get frame- and bone-level evidence in seconds: on the command line while the DCC is still open, or in CI and as a Rust library once the contract is declared.

$ cargo install animsmith
$ animsmith lint walk.glb
walk-dirty.glb · foot height vs hipsloop-closure
walk — foot height relative to hipsL footR footL−R (right axis)-0.95 m-1.05 m0.10 m-0.10 mframe 0frame 32
walk.glb · same rig, closed cycle0 errors
walk — foot height relative to hipsL footR footL−R (right axis)-0.95 m-1.05 m0.10 m-0.10 mframe 0frame 32
error[loop-closure] clip 'walk' bone 'foot_r' @1.000s: loop does not close in position: bone 'foot_r' is 0.1581 m from its first-frame model-space position (cap 0.0100 m) (measured 0.1581, expected 0.0100)
Two doors

Artists and animators

Catch the loop pop or the wrong rig seconds after export, while the DCC is still open, with a finding that names the clip, the bone and the frame and a hint that maps to a DCC action.

Export from the DCCLint and open the reportFix in the DCC, re-export
loop-closure example: the loop pops
Start as an artist ›

Game developers

Know what a pack or an outsourced delivery really contains, declare the contract your character controller expects, and gate every re-export in CI before it reaches a playtest.

Inventory the packDeclare loops, speeds, ringsGate in CI and the engine
foot-slide example: feet slide within a clip
Start as a developer ›
Start in ten minutes
01InstallPrebuilt binaries or cargo install.
02Lint a clipMechanical checks need no config.
03Open the reportSkeleton playback at the exact judged frame.
04Declare and fixSay which clips loop, then repair or re-export.

Then the workflow for your seat: the animation-author workflow for artists and animators, the game-developer intake workflow for game developers.

Not a converter, an editor or a retargeter. AnimSmith sits between glTF-Validator and your engine importer and checks the content semantics neither of them sees. Why AnimSmith exists · All pages