2012-08-02 25 views
5

Hay dos tipos de modelos de malla de superficie, malla cerrada como una esfera o un cubo y la segunda es el modelo de malla abierta, lo que significa que la superficie del modelo no está en un circuito cerrado. Está abierto desde algún lugar como una tubería hueca. Sp Lo que quiero es que quiero detectar los vértices del borde del modelo de malla abierta. no hay borde en malla de lazo cerrado, pero en malla abierta tenemos que detectar vértices de borde para algunas operaciones de suavizado, subdivisión, etc. Amablemente, sugiero ¿cómo puedo seleccionar/detectar los vértices de los bordes? ¿Cuál es la forma óptima de hacer esto? comparando los bordes de los triángulos? Dame una idea?Cómo detectar vértices de borde de un modelo 3D de malla abierta?

Gracias.

Respuesta

10

Asumiendo que usted tiene una malla colector, a continuación, la frontera de la malla son aquellos bordes que pertenecen a un solo polígono. Los bordes que no están en el borde pertenecerán a dos polígonos. Los vértices de borde son los vértices que pertenecen a los bordes del borde.

Una forma ingenua de encontrar los vértices de los bordes es recorrer todos sus bordes, contar a cuántos polígonos pertenecen y si solo pertenecen a un polígono, luego recoger los vértices del borde como vértices de borde. Sin embargo, tendrás que eliminar los vértices duplicados de tu colección.

Un segundo enfoque es hacer que su estructura de datos de malla examine cada borde a medida que se agregan a la malla, o como polígonos se unen a bordes particulares. De esta forma, la estructura de datos de malla puede mantener una lista de bordes de bordes actualizados para usted, de modo que cuando necesite los bordes no tenga que encontrarlos cada vez. Esto reducirá en gran medida la sobrecarga para determinar los bordes del borde, aunque insertar bordes y polígonos será ligeramente más caro. Su estructura de datos de malla también ocupará un poco más de memoria.

+0

Gracias. Tengo tu punto. Lo que estaba pensando que podría estar allí es otro método para contar los bordes. – furqan

+1

¡Ya veo! He agregado un segundo método que habla sobre el almacenamiento en caché de los bordes de la frontera. Tal vez eso ayude? – River

+0

Sí, eso es realmente agradable ... No pensé en eso. Estoy agregando los triángulos y actualizando toda la malla, entonces ¿por qué no actualizo la información de los bordes también? Traté de calcularlo, es realmente un método costoso de memoria. Pero seguramente lo intentaría. – furqan

5

Suponiendo que su malla es una triangulación regular, bien construida en 2D (o 2.5D). Puede usar algunas de las propiedades enumeradas aquí: http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/02_Basics.pdf

Página 9 define el grado (o valencia) de un vértice como el número de bordes incidentes. Como se muestra, todos los vértices de los límites 4 bordes de incidentes. Los vértices "internos" tienen 5 bordes de incidente.

La página 17 define un borde límite como uno adyacente a exactamente una cara.

que podrían encontrar la discusión en la página 22 votos (cerrado triángulo 2-variedad mallas)

+0

esta presentación realmente útil para mí. Gracias. Implementé este algoritmo y funciona bien. Gracias. – furqan

+0

¡Genial para escuchar! ¿Puedes aceptar esto como tu respuesta? – Throwback1986

+0

Por qué no, pero no sabía dónde aceptar ... es gracioso, pero literalmente traté de encontrar ese botón ... – furqan

Cuestiones relacionadas