Mirror modifier AND mirror operator destroys custom normals
Closed, InvalidPublic

Description

System Information
Windows 7 Pro
Quadro K2100M
Intel Core i7-4900MQ

Blender Version
Broken: 2.79
Worked: afaik never

Short description of error
Using the mirror modifier on a mesh with custom normals, the normals are not mirrored correctly, but are rotated all over the place, giving ugly render artifacts.

I work on heavy triangle meshes imported from other programs, and I often use the YAVNE addon to correct the normals (usually using "face area" for weighing). Other times I import FBX files including their custom normals. I do not want to double the geometry, so I use (or would like to use) the mirror modifier on all symmetrical parts. But this throws off their normals. And I also cannot just mirror them in edit mode (CTRL-M).

I have read somewhere that this behaviour if known. It does however look like a bug, and can destroy models if users are not aware (since custom normals data, once lost, cannot be reaquired).

In fact, I do not know of a way around the problem. How do I mirror custom normals? Maybe there is a way to fix this?

Exact steps for others to reproduce the error
I have attached a small file. The original object looks OK, the mirrored side looks distorted.

Details

Type
Bug

I see the artifact on the top of the mirrored object. I'll look a little deeper to see if the solution is obvious

Philipp Oeser (lichtwerk) triaged this task as Confirmed priority.Fri, Jan 19, 11:53 PM

I've made another file for demonstration purposes.

Its a grid with custom normals pointing towards an empty. Mirrored on all 3 axis with the mirror modifier.
There's definitely a pattern and on 'every second' axis the result is actually correct, so I guess there is some minor treatment to the lnors that can be accounted for in the mirror modifier.

Assigning to @Bastien Montagne (mont29), but feel free to bounce back to me :)

Thanks for the report, but there is nothing new here, custom normals have never been supported with topology-editing modifiers or operations (like mirror one). Iirc, 2017 GSoC tackling editing of custom normals also added their support to mirror modifier, not sure when we'll have time to merge it in master though :|

But in general, you should never modify topology of your mesh once you have added custom normals, we might end up supporting a limited set of cases (like the mirror modifier), but this is not a good idea anyway. Custom normals are designed to support alterations of the shape (deformations), but absolutely not of the topology, this is not possible. So this is a known limitation/low priority TODO at best. ;)