Metodi numerici per la gra ca: Mesh data structuresweb.math.unifi.it/users/sestini/mng_2017.pdf ·...
Transcript of Metodi numerici per la gra ca: Mesh data structuresweb.math.unifi.it/users/sestini/mng_2017.pdf ·...
Metodi numerici per la grafica: Mesh data structures
Metodi numerici per la grafica:Mesh data structures
Duccio [email protected]
Universita degli Studi dell’Insubria
Metodi numerici per la grafica: Mesh data structures
Outline
1) Mesh poligonali
:: Definizioni;
:: Geometria.
2) Strutture dati
:: Point clouds;
:: Polygon soup;
:: Triangle base data structure;
:: Node based data structure;
:: Winged-edge;
:: Half-edges;
3) Algoritmi sulle mesh
:: Consolidazione;
:: Semplificazione;
:: Smoothing;
4) OpenMesh tutorial
:: OpenMesh e Visual Studio;
:: Half-edge;
:: Operazioni di base;
:: Esempio di smoothing;
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Introduzione
Mesh poligonali - Definizioni e Geometria
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Introduzione
Una mesh poligonale, detta anche magliapoligonale, e una collezione di vertici, spigoli efacce che definiscono la forma di un oggettopoliedrico nella computer grafica 3D e nellamodellazione solida. Le facce consistono, disolito, di rettangoli, triangoli, o altri semplicipoligoni convessi, dal momento che ciosemplifica il rendering.
Lo studio di mesh poligonali e un grandesotto-campo della computer grafica. Lerappresentazioni con mesh poligonali sonoutilizzate per diverse applicazioni e con diversefinalita. Di solito, le mesh rappresentanoesplicitamente solo la superficie (il volume eimplicito).
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Definizioni
I Una mesh poligonale consiste in tre tipidi elementi:
vertice - e una posizione nello spazio e hainformazioni relative al colore e al vettorenormale;
lato (edge) - e una connessione tra duevertici;
faccia - un insieme chiuso di lati, adesempio una faccia triangolare avra trelati e una faccia quadrangolare avraquattro lati. Un poligono e un insiemecomplanare di facce.
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Definizioni
I Connettivita e Geometria sono leinformazioni che descrivono la mesh;
I Connettivita della mesh, o topologia,descrive la relazione di incidenza tra glielementi della mesh;
I Geometria della mesh specifica laposizione e altra caratteristichegeometriche di ogni vertice.
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Definizioni I Una mesh e un manifold se:
:: ogni lato e incidente soltanto ad una o due facce;
:: la faccia incidente al un vertice forma un ventaglioaperto o chiuso;
I L’orientamento di una faccia e un ciclo ordinato di verticiincidenti;
I L’orientamento di due facce adiacenti e compatibile se idue vertici del lato comune sono in ordine opposto;
I Un mesh manifold e orientabile se ogni coppia di facceadiacenti hanno un orientamento compatibile;
I Se ogni vertice ha un ventaglio chiuso, il relativo manifolde privo di bordo. Un lato si definisce di bordo se eincidente ad una sola faccia. Tali lati definiscono ilconfine del manifold;
I Il confine, se esiste, consiste in uno o piu loop di lati.
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Definizioni I Una mesh e un manifold se:
:: ogni lato e incidente soltanto ad una o due facce;
:: la faccia incidente al un vertice forma un ventaglioaperto o chiuso;
I L’orientamento di una faccia e un ciclo ordinato di verticiincidenti;
I L’orientamento di due facce adiacenti e compatibile se idue vertici del lato comune sono in ordine opposto;
I Un mesh manifold e orientabile se ogni coppia di facceadiacenti hanno un orientamento compatibile;
I Se ogni vertice ha un ventaglio chiuso, il relativo manifolde privo di bordo. Un lato si definisce di bordo se eincidente ad una sola faccia. Tali lati definiscono ilconfine del manifold;
I Il confine, se esiste, consiste in uno o piu loop di lati.
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Definizioni I Una mesh e un manifold se:
:: ogni lato e incidente soltanto ad una o due facce;
:: la faccia incidente al un vertice forma un ventaglioaperto o chiuso;
I L’orientamento di una faccia e un ciclo ordinato di verticiincidenti;
I L’orientamento di due facce adiacenti e compatibile se idue vertici del lato comune sono in ordine opposto;
I Un mesh manifold e orientabile se ogni coppia di facceadiacenti hanno un orientamento compatibile;
I Se ogni vertice ha un ventaglio chiuso, il relativo manifolde privo di bordo. Un lato si definisce di bordo se eincidente ad una sola faccia. Tali lati definiscono ilconfine del manifold;
I Il confine e l’unione di poligoni semplici. Se esisteconsiste in uno o piu loop di lati.
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Mesh PoligonaliUna mesh poligonale puo essere composta dadifferenti tipi di facce:
I Mesh triangolari;
I Mesh composte da quadrilateri(quad-mesh);
I Miste, triangolari-quadrangolari;
I Mesh composte da poligoni arbitrari;
Alcune utility:I Repository mesh (.off):
shape.cs.princeton.edu/benchmark/
I Lettore difile .off e .obj (costruzione della topologia):it.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A533838
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Esempi di mesh
I # vertici: 3051
I # facce: 6052
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Esempi di mesh
I # vertici: 2376
I # facce: 1998
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Definizioni
Esempi di mesh
I # vertici: 2904
I # facce: 5084
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Geometria
Geometria :: Normale
::Normale del triangolo
NT =(vj − vi )× (vk − vi )
||(vj − vi )× (vk − vi )||
::Normale del vertice(solitamente la media pesata delle normali deitriangoli vicini)
Nvi =
∑j∈TNbri wijNTj∑
j∈TNbriwij
:: Uniform: wij = 1;
:: Angle: wij = θij = Angle(Tj , i);
:: Area: wij = Area(Tj );
Metodi numerici per la grafica: Mesh data structures
Mesh poligonali
Geometria
Geometria :: Curvatura
Curvatura
Misura quanto velocemente variano le direzionidelle normali. Puo essere utilizzata perindividuare regioni con elevata curvaturacorrispondenti alla feature di una mesh.
Mesh triangolari
Esistono svariati metodi per calcolare lacurvatura discreta di una mesh.
I Curvatura media;I Curvatura gaussiana;I . . .
Per una trattazione piu approfondita:M. Botsch, Polygon Mesh Processing, CRCPress, 2010 (Cap. 3 - Differential geometry).
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Mesh poligonali e il calcolatore
Strutture dati
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Provenienza dei dati tridimensionali
I dati tridimensioni possono avere diverse sorgenti:
:: Input manuali;
:: Programmi per la generazione di mesh;
:: Modelli CAD;
:: Digitalizzatori e scanner laser;
:: Riconstruzioni da fotografie, . . .
:: . . .
I dati 3D sono richiesti per modellare la realta epermettono una grande quantita di applicazioni.
Organizzare e manipolare dati geometrici rimane unasfida e un vasto campo di ricerca.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Provenienza dei dati tridimensionali
I dati tridimensioni possono avere diverse sorgenti:
:: Input manuali;
:: Programmi per la generazione di mesh;
:: Modelli CAD;
:: Digitalizzatori e scanner laser;
:: Riconstruzioni da fotografie, . . .
:: . . .
I dati 3D sono richiesti per modellare la realta epermettono una grande quantita di applicazioni.
Organizzare e manipolare dati geometrici rimane unasfida e un vasto campo di ricerca.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Point clouds
Point Cloud
Un point cloud e un insieme di punti nello spazio nondotato di informazioni topologiche (niente lati netriangoli), proviente ad esempio da rilevazioni laser.
Effetturare il rendering un point cloud e piuttosto
semplice. E possibile infatti disegnare i vertici conOpenGL.
OpenGL (Open Graphics Library e una specifica chedefinisce una API per piu linguaggi e per piupiattaforme per scrivere applicazioni che produconocomputer grafica 2D e 3D.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Point clouds
Point Cloud
Un point cloud e un insieme di punti nello spazio nondotato di informazioni topologiche (niente lati netriangoli), proviente ad esempio da rilevazioni laser.
Trasformare un point cloud in una superfice mesh ealtresı un argomento molto complesso.
Point Cloud Library (PCL) - e una libreria open sourceper l’elaborazione di point cloud. Contiene algoritmiquali ad esempio:
:: feature estimation;
:: surface reconstruction;
:: model fitting ;
:: segmentation;
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Polygon soup
Polygon soup
La Polygon soup e una lista di poligoni in cui ognipoligono contiene la posizione dei suoi vertici.
Se il modello contiene soltanto triangoli e chiamatotriangle soup.
Il formato STereo Lithography (STL) e un esempio dipolygon soup.
Effettuare il rendering di un triangle soup e piuttostosemplice, basta semplicemente iterare sui vertici erichiedere ad OpenGL la visualizzazione.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Polygon soup
Polygon soup - Drawbacksfacet normal 0.00 0.00 1.00outer loopvertex 2.00 2.00 0.00vertex -1.00 1.00 0.00vertex 0.00 -1.00 0.00endloopendfacet
facet normal 0.00 0.00 1.00outer loopvertex 3.00 7.00 0.00vertex -8.00 5.00 0.00vertex 0.00 -2.00 0.00endloopendfacet
facet normal 0.00 0.00 1.00outer loopvertex 5.00 1.00 0.00vertex -1.00 6.00 0.00vertex 0.00 -8.00 0.00endloopendfacet
...
Main drawbacks
:: un vertici e solitamente ripetuto piu volte⇒ la cache per i vertici della GPU non ne traenessun beneficio;
:: Nessun informazioni riguardo alla uguagliaza travertici;
:: Nessun informazioni riguardo all’indice deltriangolo che contiene uno specifico vertice;
:: Nessun informazione riguardo all’adiacenza fratriangoli.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Polygon soup
Polygon soup - Soluzionifacet normal 0.00 0.00 1.00outer loopvertex 2.00 2.00 0.00vertex -1.00 1.00 0.00vertex 0.00 -1.00 0.00endloopendfacet
facet normal 0.00 0.00 1.00outer loopvertex 3.00 7.00 0.00vertex -8.00 5.00 0.00vertex 0.00 -2.00 0.00endloopendfacet
facet normal 0.00 0.00 1.00outer loopvertex 5.00 1.00 0.00vertex -1.00 6.00 0.00vertex 0.00 -8.00 0.00endloopendfacet
...
E possibile creare un insieme di facce conindicizzazione da una polygon soup:
:: identificando i vertici identici (entro una certatolleranza);
:: enumerare i vertici in modo univoco;
:: specificare la geometria utilizzando gli indici deivertici
⇒ insieme di facce con indicizzazione.
Wavefront OBJ e un formato che rispetta questa logica.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Polygon soup
Polygon soup - Soluzioni# cube.obj
v 0.0 0.0 0.0v 0.0 0.0 1.0v 0.0 1.0 0.0v 0.0 1.0 1.0v 1.0 0.0 0.0v 1.0 0.0 1.0v 1.0 1.0 0.0v 1.0 1.0 1.0
f 1//2 7//2 5//2f 1//2 3//2 7//2f 1//6 4//6 3//6f 1//6 2//6 4//6f 3//3 8//3 7//3f 3//3 4//3 8//3f 5//5 7//5 8//5f 5//5 8//5 6//5f 1//4 5//4 6//4f 1//4 6//4 2//4f 2//1 6//1 8//1f 2//1 8//1 4//1
E possibile creare un insieme di facce conindicizzazione da una polygon soup:
:: identificando i vertici identici (entro una certatolleranza);
:: enumerare i vertici in modo univoco;
:: specificare la geometria utilizzando gli indici deivertici
⇒ insieme di facce con indicizzazione.
Wavefront OBJ e un formato che rispetta questa logica.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Connettivita
Connettivita Polygons soups contengono poche informazioni circa lastruttura della mesh.
E necessario specificare la connettivita o topologia - lerelazioni che intercorrono tra vertici, lati e facce - perorganizzare e lavorare con le mesh.
Tipiche query sulle mesh possono essere:
:: accesso a vertici, lati e facce specifiche;
:: attraversare una faccia;
:: recuperare vertici o lati contenuti in una faccia;
:: recuperare tutte le facce contenenti uno specificolato o vertice;
:: recuperare tutti i vicini di una faccia, lato overtice;
:: attraversare una mesh (interpretando la meshcome se fosse un grafo orientato o meno);
Ci sono molti modi per organizzare una meshpoligonale.
⇒ risultano necessarie strutture di alto livello.
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Triangle based data structure
Triangle based data structure
Le strutture basate su triangoli consistono in liste ditriangoli Ti , i = 1 . . . con puntatori ai triangoliadiacenti.
Un triangolo [vi , vj , vk ] memorizza ulteriori tre campi,che consistono in tre puntatori ai triangolo adiacenti[ti , tj , tk ].
Convenzione comune:
il vicino ti corrisponde al triangolo adiacente opposto avi e quindi sul lato [vj , vk ].
Le query sulle mesh sono dirette, ad esempio:
:: getTriangleNodes(T )
:: getTriangleNeighbours(T )
:: getNodeNeighbours(T )
:: . . .
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Node based data structure
Node based data structure
node id : nodi vicininode #1 : n11, n12, ...node #2 : n11, n12, ...node #3 : n11, n12, ...node #4 : n11, n12, ...node #5 : n11, n12, ...
Ogni nodo memorizza la lista dei suoi vicini.
Vantaggio:
:: formato estremamente compatto.
Svantaggi:
:: estremamente difficile da manipolare;
:: non esiste il concetto di triangolo esplicito;
:: alcune query sono semplici (appuntogetNodeNeighbours() . . . ma altre sono moltocomplesse (ad esempio getTriangleNeighbours())
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Winged-edge
Winged-edge
Dato un lato della mesh `, i due triangoli T1, T2adiacenti su ` sono dette le sue wings (ali).
Supponendo che le facce siano orientate insenso orario, ad ogni lato corrispondono 8informazioni.
Consideriamo il lato b, abbiamo:
:: i 2 vertici X ,Y ;
:: le 2 facce incidenti 1, 2;
:: il lato precedente a e il lato successivo c,rispetto alla faccia 1;
:: il lato precedente e e il lato successivo d ,rispetto alla faccia 2;
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Winged-edge
Winged-edge
Dato un lato della mesh `, i due triangoli T1, T2adiacenti su ` sono dette le sue wings (ali).
Supponendo che le facce siano orientate insenso orario, ad ogni lato corrispondono 8informazioni.
Consideriamo il lato b, abbiamo:
:: i 2 vertici X ,Y ;
:: le 2 facce incidenti 1, 2;
:: il lato precedente a e il lato successivo c,rispetto alla faccia 1;
:: il lato precedente e e il lato successivo d ,rispetto alla faccia 2;
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Half-edge
Dato un lato evi vj della mesh che connette il vertice vi al verticevj , puo essere splittato in due half-edge orientati hevi vj e hevj vi .
Percio se tutte le facce sono orientate in senzo antiorario, permemorizzare la struttura della mesh abbiamo bisogno delleseguenti informazioni:
:: ogni vertice mantiene la referenza ad un half-edgeuscente (1);
:: ogni faccia memorizza la referenza a un half-edge che necompone il perimetro (2);
:: ogni half-edge mantiene la referenza a:
:: il vertice a cui punta (3);
:: la faccia a cui appartiene (4);
:: l’half-edge successivo (all’interno della faccia) (5);
:: l’half-edge opposto (6);
:: l’half-edge precedente (all’interno della faccia) (7);
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Half-edge
Dato un lato evi vj della mesh che connette il vertice vi al verticevj , puo essere splittato in due half-edge orientati hevi vj e hevj vi .
Percio se tutte le facce sono orientate in senzo antiorario, permemorizzare la struttura della mesh abbiamo bisogno delleseguenti informazioni:
:: ogni vertice mantiene la referenza ad un half-edgeuscente (1);
:: ogni faccia memorizza la referenza a un half-edge che necompone il perimetro (2);
:: ogni half-edge mantiene la referenza a:
:: il vertice a cui punta (3);
:: la faccia a cui appartiene (4);
:: l’half-edge successivo (all’interno della faccia) (5);
:: l’half-edge opposto (6);
:: l’half-edge precedente (all’interno della faccia) (7);
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Attraversamento vertici vicini
1) Partenza dal vertice
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Attraversamento vertici vicini
1) Partenza dal vertice
2) Half-edge uscente
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Attraversamento vertici vicini
1) Partenza dal vertice
2) Half-edge uscente
3) Half-edge opposto
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Attraversamento vertici vicini
1) Partenza dal vertice
2) Half-edge uscente
3) Half-edge opposto
4) Half-edge successivo
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Attraversamento vertici vicini
1) Partenza dal vertice
2) Half-edge uscente
3) Half-edge opposto
4) Half-edge successivo
5) Half-edge opposto
Metodi numerici per la grafica: Mesh data structures
Strutture dati
Half-edge
Attraversamento vertici vicini
1) Partenza dal vertice
2) Half-edge uscente
3) Half-edge opposto
4) Half-edge successivo
5) Half-edge opposto
6) Half-edge successivo
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Manipolazione di mesh
Algoritmi su mesh
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Consolidazione
Consolidazione
La connettivita (o topologia) descrive come itriangoli e i vertici si relazionano tra di loro.
:: quali triangoli condividono un datovertice;
:: quali triangoli sono adiacenti;
:: quali sono i vicini di un dato vertice;
:: . . .
La consolidazione e il processo per trovare eaggiustare la connettivita della mesh.
Algoritmi tipici:
A1) Iterano su tutte le facce, collezionano lefacce che condividono un lato (o unvertice);
A2) Per ogni lato (o vertice), connettono itriangoli che lo condividono;
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Consolidazione
Consolidazione
La connettivita (o topologia) descrive come itriangoli e i vertici si relazionano tra di loro.
:: quali triangoli condividono un datovertice;
:: quali triangoli sono adiacenti;
:: quali sono i vicini di un dato vertice;
:: . . .
La consolidazione e il processo per trovare eaggiustare la connettivita della mesh.
Esempio:
1) Per ogni vertice, creare la lista delle facceche lo contengono (alternativamente, perogni faccia, aggiungere il relativoidentificativo alla lista dei sui vertici);
2) Per ogni lista, connetti le facce checondividono due vertici;
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione
La maggior parte delle mesh nelle applicazionireali sono enormi (millioni di triangoli!).
⇒ tecniche si semplificazione risultanofondamentali.
Possibili tecniche di semplificazione:
:: Semplificazione statica: crea un livello didettaglio separato prima che il renderinginizi;
:: Semplificazione dinamica crea un livellodi dettaglio continuo;
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione
Sia la semplificazione dinamica che quellastatica sono solitamente implementateutilizzando algoritmi incrementali:
Rimuovere un vertice per volta e riparare il bucocreato dopo la rimozione
:: Semplificazione statica: rimuove un datonumero di vertici ad ogni livello didettaglio;
:: Semplificazione dinamica memorizza lasequenza di rimozione dei vertici;
Obbiettivo Rimuovere il massimo numero divertici affinche la mesh risultante e ancora unabuona appossimazione dell’originale.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione :: rimozione di un vertice
Obbiettivo
Rimovere un vertice p e riparare il buco creatosicon una corretta triangolazione.
Se k triangoli/lati condividevano p, ci sarannok − 1 triangoli e k − 3 lati nella mesh riparata.
Non ci sono molte scelte sul come triangolare ilbuco risultante.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione :: collassamento di un lato
Per effettuare l’elimazione di un vertice eautomaticamente riparare l’eventuale buco,possiamo scegliere un lato e lasciarlodegenerare in un vertice. Questa operazione econosciuta come collasamento di un lato.
L’operazione di collassamento di un latoprende due vertici vicini p e q e collassa il latotra di loro in un nuovo punto r.
Come risultato, due triangoli adiancenti al latoep,q diventano degeneri e sono rimossi dallamesh.
Come determinare la posizione del nuovo nodor?
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione :: collassamento di un half-edge
Per ridurre il numero di scelte, il collassamentodi un half-edge muove p verso q. Di nuovo duetriangoli diventano degenere e quindi rimossi.
Puo essere pensato come un caso speciale delcollassamento di un lato dove la nuovaposizione r = q.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione :: fold-over
Consideriamo il collassamento dell’half-edge pverso q.
Il collassamento puo portare ad un fold-overche pio rendere la mesh invalida (2D) ointrodurre artefatti (3D).
Individuare un fold-over in R2 e piuttostosemplice, ma individuarlo in R3 e difficile in abullet-proof fashion.
Una strategia consiste nell’investigare le normalidei triangoli:
Se un collassamento di half-edge produrratriangoli in cui la normale di triangoli adiacentidiffereriscoo troppo, allora il collassamento saraillegale.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione :: mantenere la topologia semplice
Consideriamo la rimozione di v0, lasciando unbuco di 4 lati.
Sarebbe corretto triangolare il bucoconnettendo v1 e v3.
Non dovremmo comunque utilizzarel’alternativa connettendo v2 a v4 in quanto v2 ev4 sono gia vicini e quindi otterremmo 4triangoli incidenti il lato ev2,v4 .
Connettere v2 a v4 potrebbe portare a un grafonon semplice (un grafo e semplice se nessunpaio di vertici appartiene a piu di un lato).
⇒ Non connettere due vertici che sono giaconnessi.
Tali situazioni tendono a diventare piu frequentivia via che si semplifica la mesh.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Semplificazione
Semplificazione :: criteri di rimozione
Approccio Greedy
Rimuovere i vertici di minor importanzasequenzialmente, basandosi su un certo criterio.
Il criterio potrebbe essere basato su:
:: Errore di appossimazione - la distanzatra la mesh precedente e quella nuova.
:: Densita dei vertici - anche se moltivertici sono necessari in regioni curve.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing
Obbiettivo
Cambiare la posizione dei vertici per ottenereuna mesh migliore eliminando il rumore.
Sfide
:: preservazione del volume e dei lineamenti;
:: smoothing scale;
:: indipendenza dalla topologia.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing su una curva
Un problema facile
Come smussare una curva?
Soluzione
Discretizzazione alle differenze divise dellaseconda derivata ≡ Operatore di Laplace inuna dimensione.
L(pi ) =1
2(pi+1 − pi ) +
1
2(pi−1 − pi )
Algoritmo
Ripeti per m iterazioni:
pi = pi + λL(pi )
Per quale λ?0 < λ < 1
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing Laplaciano su una mesh
Un problema facile
Come smussare una mesh?
Soluzione
Con la stessa tecnica di smoothing per le curve
Algoritmo
Ripeti per m iterazioni:
p(t+1)i = p
(t)i + λ∆p
(t)i
Cos’e ∆pi?
∆pi =1
Ni
∑j∈Ni
pj
− pi
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing Laplaciano :: Dipendenza dalla triangolazione
-
Il risultato dipende dalla dimensione della triangolazione.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing Laplaciano :: Dipendenza dalla triangolazione
-
Soluzione: cotangent weightsRef.: U. Pinkall, Computing discrete minimal surfaces and their conjugates, Experimental
Mathematics, 1993.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing Laplaciano :: Shrinkage
-
Ripetute iterazioni dello smoothing Laplaciano collassano la mesh.
Metodi numerici per la grafica: Mesh data structures
Algoritmi su mesh
Smoothing
Smoothing Laplaciano :: Shrinkage
-
Ref.: J. Vollmer, Improved Laplacian Smoothing of Noisy Surface Mesh, Eurographics ’99.
Metodi numerici per la grafica: Mesh data structures
OpenMesh e Visual Studio
OpenMesh tutorial
OpenMesh - Visual Studio e C++
Metodi numerici per la grafica: Mesh data structures
OpenMesh e Visual Studio
OpenMesh e Visual Studio
OpenMesh
OpenMesh e una generica ed efficiente strutturadati per la rappresentazione e la manipolazionedi mesh poligonali. OpenMesh e sviluppata dal
Computer Graphics Group, RWTH Aachen. Estata fondata dal German Ministry for Researchand Education.
Obbiettivi di OpenMesh:
:: Flessibilita - fornisce una base per varialgoritmi senza necessita di ulterioriadattamenti;
:: Efficienza - massimizza il tempo diefficienza mantenendo l’utilizzo dellamemoria al minimo possibile;
:: Facilita di utilizzo - la complessastruttura interna e resa disponibileattraverso una interfaccia di facileutilizzo.
Metodi numerici per la grafica: Mesh data structures
OpenMesh e Visual Studio
OpenMesh e Visual Studio
Visual Studio
Visual Studio e un ambiente di sviluppointegrato (Integrated development environmento IDE) sviluppato da Microsoft, che supportaattualmente diversi tipi di linguaggio, quali C,C++, C#, F#, Visual Basic .Net, Html eJavaScript, e che permette la realizzazione diapplicazioni, siti web, applicazioni web e serviziweb.
Metodi numerici per la grafica: Mesh data structures
OpenMesh e Visual Studio
www.openmesh.org
-
1): Download OpenMesh → installazione.
Metodi numerici per la grafica: Mesh data structures
OpenMesh e Visual Studio
www.openmesh.org
-
2): Nuovo progetto → Proprieta → Impostare i path di OpenMesh
Metodi numerici per la grafica: Mesh data structures
OpenMesh e Visual Studio
www.openmesh.org
-
2): Nuovo progetto → Proprieta → Impostare i path di OpenMesh
Metodi numerici per la grafica: Mesh data structures
Pointers
Pointers
OpenMeshwww.openmesh.org
Visual Studiowww.visualstudio.com/it/vs/community
Mesh Smoothing (1)J. Vollmer, Improved Laplacian smoothing of noisy surface mesh, Eurographics ’99.
Mesh Smoothing (2)Y. Ohtake, Mesh regularization and adaptive smoothing, Computer Aided Design, 2001.
Mesh Simplification - Decimation (1)H. Hoppe, Progressive Meshes, Preoceeding SIGGRAPH, 1996.
Mesh Simplification - Decimation (2)G. Pengdong, Adaptive mesh simplification using vertex clustering with topology preserving,International Conference on Computer Science and Software Engineering, 2008.
Feature detection (1)A. Hubeli, Multiresolution feature extraction for unstructured meshes, Proceedings of theconference on Visualization, 2001.