guillaumeblanc/ozz-animation

Games

A C++ skeletal animation runtime and toolchain for game engines that need fast, low-memory character playback.

3,099
363
C++
NOASSERTION
11 years old

Overview

ozz-animation is a low-level C++ 3D skeletal animation library and toolset for games. The runtime handles loading, sampling and blending character animation, and is deliberately renderer-agnostic and engine-agnostic so it can be dropped under an existing game or engine. It is data-oriented, targeting performance and memory constraints rather than editor convenience.

A separate offline toolchain converts assets from common DCC formats — glTF, FBX, Collada, Obj, 3ds and dxf — into ozz's optimized runtime structures. Offline libraries are also included for writing converters from other skeleton and animation formats.

It suits engine and gameplay programmers who want a small, portable animation core, or teams integrating ozz into a custom renderer or tool pipeline.

Getting started

Before building, note that the runtime requires a C++17 compiler; the samples, tools and tests pull in external dependencies such as glfw, tinygltf, the Fbx SDK, jsoncpp and gtest. Start from the repository, then follow the build instructions and the samples on the documentation site. The README does not include a copy-paste build command, so the exact configure/build steps for your platform should be taken from the official docs rather than guessed.

Once built, the practical flow is: convert a source asset (for example a glTF or FBX file) with the offline toolchain, load the resulting runtime data, and sample or blend animations through the runtime API in your game loop. Sample programs on the site demonstrate this end to end.

Runtime and tooling constraints

The runtime code (ozz_base, ozz_animation, ozz_geometry) depends only on C++17 and the C/C++ standard libraries, with no OS-specific code. The project is tested on WebAssembly, Linux, macOS and Windows across x86, x86-64 and ARM. Portability elsewhere is described as likely rather than guaranteed, and the listed test matrix defines the supported surface.

External libraries are only needed by samples, tools and tests, not by the shipped runtime. Offline conversion from FBX requires the Fbx SDK, and glTF tooling depends on tinygltf, so building the full toolset is heavier than embedding the runtime alone. The project is distributed under the MIT License.

Who's using it

A maintained issue lists projects that use ozz-animation, which is useful for seeing integration patterns and confirming engine use cases before adopting it.

HotRepo's take

On the 2026-11-01 daily C++ ranking, ozz-animation placed 14th and added 22 stars, reaching 3,099 stars and 363 forks. That is the only recorded snapshot for the project; no all-language daily rank is recorded, and there is no star history curve to establish a trend. The signal is therefore a single-day C++ chart appearance, not evidence of sustained growth. The technical picture is more stable: a narrowly scoped C++17 animation runtime with a DCC-format conversion toolchain and a four-platform test matrix, which is the kind of focused library that can remain useful for engine integration long after a chart spike. The project's age (created 2015) and its issue-based user list reinforce that this is an established tool rather than a new entrant buoyed by the ranking.

Written by AI from the project's README, updated . The project's own docs are the source of truth.