Currently in my vertex animation system, a 30 key animation with a 480 vertex sphere takes ~230k, and I’m looking for ways to make it smaller. This is with only position animation recorded (no color, UV, etc). Anyway, I’m wondering if anyone can offer input.
In my system, keys are made up of an array of vertex positions, each of which is 6 floats (3d position, 3d normal).
Here are the ideas I have so far:
Use a different representation for the normal. I’ve heard of games using a fixed set of 256 normals, and then giving each vertex a normal ‘index’. Does anyone know a way to interpolate between these?
Use 16bit floats. This is a trick I ran across on the Dreamcast. You just shift off the 16 least significant bits from a 32bit float and store that.
When it comes time to interpolate, convert it to a full float and use that. Anyone have experience working with this on PC?
Note that I won’t have to pass the 16 bit floats to GL, since I compose the animated meshes in a scratch buffer and I’ll expand them then.
Use spline interpolation. This would drastically reduce the number of keys, but would be a lot more expensive to render.
Last resort - use ZLib or something similar, and decompress keyframes as they’re needed.
Thanks in advance,