Blend shape normals artefacts

Whit some corrective blendshapes unity generate artefacts on normal verteces even if the Blend shape draw a perfect geometry. Can anyone help on figure out why?

Thanks everybody

1 Like

Images of the problem needed to assist.

the wireframe of the geometry is good, the corrective blendshape is working, but the normal vertex are very bad. they are like blocked in the pose of the first frame of the animation. the geometry is corrected by the blendshape when the leg moves, but the normal doesn´t do anything.

Thanks theANMATOR2b for any kind of support

3436744--271731--Capture.PNG

We have had a couple threads about this recently. Are you exporting via fbx from Maya?
You may want to test with lights/shadows and a standard shader - just to test/see if that changes anything, but I don’t think it will.

Please consider filing a bug report on this - Also post which Unity version you are using, if you can reproduce in 2017.x versions.

I’m testing out of 3D Max to attempt to reproduce.

I have read all the the post on blendshapes and normal, but seems no one had a ufficial solution to that. I am exporting via fbx with maya and for now I am working with Lambert material in maya and standard shader in unity 2017.3.1f1. I also notice that someone post an issue tracker on this subject. Do you know what it can depend on? The weird thing: if I re-import the thx in a new project in maya, the issue doesn t exist. It produce only in unity.

Btw thanks a lot,
Seriously.

1 Like

Looks like it’s been an ongoing issues since 5.5.
https://issuetracker.unity3d.com/issues/normals-are-broken-when-using-deformed-skinned-mesh-with-blend-shapes
https://issuetracker.unity3d.com/issues/blendshape-normal-deltas-are-applied-at-wrong-time-in-normal-calculation-process
https://issuetracker.unity3d.com/issues/blendshapes-do-not-update-normal-directions

I still have yet to test form 3D Max.

@Mecanim-Dev this seems to be a recurring error. Has there been any notice of this problem? Thanks for reviewing.

1 Like

I’m trying to solve this problem also with facial blendshapes containing targets with overlapping vertex deltas. It looks like Unity saves fixed normals per blendshape target rather than recalculating normals on the deformed result which is what we would want.

2 Likes

Unfortunately this problem is still not solved, for our project is has reappeared in 2018.3.* and is still present in 2019.1.0b2. (It doesn’t occur with 2018.2.)

Below is an example using 2019.1.0b2 and two identical models. The screenshot is in-editor with Android as platform. The model on the left has blendshapes deactivated, the on the right has them activated around the beak, eyes and eyebrows, and the normal artefacts are clearly visible.

At first I thought this was due to CPU skinning (because it first showed up on 2018.3, where GPU skinning is broken, see here). However, in 2019.1 it also happens with GPU skinning on. In fact, it’s not even necessary to go to play mode, the issue occurs even in edit-mode when fiddling with blend-shape values by hand.

EDIT: the problem occurs using both Legacy (Diffuse) and Standard shader, and with or without a directional light in the scene.

EDIT: FIXED, see below.

4192804--371380--upload_2019-2-7_18-2-53.png

2 Likes

I had the same issue. This was resolved by setting both Normals and Blend Shape Normals to “Calculate” in the Model section of the FBX. Hope this helps!

7 Likes

It worked. You are a genius and deserve the Nobel prize!

2 Likes

I’ve got the same issue, and setting the Normals to “Calculate” did indeed work, but is not a good solution since it makes it impossible to define hard edges.

EDIT: Filed a bug report, (Case 1132721) Blendshape normals not properly imported and blended

EDIT2: Found a very old and related bug which is marked as duplicate, but can’t find the non-duplicate - Unity Issue Tracker - Blendshapes do not update normal directions

Hard edges: well, AFAIK hard edges are really just split edges. If your 3D modeling program allows it (Blender does), you can simply split your hard edges upon export to FBX…

Yes that’s how hard edges always work in realtime (two vertices at the same point with different normals). That doesn’t stop Unity from calculating them as smooth if it’s set to “Calculate”.

Also, the point of the bug report is that with a properly exported mesh that has hard edges blendshapes break / don’t respect the hard edges anymore.

1 Like

I tried this on my mesh and it decidedly didn’t fix the issue. I’m still getting impossible normals on the part of the eyelid that starts as the epicanthic fold. Did anyone have a second answer?

I think you need to be more specific; also consider filing a bug report.

I got the same issue, blend shape normals are screwed, fbx from Maya 2018. I’m on Unity 2018.3.
Calculating normals in Unity does not fix this, the models looms pretty bad this way.

Again: this problem appears in some situations (like yours) but not others (like mine), so if you want to get this fixed, you need to be much more specific and optionally file a bug report…

Confirming kanyvr1701 fix for Blender 2.79 fbx export (2 blend shapes) and Unity 2018.3.

Tested face eye blinks using blend shape keys on timeline. Prior to fix there were shading errors occuring in other areas of face although only the eyelids were vert re-posed (for the closed state). Setting normals and blend shape normals to “calculate” in Model properties, in Unity, smoothed those areas out.

I want to up this topic from the Nov 2019, because “calculating” normals is not an option when you use corrective blendShapes. Because corrective blendShape should use normals taken from the specific pose, not the default T pose (which is taken for calculation during importing model)

Exactly. Experiencing the same issue as late as 2019.3.0.