2012-08-02 13 views
5

Esistono due tipi di modelli di mesh superficiali, mesh chiusa come una sfera o un cubo e il secondo modello open mesh che significa che la superficie del modello non è in un circuito chiuso. È aperto da qualche parte come un tubo cavo. Sp quello che voglio è che voglio rilevare i vertici del bordo del modello a maglie aperte. non vi è alcun bordo nella mesh ad anello chiuso ma nella mesh aperta dobbiamo rilevare i vertici del bordo per alcune operazioni di livellamento, suddivisione, ecc. Gentilmente, suggeriscimi come posso selezionare/rilevare i vertici del bordo? qual è il modo ottimale per farlo? confrontando i bordi dei triangoli? Dammi qualche idea?Come rilevare i vertici del bordo di un modello 3D a maglie aperte?

Grazie.

risposta

10

Supponendo di avere una maglia collettore, poi il confine della rete sono quei bordi che appartengono ad un solo poligono. I bordi che non sono sul bordo apparterranno a due poligoni. I vertici del bordo sono i vertici che appartengono ai bordi del bordo.

Un modo ingenuo per trovare i vertici del bordo è quello di scorrere tutti i bordi, contare il numero di poligoni a cui appartengono e se appartengono solo a un poligono, quindi raccogliere i vertici del bordo come vertici del bordo. Dovrai rimuovere i vertici duplicati dalla tua collezione, però.

Un secondo approccio prevede che la struttura dei dati della mesh esamini ogni spigolo non appena vengono aggiunti alla mesh o come poligoni collegati a bordi particolari. In questo modo, la struttura dei dati mesh può mantenere un elenco di bordi del bordo aggiornati per te, in modo che quando hai bisogno dei bordi non dovresti trovarli ogni volta. Ciò ridurrà notevolmente l'overhead di determinazione dei bordi dei bordi, sebbene l'inserimento di bordi e poligoni sarà leggermente più più costoso. La tua struttura dati mesh occuperà anche un po 'più di memoria.

+0

Grazie. Ho capito il tuo punto. Quello che stavo pensando che potrebbe essere lì è un altro metodo per contare i bordi. – furqan

+1

Vedo! Ho aggiunto un secondo metodo che parla della memorizzazione nella cache dei bordi del bordo. Forse questo aiuta? – River

+0

Sì, è davvero bello ... non ci ho pensato. Sto aggiungendo i triangoli e aggiornando l'intera mesh, quindi perché non aggiorno anche le informazioni sui bordi. Ho provato a calcolarlo, è davvero un metodo costoso per la memoria. Ma sicuramente lo proverei. – furqan

5

Supponendo che la mesh sia una triangolazione 2D (o 2.5D) regolare e ben costruita. È possibile utilizzare alcune delle proprietà elencate qui: http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/02_Basics.pdf

Pagina 9 definisce il grado (o la valenza) di un vertice come il numero di fronti incidenti. Come mostrato, tutti i vertici di contorno 4 bordi incidenti. I vertici "interni" hanno 5 bordi incidenti.

Pagina 17 definisce un limite di confine come uno che è adiacente esattamente a una faccia.

si potrebbe trovare la discussione a pagina 22 utili (chiuso 2-collettore triangolo maglie)

+0

questa presentazione davvero utile per me. Grazie. Ho implementato questo algoritmo e funziona perfettamente. Grazie. – furqan

+0

Ottimo per sentire! Puoi accettare questa come risposta? – Throwback1986

+0

Perché no ma non lo sapevo da dove accettare .. è divertente ma letteralmente ho provato a trovare quel pulsante ... – furqan