@Lewa I actually like your system very much, and the existence of an already setup TBN-matrix or inverse-transpose matrix is a huge bonus (it's a must because I have a dynamic lighting model). I already plan to use it for multiple simple objects (like plants and scenery) but I'm not sure about characters.
The problem is for characters, I have animations that are relatively complex in the sense that they use
graphs to interpolate keyframes (changing rate at which one frame is switched to another in order to simulate more life-like animations), so I am unsure as to how I would translate that into game.
I do have a question about memory though, other than taking up file size, what are the consequences if I were to upload, say, every frame of an 80+ frame animation be? Would it take a toll on the fps at all?
In terms of performance, the CPU overhead is pretty minimal. The only thing the CPU does is it takes the current 2 frames which have to be interpolated (which are stored in a combined mesh) and sends this data alongside the interpolation value to the GPU. The interpolation happens on the GPU via the shader.
So in terms of performance, no matter how high poly your 3D model is, the CPU performance stays exactly the same. The GPU will have to do pretty much most of the work. (The higher poly your mesh is, the more vertices have to be interpolated by the shader.)
However, as you already noticed, morph-targets aren't really well suited for high poly animations with tons of frames. The problem here is that while CPU performance will not increase, the memory requirement of the animation and the loading times (of the .bao animation files) will.
(This is due to the way how i implemented them in GM. For every 2 keyframes i generate a seperate mesh which stores the meshdata of those 2 frames in order to interpolate between them on the GPU. This includes vertex position data, texture coordinates, normals, etc...) It's very fast as it allows you to run the whole animation on the GPU, but it comes at a cost of increased memory usage in the memory of the graphics card.
Originally i wrote this technique to animate a 3D character in my project. My character model was very low poly and thus the memory requirements of the animations weren't really a problem. (The memory requirement increases with the number of frames and polygons.)
If you use morph-targets you also have to animate your character with the limitations of the technique in mind. I often try to reduce the number of keyframes as much as possible while still making the animation look good.
(So my running animation has like 8 frames, my jumping animation has 4, etc...)
The advantage i gained is that drawing an animated character is (on the CPU side) blazingly fast which was very important for me as i do have a multiplayer mode in which i aim to support up to 64 animated 3D characters in the scene at the same time.
So having this low CPU overhead is definitely a big advantage (in my case.)
But basically: If you really need dynamic 3D animations on high poly characters, your only real option is to use a skeletal animation system. (unless you severely cut down on keyframes and triangles and put up with the limitations of the morph-target technique.)
Each technique has its advantages and disadvantages.