How to check non- manifoldness in the mesh and how to eliminate them?
Are there any algorithms available?
Non manifoldness in a mesh
Topologically, I think all you need is the following:
- It's a manifold if every edge is shared by exactly two triangles
- It's a manifold-with-boundary if every edge is shared by either one or two triangles.
However, this doesn't deal with geometric issues, like self-intersection or t-junctions (so you don't know if the manifold is embedded in R[sup]3[/sup] or merely immersed).
- It's a manifold if every edge is shared by exactly two triangles
- It's a manifold-with-boundary if every edge is shared by either one or two triangles.
However, this doesn't deal with geometric issues, like self-intersection or t-junctions (so you don't know if the manifold is embedded in R[sup]3[/sup] or merely immersed).
Topologically, I think all you need is the following:
- It's a manifold if every edge is shared by exactly two triangles
- It's a manifold-with-boundary if every edge is shared by either one or two triangles.
However, this doesn't deal with geometric issues, like self-intersection or t-junctions (so you don't know if the manifold is embedded in R[sup]3[/sup] or merely immersed).
So to determine the presence of non manifoldness, it is enough to check whether no of triangles shared are more than 2.
But how do I remove non-manifoldness. It is difficult to figure out, which among the two shared triangles are real ones.
However, this doesn't deal with geometric issues, like self-intersection or t-junctions (so you don't know if the manifold is embedded in R[sup]3[/sup] or merely immersed).
How to deal with self intersections and t junctions in the mesh?
Easy, but possibly slow way to check for self-intersection
foreach (triangle A in mesh)
{
foreach (triangle B in mesh)
{
if tri_tri_intersect(A, B)) return true;
}
}
return false;
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement