Search Issue Tracker

By Design

Votes

0

Found in

2019.3.15f1

2019.4

2020.1

2020.2

Issue ID

1252448

Regression

No

Blend shape normal shading is wrong around bends

Asset Importers

-

How to reproduce:
1. Open attached project "DigitalDouble.zip"
2. Enter Play Mode
3. Pause Play Mode
4. Advance frame by frame while looking at the elbow (Scene view) of the model until it bends enough

Expected result: Shading looks as expected
Actual result: Shading does not look as expected

Reproducible with - 2019.4.9f1, 2020.1.1f4, 2020.2.0b1
Could not reproduce with - 2018.4 (Editor errors)

  1. Response avatar

    Resolution Note:

    Blendshapes are applied as deltas to the vertices according the set weight. Blendshapes primarily affect the vertex position, but if normals and tangents are set to 'import' they will also be modified. The model attached to this case is set to 'import' normals for blendshapes. These normals are authored in the DCC tool and are read from the FBX file.

    The RightForeArm_02 blendshape is quite extreme (you can observe this by setting the weights of all other blendshapes to 0%, and just this one to 100%). I presume the normals for the blendshape have been calculated based on this pose. In the animation the extreme vertex position is compensated by RightForeArm_01. Thus providing a more normal shape. But the normals that are blended in are not necessarily corrected by the other shape. Thus resulting in the observed artifacts. A solution would be to author the normals for the blendshapes in the DCC to be correct for this setup.

    Looking at the use case here I think you can get away by only applying corrective blendshapes to the vertex position (setting the blendshape normal option to 'none'). Alternatively, you can recalculate the normals at runtime with some scripting. However, do note that this is rather costly, as it requires baking the mesh and recalculating the normals afterwards. We do not support normal recalculation as part of the deformation process.

    Note: please be aware of the following issue. When the Model Importer is set to 'Import' normals for blendshapes, but there are no normals present (for blendshapes) they will be automatically calculated for you. Unfortuntaly we cannot detect this and thus are not able to provide a warning message. Having the normals calculated for you can result in undesired effects too:
    https://issuetracker.unity3d.com/issues/artifacts-are-produced-when-using-multiple-imported-blend-shape-normals

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.