I've been trying to use a human based Yoshi model in unity. This model will be used for .VRM based animations. The model includes shapekeys for opening and closing the mouth, eyes and eyelids. In theory, these shapekeys work in unity and morph the geometry just as in blender. However, when adjusting a shape, all connected geometry gets darker and has the shader change the appearance of the model.
At first I considered that it only does so around non-quad and topologically inconsistent faces, but even after retopologizing it still occurs on the mesh that has shapekeys attached. Splitting the model based on geometry (only eyes and mouth are one merged geometry with all shapekeys affecting only that area, but not cheeks or the rest of the body for example) confirms that it only changes the shader on the connected geometry.
The above is an example of what happens when I apply all shapekeys. I did so to illustrate how strong the corruption can get. It is still not subtle, even with only one shapekey active; this is the worst case. This is an example of the model in wakaru with applied VRM format and only one active Shapekey:
This is as subtle of an effect as I can get... I have also tried different shaders in unity itself, but all are distorted by using shapekeys... My thought is that the .fbx exporter loses some detail when exporting geometry to unity and believes that each shape contains additional info about vertex movement that isn't directly affected by a shapekey. So if I had a shapekey that moves the upper left eyelid down, it might try to set every other vertex that isn't modified to a slightly different value (potentially float truncation or something).
I suppose my question is: how do I export from Blender to Unity with shapekeys and without this distortion? Is there something I am doing wrong during the export process? Please let me know, I am stumped after re-topologizing and adjusting for hours without any success...
EDIT: I have tried a variety of fixes with normals. I have done a bunch of 3-d printing and know better than not to hit ctrl-n before and export ;). However, that doesn't really seem to be the problem. For testing purposes I inverted the normals to face the wrong way and the issue persisted on top of the object simply being culled (Please ignore missing textures, that's a leftover from my retopologizing and texturing with baked maps instead of geometry).
Here is an example with correct normals, inactive and active shapekeys:
and an example of incorrect normals, inactive and active shapekeys (plus from the back to see that faces are being culled due to incorrect normals):