Hello, when working with meshes I sometimes get the message “Mesh has 3 faces where the face normal differs substantially from the vertex normals.” when checking the meshes.
I already try to identify the faces involved following this thread, but I could not solve the issue.
Furthermore, my meshes are open, so I cannot remove faces and refill them by using FillHoles() in a naive way, because my mesh would get capped and closed.
Just to provide a little context:
the open mesh is to be extruded later into a “solid” closed mesh
the extruded mesh is then used as input to boolean mesh operations
As stated by the Mesh Repair Tool, conflicting vertex/face normals can lead to issues when working with boolean operations, and that’s exactly what happens (the resulting mesh has holes, faces with intersecting edges, etc.).
Is there any other way to fix differing vertex/face normals?
Thanks
Another fact: normals inconsistency doesn’t seem to be related to intersecting edges, because if I use mesh.Faces.GetClashingFacePairs(-1) the returned index pair array is empty.
if you can post the mesh or want to send it via PM i can try to fix it. Usually, if the holes are large and require a smooth fill, i fix it with MeshMixer. The last Script posted in the linked thread is still what i use. It is written in Python now and much faster.
I managed to “heal” the faces with inconsistent normals with your VB script. I may try to automatise the process somehow, including a similar step in the workflow I am implementing.
Anyway, a manual user interaction is needed to fix issues related to intersecting faces, so I will adopt a mixed approach.
The script does only color the mesh and should indicate problematic areas where the vertex normal deviates most from the surrounding face normal. It does not change the mesh geometry but helps to detect where you need to do repairs.