Page MenuHome

Merging vertex with custom normals ends with a angled vertex normals
Closed, InvalidPublicBUG

Description

System Information
Operating system: Linux-5.3.0-42-generic-x86_64-with-debian-buster-sid 64 Bits
Graphics card: GeForce GTX 1070/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 435.21

Blender Version
Broken: 2.79, 2.83 (sub 9), branch: master, commit date: 2020-03-15 22:43, hash: rBf06a6e92bc5e
Worked: 2.73
Short description of error
Merging vertex from faces that where mirrored and sat custom normals from faces, ends with a unexpected vertex normal direction.


Exact steps for others to reproduce the error
1- Add a monkey
2- Delete half of the monkey
3-Select one of the faces from the top
4- alt + n > set normal from faces
5- Add mirror modifier
Or you can open this file that has step 1 to 5


6- Enable disable merge in the mirror modifier

Note: im using mirror modifier in this example but also does the same with merge by distance or weld modifier

Event Timeline

Germano Cavalcante (mano-wii) changed the task status from Needs Triage to Confirmed.Fri, Mar 20, 3:48 PM
Germano Cavalcante (mano-wii) changed the subtype of this task from "Report" to "Bug".

This is more complicated than I thought.
I supect the calculation of the average normal is wrong (in split_loop_nor_fan_do when clnors_invalid is true).

I'm taking longer to investigate this than I should.
My suspicion is that the calculation of lnor_space is wrong for these fan loops.
@Bastien Montagne (mont29), I think this is something for you since you have implemented the original code (rB4a2f6447)
(not really a priority for now)

Bastien Montagne (mont29) claimed this task.

Thanks for the report, but custom normals are not designed to work with topology changes.

There is some ongoing work to support this for some cases that make sense (see e.g. D4994 for some merge operations), but this is usual TODO process, no bug here.