algorithm language-agnostic filter computational-geometry mesh

algorithm - Eliminar las caras ocluidas en una malla cerrada



language-agnostic filter (2)

El algoritmo más obvio (pero casi seguro que no el más eficiente) para hacer eso es el siguiente:

  1. Considera 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. Repite para todos los triángulos en la malla.

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 (¿se puede hacer una imagen 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.

Realmente apreciaría cualquier pista.


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 quieres 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.

Usar floodfill funciona con arreglos multidimensionales, pero ¿también funciona con Koordinates 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.

los 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. Considere esto: tiene 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.

Yo no puedo ayudarte, ya que también estoy buscando un algoritmo que pueda hacer esto.

saluda