https://github.com/guillaumeblanc/ozz-animation
Open source c++ skeletal animation library and toolset
https://github.com/guillaumeblanc/ozz-animation
animation collada data-oriented fbx game mit-license simd soa sse
Last synced: about 1 year ago
JSON representation
Open source c++ skeletal animation library and toolset
- Host: GitHub
- URL: https://github.com/guillaumeblanc/ozz-animation
- Owner: guillaumeblanc
- License: other
- Created: 2015-08-24T20:24:55.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2025-05-12T11:28:45.000Z (about 1 year ago)
- Last Synced: 2025-05-14T09:04:50.843Z (about 1 year ago)
- Topics: animation, collada, data-oriented, fbx, game, mit-license, simd, soa, sse
- Language: C++
- Homepage: http://guillaumeblanc.github.io/ozz-animation/
- Size: 113 MB
- Stars: 2,570
- Watchers: 100
- Forks: 316
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Authors: AUTHORS.md
Awesome Lists containing this project
- AwesomeCppGameDev - ozz-animation
- awesome-game-engine-dev - Ozz-Animation - Skeletal animation library and toolset. (Libraries / C++)
- StarryDivineSky - guillaumeblanc/ozz-animation - animation是一个开源的C++骨骼动画库和工具集,专注于提供高效且跨平台的3D角色动画解决方案。该项目基于C++11标准开发,支持Windows、Linux、macOS等主流操作系统,可作为独立库或集成到游戏引擎中使用。其核心功能包括骨骼动画系统、动画数据格式解析、骨骼绑定系统和动画插值算法,开发者可以通过加载FBX或OZZ格式的动画文件,将骨骼动画数据应用到3D模型上,并通过插值算法实现平滑的动画过渡效果。 项目采用模块化设计,包含动画数据加载器、骨骼绑定系统和动画混合器三大核心组件。动画数据通过专有的OZZ格式存储,该格式支持多层级骨骼结构和动画关键帧信息,同时兼容FBX格式的导入功能。骨骼绑定系统通过矩阵变换算法实现骨骼与模型网格的绑定关系,动画混合器则支持多个动画轨道的权重混合和时间轴控制。工具集提供命令行工具用于动画文件转换和骨骼绑定验证,开发者可利用这些工具快速构建动画流水线。 该项目特别强调性能优化,采用内存池管理动画数据,通过预计算骨骼变换矩阵减少实时计算开销,同时支持多线程动画更新。其设计目标是为游戏开发和3D应用提供轻量级但功能完备的动画解决方案,适用于需要自定义动画系统的项目场景,相比Unity或Unreal等引擎自带的动画系统,ozz-animation提供了更底层的控制能力和跨平台兼容性。 (人像_姿势_3D人脸 / 资源传输下载)
README
[](http://guillaumeblanc.github.io/ozz-animation/)
ozz-animation
=============
open source c++ 3d skeletal animation library and toolset
---------------------------------------------------------
ozz-animation provides runtime character animation playback functionalities (loading, sampling, blending...). It proposes a low-level renderer agnostic and game-engine agnostic implementation, focusing on performance and memory constraints with a data-oriented design.
ozz-animation comes with the toolchain to convert from major Digital Content Creation formats (gltf, Fbx, Collada, Obj, 3ds, dxf) to ozz optimized runtime structures. Offline libraries are also provided to implement the conversion from any other animation and skeleton format.
Follow [this link](https://github.com/guillaumeblanc/ozz-animation/issues/175) for a list of projects using ozz-animation.
Documentation
-------------
Documentation and samples are available from [ozz-animation website](http://guillaumeblanc.github.io/ozz-animation/).
Supported platforms
-------------------
ozz-animation is tested on WebAssembly, Linux, macOS and Windows, for x86, x86-64 and ARM architectures. The run-time code (ozz_base, ozz_animation, ozz_geometry) depends only on c++17, on the C and the C++ standard libraries, and has no OS specific code. Portability to any other platform shouldn't be an issue.
Samples, tools and tests depend on external libraries (glfw, tinygltf, Fbx SDK, jsoncpp, gtest, ...), which aren't need to ship with ozz-animation runtime.
Build status
------------
| | Linux | macOS | Windows | WebAssembly |
| ------- | ------ | ------ | ------- | ------- |
| master | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/linux.yml) | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/macos.yml) | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/windows.yml) | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/wasm.yml) |
| develop | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/linux.yml) | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/macos.yml) | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/windows.yml) | [](https://github.com/guillaumeblanc/ozz-animation/actions/workflows/wasm.yml) |
The dashboard for all branches is available [here](http://guillaumeblanc.github.io/ozz-animation/documentation/dashboard/).
Contributing
------------
All contributions are welcome: code reviews, bug reports, bug fixes, samples, features, platforms, testing, documentation, optimizations...
Please read [CONTRIBUTING](CONTRIBUTING.md) file for more details about how to submit bugs or contribute to the code.
License
-------
ozz-animation is hosted on [github](http://github.com/guillaumeblanc/ozz-animation/) and distributed under the **MIT License** (MIT).