acl

nfrechetteMIT活跃维护

面向游戏引擎的高质量动画压缩库,把骨骼动画数据压到很小体积,同时保持播放精度,适合需要节省内存和带宽的实时 3D 应用。

Animation Compression Library

v2.1.0发布于 2023-12-07 01:48 UTC1,604star +2 / 7 天127fork同步于 2026-11-10 17:49 UTC

怎么上手

由 README 提炼,执行前请确认
# 头文件库,直接包含 includes 目录即可使用
#include <acl/...>
硬件要求按 README 说明

README 未说明显存或 GPU 要求;CI 覆盖 Windows、Linux、macOS、Emscripten WASM 及 ARM 平台,任何支持 C++11 的环境基本可直接运行

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

纯 C++11 头文件的动画压缩库,帮游戏引擎压缩动画片段并加速采样

面向游戏引擎的高质量动画压缩库,把骨骼动画数据压到很小体积,同时保持播放精度,适合需要节省内存和带宽的实时 3D 应用。

核心能力

  • 100% C++11 头文件实现,直接 include 即可集成
  • 提供生产级动画压缩算法,兼顾压缩率与解压速度
  • 支持中间剪辑文件格式,便于调试与问题上报
  • 所有内存分配与断言交由游戏方提供的分配器和宏
  • 附带多套性能基准数据用于横向对比

容易踩的坑

运行单元测试或回归测试需按 getting_started 文档单独搭建环境;RISC-V 仅走 RTM 标量路径且 CI 不测试;Unreal 集成需使用引擎自带插件而非旧版独立插件

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.1.0
  1. v2.1.0Version 2.1.0最新正式版2023-12-07 · 2023-12-07 01:48 UTC
    • Add support for bind pose stripping
    • Add support for loop handling through looping policy
    • Add support for pre-processing
    • Add automatic compression level selection
    • Optimize compression through dominant shell computation
    • Add support for per sub-track rounding
    • Use error metric to detect constant/default sub-tracks
    • Tons of cleanup and minor improvements
    • Run regression tests with CI
    • Update to RTM 2.2.0
    • Update to sjson-cpp 0.9.0
    • Add support for GCC 12 and 13
    • Add support for clang 15
    • Add support for XCode 14
    • Add support for C++14, C++17, and C++20
    • Add support for MSYS2
  2. v2.0.6Version 2.0.62022-07-10 · 2022-07-10 23:20 UTC
    查看更新说明
    • Force macro expansion in version namespace identifier
    • Update to RTM v2.1.5
    • Update sjson-cpp to v0.8.3
  3. v2.0.5Version 2.0.52022-07-01 · 2022-07-01 18:32 UTC
    查看更新说明
    • Add support for clang 12, 13, and 14
    • Add support for GCC 11
    • Add support for XCode 12 and 13
    • Add support for Arm64 development on OS X and Linux
    • Misc CI improvements
    • Update to RTM v2.1.4
    • Update to Catch2 v2.13.7
  4. v2.0.4Version 2.0.42022-05-08 · 2022-05-08 14:59 UTC
    查看更新说明
    • Disable versioned namespace by default to avoid breaking ABI in patch release
  5. v2.0.3Version 2.0.32022-05-07 · 2022-05-07 01:49 UTC
    查看更新说明
    • Update sjson-cpp to v0.8.2
    • Update rtm to v2.1.3
    • Add versioned namespace to allow multiple versions to coexist within a binary
    • Fix database sampling interpolation when using a rounding mode other than none
    • Other minor fixes

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    CLA assistant All Contributors Build status Sonar Status GitHub release GitHub license Conan Discord

    Animation Compression Library

    Animation compression is a fundamental aspect of modern video game engines. Not only is it important to keep the memory footprint down but it is also critical to keep the animation clip sampling performance fast.

    The more memory an animation clip consumes, the slower it will be to sample it and extract a character pose at runtime. For these reasons, any game that attempts to push the boundaries of what the hardware can achieve will at some point need to implement some form of animation compression.

    While some degree of compression can easily be achieved with simple tricks, achieving high compression ratios, fast decompression, while simultaneously not compromising the accuracy of the resulting compressed animation requires a great deal of care.

    Goals

    This library has four primary goals:

    • Implement state of the art and production ready animation compression algorithms
    • Be easy to integrate into modern video game engines
    • Serve as a benchmark to compare various techniques against one another
    • Document what works and doesn't work

    Algorithms are optimized with a focus on (in this particular order):

    • Minimizing the compression artifacts in order to reach high cinematographic quality
    • Fast decompression on all our supported hardware
    • A small memory footprint to lower memory pressure at runtime as well as reducing disk and network usage

    Decompression speed will not be sacrificed for a smaller memory footprint nor will accuracy be compromised under any circumstances.

    Philosophy

    Much thought was put into designing the library for it to be as flexible and powerful as possible. To this end, the following decisions were made:

    Supported platforms

    Continuous integration tests a variety of platforms and configurations but it generally runs as-is anywhere where C++11 (or later) is supported. CI currently tests:

    • Windows VS2022: x86, x64, ARM64, ARM64EC
    • Windows VS2026: x86, x64, ARM64, ARM64EC
    • Linux GCC 14+: x86, x64, ARMv7, ARM64
    • Linux Clang 22+: x86, x64, ARMv7, ARM64
    • OS X XCode 16+: ARM64
    • Emscripten 6.0.11: WASM (with and without SIMD)

    Each releases is also manually tested on iOS and Android.

    On RISC-V (riscv64), ACL uses the scalar code path of RTM because RTM has no SIMD code for RISC-V. CI does not test riscv64. make.py -cpu riscv64 supports native builds on a Linux riscv64 host. To cross-compile, use CMake with a RISC-V toolchain file.

    The Unreal Engine is supported through a plugin originally found here although it is now distributed with a more recent version as part of each engine release since UE 5.13.

    Getting started

    This library is 100% headers as such you just need to include them in your own project to start using it. However, if you wish to run the unit tests, regression tests, to contribute to ACL or use it for research, head on over to the getting started section in order to setup your environment and make sure to check out the contributing guidelines.

    If you would like to integrate ACL into your own game engine, follow the integration instructions here.

    You can install nfrechette-acl with Conan.

    Performance metrics

    External dependencies

    You don't need anything else to get started: everything is self contained. See here for details.

    License, copyright, and code of conduct

    This project uses the MIT license.

    Copyright (c) 2017 Nicholas Frechette & Animation Compression Library contributors

    Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

    Contributors ✨

    Thanks goes to these wonderful people (emoji key):

    This project follows the all-contributors specification. Contributions of any kind welcome!