Skinned Mesh Renderer - Update Normals

Trying to find this same answer as asked here, two days ago:

http://answers.unity3d.com/questions/1113500/skinned-mesh-renderer-skin-normals-option-gone.html

Is this option gone? How else do we get our skinned meshes to react properly to light?

I know this is an old question and given that you’ve helped me and someone might stumble upon this in some point in the future. I think it’s alright under those circumstances to reply to these age-old question with a proper answer.

Select the object that you have imported, go to the inspector tab and under the Model tab go to Normals & Tangents → Normals and change from Import to Calculate.

That’s a workaround, but not the right solution. Models store normals for a reason, and in nontrivial assets you can’t just ignore and recalculate them. You can have mixed hard and soft edges in one mesh, and they’re also used for artistic control.

I don’t see this problem with skinned normals in 5.6, though. Maybe something to do with the actual mesh?

So my guess is that recalculate option would be out of the question when it comes to iOS games even if that method would be solely used for the main player that would be non-stop on the screen?

My understanding is that the main purpose of “recalculate” is when you have a mesh with simple smooth normals (which is common, of course), so by calculating them from the mesh the normals don’t have to be stored, making the game data smaller. It’s fine to use it when you know it’ll give you the normals you want, just be aware that if you have something other than straightforward smooth lighting on the mesh, it’ll lose it.

I don’t know when this problem actually happens, but I haven’t seen it. (I’ve seen it in other engines…) Is it happening on a particular platform, or is a specific mesh causing it? I can’t build for iOS to try it there.

The basic problem I reported originally was this:

  • Make a skinned mesh, say two quads attached to two bones.
  • Stick a light nearby them
  • Animate the bones such that one of the quads bends.
  • Note that the normals on the moving quad do not change.

This appears to be fixed as of Unity 5.6.1. I am not sure when it got fixed as I reported that issue in 2015.

Proof that it now works properly in accompanying .unitypackage. You will need to have Blender3D to import it fully, otherwise you will see nothing.

3115466–235615–TestSkinnedMeshNormals.unitypackage (164 KB)