First public release of marrow: a high performance, 2-tier animation library in pure C.

It is *very* fast, has seamless transition from CPU SIMD to baked GPU, and has no dependencies.

https://github.com/jesta88/marrow

GitHub - jesta88/marrow

Contribute to jesta88/marrow development by creating an account on GitHub.

GitHub
Here's a short fly-by video. The Tier-B GPU baked skeletons are rendered as simple line skeletons to avoid unrelated rendering bottlenecks.
@jesta88 love it! And finally someone that uses "no dependencies" to also (largely) rule out libc.
@jesta88 leaving this here for anyone else who got excited when they saw this project and didn't end up reading to the bottom

@NickDrisc0ll @jesta88 gotta say, the code reads like everything was "the boring part" 👀

including design - not sure why it even attempts to support non-uniform scaling for "tier A" skinning but then drop it for "tier B" - they're not LOD transition-friendly substitutes of each other

@archo @NickDrisc0ll Ouch! That's fair though, I'm not proud to use AI tools.

Regarding non-uniform scaling, this is by design. In Tier-B the baked paelette tries its best to approximate the non-uniform scales, and if it's not within tolerance, it's rejected. In my own project it's been pretty useful in cases where the rig has non-uniform scales with small variations.

@jesta88 @NickDrisc0ll what does "rejected" mean in a practical sense?

if this is the part you're referring to - https://github.com/jesta88/marrow/blob/da60d0d9e09df45657c09e043f39646118a6ff97/tools/bake/mrw_bake.c#L177 - it looks like the transform still gets written, there's just a new error competing for the worst case in stats

also, why would a rig have non-uniform scaling, or any scaling at all?

marrow/tools/bake/mrw_bake.c at da60d0d9e09df45657c09e043f39646118a6ff97 · jesta88/marrow

Contribute to jesta88/marrow development by creating an account on GitHub.

GitHub
@archo @jesta88 it's useful for squash-and-stretch effects. It's an old example but off the top of my head I'm thinking of Jak and Daxter's punch attack. That had to have bone scaling.

@NickDrisc0ll @jesta88 yeah the uses of non-uniform scaling in animations are clear to me

I was under the impression that by "rig" it was meant that the skeleton bind poses contained scaling - but if that's not the case (e.g. the rig meant the range of allowed motion) then my question can be ignored

@archo @NickDrisc0ll A rig can stretch some bones for example.

As for the line you pointed to, bake_clip doesn't reject by skipping a write. It produces the full palette every time with the marks you pointed to on bones. The "reason" is just for diagnostics. The bone_ok is the one that propagates and sets the rig eligible or not a bit later (line 206).