Check BlandShape Normal
Since Unity 2018, when importing fbx into Unity, the BlendShape normal is automatically recalculated. As a result, there is a possibility that artifacts are produced on the model’s surface.
DetailsIf the BlendShape normal is (0, 0, 0), the value of the surface normal should not be changed. It seems that the original BlendShape normal is replaced by the recalculated BlendShape normal, resulting in unexpected changes on the model’s surface
Validate surface normal using MToon’s debugging options
Drag fbx to the Hierarchy window and select it. In the Inspector, click
Select -> Materials -> Extract Materials and choose a folder to save these materials.
Next, select all materials and change
Surface normal validationAt this point we set all the materials to MToon for surface normal validation only, so setting up textures’ properties is not required.
To visualize the surface normal, go to
Options - Debugging Options - Visualize and select
Select a GameObject containing
SkinnedMeshRenderer with BlendShape. Drag the slider while observing surface normals:
We can see surface normals around nose tip and mouth are not correct.
Steps to reproduce:
- Import VRoid model into Blender
- Export vrm as fbx
- Import fbx into Unity
Fix BlendShape normal
To fix BlendShape normal, in the fbx’s inspector, click
Select -> Model -> Legacy Blend Shape Normals and check the box.
Now confirm whether the BlendShape normal has been fixed: