Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to detect border vertices of an open mesh 3d model?

There are two kinds of surface mesh models, closed mesh like a sphere or a cube and the second one is the open mesh model which means the surface of the model is not in a closed loop. It is open from somewhere like a hollow pipe. Sp what I want is I want to detect the border vertices of the open mesh model. there is no border in closed loop mesh but in open mesh we have to detect border vertices for some smoothing, subdivision, etc. operations. Kindly, suggest me how can I select/detect border vertices ? what is the optimal way to do this ? by comparing edges of the triangles ? Give me some idea ?

Thanks.

like image 604
maxpayne Avatar asked Aug 02 '12 14:08

maxpayne


People also ask

How do you check if a mesh has a border?

A mesh has borders if has some half-edges without neighbors. A mesh has non-manifold edges if we find some half-edge with more than one neighbor. Procedure SearchCount (V,W) searches and counts how many times the half-edge (V,W) is found in the remaining triangles of the mesh (excepting t).

How do you find the border of a triangle?

The perimeter of a polygon is the total length of the boundary. For a triangle, we can find it by adding the lengths of its three sides. So, if ABC is a triangle. We find the perimeter of triangle ABC by adding the length of all the three sides.


1 Answers

Assuming that you have a manifold mesh, then the border of the mesh are those edges which belong to only one polygon. Edges that are not on the border will belong to two polygons. The border vertices are the vertices that belong to the border edges.

A naive way to find the border vertices is to iterate through all your edges, count how many polygons they belong to, and if they only belong to one polygon, then collect the edge's vertices as border vertices. You will have to remove duplicates vertices from your collection, though.

A second approach is to have your mesh data structure examine each edge as they are added to the mesh, or as polygons are attached to particular edges. In this way, the mesh data structure can keep a list of up-to-date border edges for you, so that when you needed the edges you would not have to find them each time. This will greatly reduce the overhead of determining border edges, although inserting edges and polygons will be slightly more expensive. Your mesh data structure will also take up a bit more memory.

like image 50
River Avatar answered Sep 20 '22 03:09

River