How do I find faces that are twisted relative to their neighbors such that they face in while their neighbors face out?

I'm not talking about situations that can be resolved with Mesh / Normals / Recalculate Outside. I mean situations where e.g. faces are folded over one another such that it's simply not possible to resolve their orientation manually (see example below).

This object actually has lots of such faces. With Face Orientation it's easy to spot a lot of them but many of them are very small and so difficult to find visually.

full object

Here, I've taken a bit of the object with two problem areas:


If you look closely, there's a red face up and to the right of the center and one down and to the left of the center (the second is much more obvious if looking from the other side).

If we look at the top-right one close-up we see the geometry is a complete mess:

bad geometry

I don't want to go too into it, as it's not the focus of my question, but we've got a large triangle T1 (v1, v2 and v3), it joins to T2 (v2, v3 and v4) along edge e1. T2 is folded back over T1 (hence the red color) and v4 is slightly raised off the surface of T1. T2 is joined to T3 (v2, v4 and v5) along e2. T3 folds back underneath T2 (so it's blue again). Finally, T3 is joined to T4 (v3, v4 and v5) along e3.

So how do I spot such pathological cases on a surface where almost all the faces are facing the right way? I.e. how do I spot tiny points of red on a surface that's almost completely blue?

Perhaps it's another question - but any heuristics for how to resolve such situations would also be appreciated.

The .blend file for the full object above is rather large but I've cut out the subsection shown above and you can find it here.


What you are demonstrating in your diagram (and what I see when I merge by distance 0 on your file, because the faces are all ripped) is self-intersection. It is possible to test for self-intersection with various addons; 3D Print Toolbox is one.

In the kind of mesh you have in the file, what's easier is to use "select similar" operation. For me, I use that by selecting a good face then hitting shift g, then selecting normal. This selects all faces in the mesh that are close to the normal of the face I selected. If I change the threshold in the operator panel to 0.5, this will select all blue faces and no red faces. I can then hide those faces, or invert the selection, or do anything else I want.

On the rock you have in your picture, selection by normal wouldn't work great unless you were working on a relatively flat area of the rock. Which you could be, relatively easily, just by box selecting and hiding everything else.

I don't know of any way to automatically fix self-intersection. In your diagram above, it's relatively easy: you move V4 down (away from the camera) or you move V1 up.

  • $\begingroup$ Thanks for the reply - it's very helpful. I actually discovered the merge by distance issue after posting. I've statistics turned on and if I do Merge by Distance, the vertex count doesn't change but I can clearly see that things have changed when I select a vertex that before was a set of vertices that just shared the same location. Do you know why the vertex count is unaffected by merging? This seems very counterintuitive to me. $\endgroup$ Jul 17 at 16:40
  • $\begingroup$ @GeorgeHawkins When I merge by distance in your file, vert count drops from 64k to 15k. Enable statistics in overlays dropdown. $\endgroup$
    – Nathan
    Jul 17 at 17:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.