gladys yang
gladys yang

Reputation: 11

Is there an easy way to locate handles / tunnels on a closed 3d triangle mesh?

So I'm trying to use a boundary-based method to do mesh segmentation on a mesh with a random number of small handles. I already have a rough boundary, only need to refine it to make sure it stays below the lowest points of all the tunnels in the mesh. So I need to know where the tunnels are.

enter image description here

I found a few papers computing handle and tunnel loops, which are a bit intimidating given that I don't have a solid topology background.

Upvotes: 1

Views: 355

Answers (3)

max
max

Reputation: 1057

You can obtain an homotopy/homology basis by using a tree/cotree decomposition of your (manifold) mesh:

  • compute a spanning tree on the mesh ("tree")
  • compute a spanning tree on the dual mesh ("cotree") excluding the dual edges corresponding to the primal edges in the primal spanning tree
  • any edge that is neither in the tree nor the cotree ("leftover edges") can be extended to a loop through the primal tree root, and these loops are homotopy generators (the base point being the tree root). For each handle/tunnel you'll get two loops: one around the handle and one around the tunnel.

The simplest way to compute the spanning trees would be using breadth-first search, which results in decent-looking generator loops, unlike e.g. depth-first search.

If you need the generator loops to be tight, check out "Greedy Optimal Homotopy and Homology Generators" by Jeff Erickson in which they use shortest-path tree and minimum spanning tree for the tree/cotree decomposition. They also describe how to obtain a tight homology basis but the method is no longer "easy".

Upvotes: 0

gladys yang
gladys yang

Reputation: 11

I found no simple way to directly locate handles. However, shape diameter function can reflect whether a vertex is near to a hole or not to a large extent if there's no noise inside of the mesh.

Upvotes: 0

Nico Schlömer
Nico Schlömer

Reputation: 58881

What you want is to know a certain part of the boundary of your triangulated 3D domain. This cannot be done because, in 3D, there is nothing that topologically separates a "hole" from other parts of the boundary. In other words: All boundaries are holes.

Upvotes: 0

Related Questions