Custom Loop Normals are normally encoded relative to the default
normals, similar to normal maps, allowing them to naturally follow
mesh deformations. Changes to mesh topology however often result
in nonsensical effects that are not desired.
The Remove Doubles operation especially (now known as Merge By
Distance) is intended as a purely topological operation, and
definitely should not change the vector of the custom normals.
This patch implements that behavior by converting the relative
encoding into an absolute vector layer for the duration of the
operation. It also modifies other Merge types in this way for
consistency, the Rip operator as their inverse counterpart;
and also Dissolve, Connect Path and Knife operators as other
examples more related to topology than shape.
Custom Normals: when forcing smooth fan clnors together, average in 3D.
It seems the code is designed to force all custom normals associated
with a smooth fan to be the same. Not touching on that design decision,
this fixes the code to average in 3D space, because averaging normals
in polar coordinates produces weird results.