OneAnimData is a small C++17 library for host-independent scalar animation data and the MANIM v7 binary format.
The data model is dimension-neutral: a target owns named scalar channels, so the same model can store 2D properties such as x, y, rotation and opacity, or 3D/DCC properties such as translateX. Host object lookup, coordinate conversion and scene mutation belong in adapters and are intentionally not part of this library.
- Maya-free animation clip, node, curve and key types
- Stable
MANIMv7 reader, writer and header inspection - All five existing compact key encodings
- Optional LZ4 payload compression
- Bounded parsing and corrupt/truncated input checks
- Explicit little-endian encoding rather than compiler-dependent packed-struct I/O
The implementation includes <lz4.h> and expects the embedding build to provide LZ4 headers and implementation. No Maya SDK is required.
#include "one_anim_data_io.h"
oneAnimData::AnimClip clip;
oneAnimData::Status status = oneAnimData::readFile("walk.animdata", clip);
oneAnimData::WriteOptions options;
options.description = "walk cycle";
status = oneAnimData::writeFile("copy.animdata", clip, options);MANIM v7 preserves historical Maya tangent identifiers for compatibility. A non-Maya adapter may support a subset, bake curves, or translate them to its own interpolation model.