but then what you offer is thing I have never heard of before: tracks. What are those exactly? And what would you be storing with tracks? I know if I use dual quaternions, I would be storing quaternions--but what would I be storing with tracks.
If we think in programmer’s terms, which might be more comfortable for you, an animation track is nothing more than a class whose only responsibility is to track the change of a given value over time.
At the end of the day, this is indeed the bare necessity behind all animation, and it’s how all 3D modeling tools work.
A track modifies a single floating-point value over time.
An animation is a collection of tracks.
Thus if an animation requires only the position (XYZ) to be changed, only that is calculated and updated. Not only is this a closer relationship with the tools the artists are using, it is also faster at run-time.
When you define a track as nothing more than “something that modifies a floating-point value over time,” it becomes easy to see how it can be useful in all forms of animation.
When the value being modified is a boolean, a floating-point value is still modified internally but it is cast to “bool” afterwards. And this exactly mimics how Autodesk® Maya® works, as well as all other 3D authoring software.
When a value is float, nothing changes. A float cast to a float results in no output code.
In other words you can easily make a template class that keeps a float internally but casts the interpolated result to any type. That is how all 3D authoring tools work.
Once you’ve made track so low-level, they can easily be applied to other things, as I mentioned. Changing only the R component of an RGB color overlay, for example.
Basically, everything you want to animate is just a number. A track works on a single number and it tells how that number changes over time.
If your position, scale, and rotation are all animating, you would need 3 tracks for position, 3 for scale, and 3 for rotation.
The overhead would be similar to interpolating between full matrices every frame.
If scale is not changing, you only need 6 tracks, and you save time. If only rotation is changing, you only need 3 tracks.