2010-05-12 19 views
6

tengo un montón de superposición de triángulos a partir de un modelo 3D proyectada en un plano 2D. Necesito unir cada isla de triángulos conmovedores en un polígono cerrado y no convexo.Combinar triángulos superpuestos en un polígono

Los polígonos resultantes no deberían tener ningún agujero en ellos (ya que los datos de origen no).

Muchos de los triángulos de origen comparten bordes (idénticos en coma flotante) con otros triángulos en los datos de origen.

¿Cuál es la forma más fácil de hacer esto? El rendimiento no es particularmente importante, ya que esto se hará en el momento del diseño.

+1

Véase también "Unión de polígonos complejos": http://stackoverflow.com/questions/2667748/union-of-complex-polygons – unutbu

Respuesta

2

Pruebe gpc, o la Biblioteca General Polygon Clipper.

+0

por desgracia, este será utilizado en un juego comercial; no estoy seguro de cómo se sentiría UManchester al respecto. – nornagon

+1

gpc también tiene una licencia comercial. Por otra parte, GPC enumera otras bibliotecas similares en http://www.cs.man.ac.uk/~toby/alan/software/#Links. Tal vez uno de ellos tenga una licencia más adecuada. – lhf

2

Imagine la proyección en un plano como una "vista" del modelo (es decir, la dirección de proyección es la línea de visión y la proyección es lo que ve). En ese caso, los bordes de los polígonos que desea calcular corresponden a la silueta del modelo.

La silueta, a su vez, es un conjunto de bordes en el modelo. Para cada borde en la silueta, las caras adyacentes tendrán normales que apuntan lejos del avión o hacia el avión. Puede comprobar esto estar tomando el producto escalar de la normal de la cara con el plano normal - buscar bordes cuya cara adyacente normales tener productos de punto de signos opuestos con la dirección de proyección.

Una vez que haya encontrado todos los bordes de la silueta, puede unirlos en los límites de los polígonos deseados.

En general, puede encontrar más información acerca de la detección y extracción de siluetas al buscar términos como mesh silouette finding detection. Tal vez un buen lugar para comenzar es here.

+0

Esto no es del todo adecuado; para empezar, tengo varias piezas modelo cuyas proyecciones se superponen. – nornagon

+0

@nomagon, buen punto. Además, ¿tus modelos están cerrados? Es decir. ¿Tienen un interior y un exterior como una esfera o un toro? ¿O son solo una sopa de polígono general? – brainjam

Cuestiones relacionadas