Crack opening / topology change in OpenMesh

136 views Asked by At

I am using a triangular mesh (TriMesh) in OpenMesh and need to carry out the topological changes shown on the picture. These are cracking of edges, either at the boundary or within the body of the mesh. To my knowledge, there are several ways this could be accomplished:

  1. Delete and reinsert one or two of the adjacent faces.
  2. Use the vertex_split() function and delete the added extra faces.
  3. Use the split() function to split faces or edges and then delete the extra faces.

The problem is that none of these approaches preserve the initially present faces and half edges. I need to store properties on both the faces and the adjacent half edges, therefore I would need them to be preserved upon cracking. Is there a way (possibly low level functions) which do that in OpenMesh? Ideally, faces and adjacent half edges should be preserved and the only newly introduced half edges should be the boundary half edges of the crack (2 in the first case and 4 in the second case).

Edit: I think that vertex_split() does not split the half edges symmetrically. According to the documentation, v_l -- v0 and v_r--v0 are two new edges, with two new halfedges I assume. It would be much more useful if a halfedge from v_l--v1 and v_r--v1 was carried to v_l--v_0 and v_r--v0, and new halfedges would be inserted to v_l--v1 and v_r--v1. That way the rest of the mesh (the neighboring faces and their adjacent halfedges) would be left untouched upon the vertex_split() operation.

Edit2: I guess the real question is how to split an edge composed of two half edges into two separate edges with one of the initial halfedges each (plus one newly created halfedge for each). Looking at the source code I have clues on how to reconnect those halfedges, but they have to be somehow splitted between two separate edges.

crack

0

There are 0 answers