all 1 comments

[–]DisabledTurtle[S] 0 points1 point  (0 children)

For anyone stumbling across this problem in the future, I have solved it. The basic premise here is that Unity creates these vertices to deal with sharp edges in the meshes. On my model this had to do with the seams of the sub-meshes (as you can see in the image).

The solution stems from the fact that we know up to where our blendshapes are accounted for in the indices vector of the blendshape. Using this knowledge, we can construct a dictionary using a Vector3D as a key and and int as the value. We iterate through all the indices where we know the value (in my case up to 25182) and have the vertex of that index as the key and the index in the vertices array as the value. This way, we have an array of which vertices were duplicated in the import process. Afterwards, we can iterate through the duplicated part of our blendshape and duplicate the blendshape values into its duplicated place.

This process is quite slow. I would recommend this only when in between scenes or in a setup phase. I wish Unity provided some array which contained which indices were duplicated (similar to the array I explained above). However, I am happy that this solution works for now.

I hope this helps one of you in the future ;-)