Metodi numerici per la gra ca: Mesh data structuresweb.math.unifi.it/users/sestini/mng_2017.pdf ·...

62
Metodi numerici per la grafica: Mesh data structures Metodi numerici per la grafica: Mesh data structures Duccio Mugnaini [email protected] Universit` a degli Studi dell’Insubria

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.