5

Necesito eliminar algunas caras ocultas que están dentro de una malla triangular cerrada. He encontrado una forma de hacerlo usando MeshLab, pero hay dos problemas: 1) el artículo dice que podría fallar en algunos casos (¿puede imaginarse en qué casos?) Y 2) Me gustaría hacerlo programáticamente (¿Conoces alguna implementación existente?). Ni siquiera sé el nombre de este tipo de filtros de simplificación.Eliminar caras ocluidas en una malla cerrada

Realmente agradecería cualquier pista.

+0

Se llama [selectiva de oclusión] (http://en.wikipedia.org/wiki/Hidden_surface_determination) * (o la eliminación selectiva de la cara posterior, difícil de decir de su pregunta. Ambos se describen en este artículo) * –

+0

Pero, ¿no están estos algoritmos de eliminación de datos adjuntos de alguna manera a la ventana de la cámara? Necesito un filtro de simplificación general para dejar caer lo que hay dentro de la superficie cerrada ... Tal vez sea tan simple como verificar todos los vértices y ver si estoy dentro o fuera de la malla, y quitar los vértices "interiores", no lo hago lo sé, ¿ve algún inconveniente ?. – Federico

+0

En ese caso, solo haga un simple [relleno de inundación 3D] (http://en.wikipedia.org/wiki/Flood_fill) y elimine las caras que no se hayan alcanzado. –

Respuesta

2

El algoritmo más obvia (pero casi con toda seguridad no la más eficiente) a hacerlo es la siguiente:

  1. Consideremos un triángulo en la malla. Dibuja tres líneas entre los tres vértices del triángulo y el punto de la cámara. (Si la cámara está infinitamente lejos, solo tenga en cuenta la dirección del punto de vista).
  2. Si todas las líneas dibujadas se cruzan con la superficie triangulada, no visualice el triángulo considerado. Si solo algunos de ellos lo hacen, muestra parcialmente el triángulo.
  3. Repita para todos los triángulos en la malla.
0

Lo que quieres hacer es borrar las caras que están dentro de una figura geométrica de una vez por todas.

La solución Romans puede ser aceptable si solo desea mirar el objeto desde 1 dirección. Dado que las superficies no visibles pueden hacerse visibles, si gira la cámara, no es una solución aceptable.

El uso de relleno funciona con matrices multidimensionales, pero ¿también funciona con coordenadas 3D? dado que las superficies no son siempre (int) y tienen otra inclinación que (1,0,0), (0,1,0) (0,0,1), este enfoque, en mi opinión, tampoco funciona.

casos en los que el algoritmo puede fallar: El valor de oclusión calculado le indica si los vértices de su superficie están dentro de su objeto. Sin embargo: aunque todos los vértices están dentro del objeto, parte de la superficie puede mostrarse de todos modos. Considera esto: Tienes tres objetos elevados, cada uno con un vértice dentro. Si bien los vértices no se muestran, la superficie abarcada entre ellos es parcialmente visible.

I myselve no puede ayudarlo, ya que también estoy buscando un algoritmo que pueda hacer esto.

saluda