If I have a bunch of animation data that’s translation and rotation (quat) info baked into every frame,
are there reliable approaches to reducing the data back into nice curves?
Not exactly. There’s no guarantee that the input data is continuous, so there’s no way to reconstruct the splines using a piecewise curve fit. If you can identify the cusps you can try to fit sections and stitch them together – but there’s no lossless way to recreate the original data. There are a lot of different curve fit algorithms for different situations, you’d need to have a good idea what your data looked like and what kind of errors you can tolerate. If you look at the controls (and performance) of the fit b-spline tool in Maya you’ll get an idea of the limits of curve reconstruction.
if you just want to sample your curve continuously you can just use the Catmull-rom spline algorithm, which will guarantee that the spline runs through the original points. http://stackoverflow.com/questions/1251438/catmull-rom-splines-in-python
Here’s a decent reference: http://kobus.ca/seminars/ugrad/NM5_curve_s02.pdf
thanks!