Stickman animation of mixamo walk encoded to a 5kb data string. Hopefully I can do longer animations, now that the data size is reasonable and drawcount is below 50 pen moves.
30 frame x 40 vertices (3600 floats at 4 precision) = 5kb base256 encoded data. This compression can work for any 3d character model fbx animation, not just stickman. The python encoder (code in comment of animation sprite) works by getting the delta of previous xyz of the fbx obj export and settings a character for range of -128...128. Full stop is zero and lower case is negative and uppercase is positive. Eg: cba.ABC is -3,-2,-1,0,1,2,3. This way, the most common deltas are single byte character and only outliers use double byte. Vertices deltas are normally small as is only the difference from the previous frame movement of 1/30 of second. If a value is greater than abs(128), it uses the raw value but those less than 0.1% values. This base256 method, is also used for an earlier "gif scanner 8bit" by encoding RLE color lines in lists of <256. This method allows the removal of delimiter for each value and thus ultimately halving both the string length and read speed. The decoder is simple, just add each delta with costume name lookup for each character until the whole string is read. This project uses a basic ellipse filler for quads (diamonds) on face of the character but need to sort the order of the face verts at obj import/startup, so they start at top point and go counter-clockwise to comply with the logic of the pen ellipse filler. This allows us to use @chrome_cat back face culling (BFC) & sorting logic. The normal's works the same in @chrome_cat excellent 3d engine, where a diamond is just a regular quad. 3D Model is https://sketchfab.com/3d-models/253c4caf2fdc40d0b638b844ca63c5ea Steps: 1. Upload your character to mixamo 2. select an animation 3. download animation 4. Import fbx into blender 5. Select the faces for the eyes and mouth 6. Press ctrl+i to invert selection 7. Delete all of the faces You now have the stickman model with just diamonds and wire frame limbs. Export the model as obj with animation selected (no normals or uv selected just apply modifiers) and run the python script on the export folder. Needed to add utf8 BOM at start of string or else import gets messed up on some double byte characters on win32