Vertex / face normals inconsistency

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

– Paolo

Did you try _UnifyMeshNormals?

Yes, but no matter how I try to rebuild normals or to unify them, the problem persists.

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.

Well, it is possible that the mesh boolean operations might not succeed even if all the normals are OK, this is not one of Rhino’s strong points.

Hi Paolo,

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.

_
c.

1 Like

Thank you @clement,

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.

HI clement,

Sorry for contacting you late about this problem.
Can i get that Python? I have same problem but i don’t know how to solve it.

Hi @Yoon2, the script (rvb) can be found from the link in the first post. Btw. are you using a mac ?

_
c.

Nope, i am using Windows. And thank you for helping me. But i don’t still get it how to solve the problem by this method.

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.

_
c.

Great! Thank you for your answer. Have a nice day~