Shapekeys, polycount and filesize

When I add a shapekeys to an object in Blender the filesize increases, the filesize doesn’t double (its less then double) when I go from 1 shapekey to 2 but the filesize does increase.

If I do the same test in Cinema4D with a PoseMorph, the filesize doubles. This leads me to believe that a copy of the mesh is stored somehow for each “pose”.

So how does Blender handle shapekeys internally?
In Blender I dont see an increase in polycount either when I add shapekeys, so how does it work?

Didn’t you answered you question yourself? C4D seems to store the whole mesh again, blender stores just the changed vertex positions.

Yes, that’s basically correct. A shapekey is a list of vectors for every vertex. This is just like UV or vertex color: it’s vertex data, a hidden bit of information attached to every vertex.

If the only thing that a file contains is a list of vertex positions (which are also 3D vectors), then a file will double in size when you add a new list of vectors that is exactly as long as the list of positions. If your file contains more than that, like for instance some interface info, or UV, then your file will not double. (It does not appear to depend on how many vertices are moved the shapekey.)

The minimum size your uncompressed file will increase by, by adding a shapekey, is 34vertex count bytes: three dimensions, times the size of a typical floating point value, for every vertex.

As far as I can see, vertex data isn’t created until vertices in a shapekey are actually edited, but once they are, a vector exists for every vertex, not just modified vertices.

I gues Cinema4D handles shapekeys slightly different then. I double checked in Blender to see if I had compressed the file, but this wasnt the case.

In Blender I don’t see an increase in vertices, polygons or edges when adding shapekeys, this makes it harder if I have a polygon budget for an asset that needs shapekeys.

There is no increase in vertices. There is an increase in vertex data.