<p>I'm implementing some mesh operations (e.g. edge collapse, edge split, edge flip etc) and need to ensure applying such operations does not cause the mesh to become non-manifold. However, I'm not sure how what things I should check for to ensure my geometry doesn't become non-manifold. Can someone tell me what those conditions/checks are?
Also, how can I apply the same operation that causes the mesh to become non-manifold so that the manifoldness of the mesh is still preserved?</p>

CC BY-SA 4.0
2021-02-19T18:10:11.193Z
Checking for nonmanifoldness is 1) a edge can only have 2 inbound faces 2) winding direction of those  faces are the same 3 )  all edges connecting a vertex must form a loop if they form 2 loops then its nonmanifold
joojaa
CC BY-SA 4.0
2021-02-19T20:05:21.017Z
Being a manifold is a property of the mesh's topology. As such, operations like "vertex move" cannot affect that, since the position of a vertex is irrelevant to a mesh's topology.
Nicol Bolas
CC BY-SA 4.0
2021-02-19T21:08:08.693Z
Are you sure you mean manifold? Or some other term to describe some other degenerate cases? When you say vertex move, you make me think self intersections and coplanar faces might be an issue for you.
Andrew Wilson
CC BY-SA 4.0
2021-02-19T21:56:12.410Z
@AndrewWilson Yes I meant manifold. I misspoke by mentioning vertex move; will update my post now.
Amir
CC BY-SA 4.0
2021-02-25T17:34:41.523Z
@joojaa How can I check the winding direction of the edges in a face?
Amir
<3d><c++><algorithm><geometry><mesh>
Under what conditions does a mesh operation cause the mesh become non-manifold and how to avoid it?
Amir
# Under what conditions does a mesh operation cause the mesh become non-manifold and how to avoid it?

(Asked by: username_0 on 2021-02-19)

I'm implementing some mesh operations (e.g. edge collapse, edge split, edge flip etc) and need to ensure applying such operations does not cause the mesh to become non-manifold. However, I'm not sure how what things I should check for to ensure my geometry doesn't become non-manifold. Can someone tell me what those conditions/checks are?
Also, how can I apply the same operation that causes the mesh to become non-manifold so that the manifoldness of the mesh is still preserved?

**Tags:** 3d, c++, algorithm, geometry, mesh

> **Comments:**
> **username_1**: Checking for nonmanifoldness is 1) a edge can only have 2 inbound faces 2) winding direction of those  faces are the same 3 )  all edges connecting a vertex must form a loop if they form 2 loops then its nonmanifold  
> **username_2**: Being a manifold is a property of the mesh's topology. As such, operations like "vertex move" cannot affect that, since the position of a vertex is irrelevant to a mesh's topology.  
> **username_3**: Are you sure you mean manifold? Or some other term to describe some other degenerate cases? When you say vertex move, you make me think self intersections and coplanar faces might be an issue for you.  
> **username_0**: @username_3 Yes I meant manifold. I misspoke by mentioning vertex move; will update my post now.  
> **username_0**: @username_1 How can I check the winding direction of the edges in a face?  

---

## 0 answers

