1 / 50

Modelli a poligoni

Modelli a poligoni. Roberto Pirrone. Sommario. Struttura di una mesh di poligoni Struttura dati Formati di file che specificano mesh di poligoni Generazione di mesh poligonali da modelli e dati Laser Modelli analitici Modelli sweep Generazione procedurale di mesh

awen
Télécharger la présentation

Modelli a poligoni

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modelli a poligoni Roberto Pirrone

  2. Sommario • Struttura di una mesh di poligoni • Struttura dati • Formati di file che specificano mesh di poligoni • Generazione di mesh poligonali da modelli e dati • Laser • Modelli analitici • Modelli sweep • Generazione procedurale di mesh • Superfici parametriche • Volumi di dati • Level Of Detail (LOD)

  3. Mesh di poligoni • Le mesh di poligoni costituiscono una rappresentazione delle superfici di un modello per mezzo di una tassellazione di poligoni piani che approssimano la superficie stessa “pezzo a pezzo”. • Poligoni quadrangolari o meglio triangolari (è assicurata la planarità) • I vertici dei poligoni sono punti effettivi della superficie del modello • Ottima rappresentazione per la macchina, ma poco orientata all’utente. • Tutti gli algoritmi ed i dispositivi hwdi rendering assumono di trattare con insiemi di poligoni proiettati ortograficamente sullo schermo.

  4. Struttura di una mesh di poligoni Da un punto di vista concettuale un oggetto viene decomposto nelle sue superfici che, campionate, sono approssimate a poligoni. I poligoni si intendono costituiti da lati che raccordano coppie di vertici.

  5. Struttura di una mesh di poligoni

  6. Struttura dati una mesh In genere si usano liste circolari gerarchiche per consentire l’accesso diretto ai singoli vertici o lati.

  7. Struttura dati una mesh • Ad ogni vertice/poligono sono associate informazioni utili al processo di modellazione e rendering • Coordinate geometriche • Componenti del vettore normale (ovvero della normale al piano del poligono insieme con i coefficienti dell’equazione del piano) • Coordinate del vertice nello spazio delle texture (texturecoordinates) • Componenti cromatiche rispetto ai vari tipi di riflessione della luce (autoemissiva, ambiente, diffusa o speculare) descrizione del materiale

  8. Formati di file per mesh di poligoni • Esistono diversi formati di file che consentono di gestire oggetti grafici in forma di mesh di poligoni secondo le informazioni già viste. • Formati proprietari • 3DS – 3D Studio Max • DXF – AutoCAD • IV – Open Inventor • Formati aperti • OBJ – Wavefront Technologies • PLY – Stanford University

  9. File Wavefront OBJ

  10. File Wavefront OBJ • Definizione facce: • f v1 v2 v3 v4 ... • f v1/vt1 v2/vt2 v3/vt3 ... • f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ... • f v1//vn1 v2//vn2 v3//vn3 ... • Riferimento a materiali • mtllib [external .mtl file name] ... • Shading • s 1 (ovvero s off per disabilitare)

  11. File Wavefront OBJ Riferimento a oggetti e/o gruppi di poligoni Tipologie di illuminamento

  12. File Wavefront OBJ Descrizione di materiali (eventualmente con texturemaps)

  13. File Stanford PLY • Il formato PLY è stato definito da Greg Turk • La struttura base prevede • Header • Vertex list • Face list • Altri elementi (ad es. materiali) • Il formato usa i tipi del C per definire i dati • Il file può essere ascii o binario littleendian o big endian

  14. File Stanford PLY • Header ply format ascii 1.0 commentplyis the magicnumber comment format can be alsobinary_little_endiancomment or binary_big_endian in place of ascii element property property … element property … end_header

  15. File Stanford PLY • Header ply format ascii 1.0 commentplyis the magicnumber comment format can be alsobinary_little_endiancomment or binary_big_endian in place of ascii element property property … element property … end_header

  16. File Stanford PLY

  17. File Stanford PLY • Definizione di un materiale • Per aggiungere il materiale ad ogni vertice aggiungere la seguente linea alla fine della definizione dell’elemento vertex: • propertymaterial_indexint

  18. Generazione di mesh poligonali da dati laser • L’approccio più comune è l’algoritmo di skinning • I dati acquisiti giacciono su piani paralleli di scansione • Si crea una striscia di triangoli connettendo a zig-zag i punti contigui che giacciono su due piani adiacenti

  19. Triangolazione di Delaunay • E’ l’insieme di triangoli che si ottiene circuitando un insieme di punti che definiscono una tassellazione di Voronoi che chiameremo punti seme • In una regione di Voronoi è costituita da tutti i punti del piano che sono i “più vicini” al punto di seme della regione stessa rispetto a qualunque altro punto di seme

  20. Triangolazione di Delaunay • I confini della regione sono gli assi dei segmenti che congiungono i semi • Tali segmenti sono i lati dei triangoli cercati • La triangolazione di Delaunay rappresenta il grafo duale della tassellazione di Voronoi

  21. Triangolazione di Delaunay • Una triangolazione di DelaunayDT(P) di un insieme di punti P∈Rnsi è tale per cui non ci sono punti in P che siano interni all’ipersfera circoscritta a qualunque simplesso in DT(P) • In due dimensioni circonferenze e triangoli • In tre dimensioni sfere e tetraedri

  22. Flipalgorithm • Criterio per la verifica che una triangolazione sia una DT • La somma degli angoli opposti ad un lato comune di due triangoli adiacenti deve essere <180° • Nel caso non sia così si esegue il flipdel lato comune • Si elimina il lato comune e si sostituisce con quello che unisce gli altri due vertici; si può provare che si ottiene una DT

  23. Algoritmi per la Triangolazione di Delaunay di nuvole di punti mediante chiusure convesse • Algoritmo Incrementale • Ripeti per ogni punto della nuvola • Aggiungi il punto alla chiusura convessa esistente • Se il punto è interno all’attuale chiusura convessa • non far nulla • Altrimenti • Cancella tutti i triangoli che il punto “può vedere” • Crea la piramide ottenuta connettendo il nuovo punto ai punti rimasti dei triangoli cancellati nella vecchia chiusura convessa • Per stabilire se un punto è interno o esterno a un triangolo ovvero se è visibile da questo si usa il calcolo della normale positiva al triangolo circuitandone i vertici in senso antiorario.

  24. Algoritmi per la Triangolazione di Delaunay di nuvole di punti mediante chiusure convesse • Algoritmo divide-and-conquer • Calcola ricorsivamente la chiusura convessa delle due metà della nuvola • Esegui la circuitazione delle due chiusure convesse per trovare la tangente comune inferiore o superiore (segmento che connette due vertici nelle chiusure convesse e totalmente esterno ad esse) • Trova il terzo vertice adiacente ad uno dei due estremi della tangente e chiudi un triangolo • Ripeti secondo uno schema di skinning per chiudere tutto il cilindro esterno che raccorda le due chiusure convesse ottenendo la chiusura convessa finale

  25. Generazione di mesh poligonali da funzioni analitiche • Scansione latitudine-longitudine • Si generano quadrangoli che poi vengono trasformati in triangoli suddividendoli attraverso le diagonali • Problemi • non corrispondenza di archi di curva uguali a passi angolari uguali in lat-long • In caso di forme soggette a deformazioni globali (flessione, assottigliamento, torsione) la tassellazionelat-long diventa onerosa e può dar luogo a una cattiva poligonizzazione nei punti ad elevata curvatura

  26. Generazione di mesh poligonali da funzioni analitiche

  27. Generazione di mesh poligonali da funzioni analitiche

  28. Generazione di mesh poligonali da funzioni analitiche Parametrizzazione uniforme: l’insieme dei punti campionati si ottiene proiettando i punti di campionamento di una sfera, i quali sono uniformemente distribuiti sia in termini angolari sia in terminidi spaziatura lungo la superficie, attraverso un opportuno fattore di scala variabile punto a punto e che deve essere stimato in ogni punto.

  29. Generazione di mesh poligonali da modelli sweep E’ possibile ricondurre lo sweep ad una operazione di estrusione di una sezione che viene deformata ad ogni passo secondo la legge imposta dal profilo desiderato Ad ogni passo di estrusione viene generata un’approssimazione lineare del profilo da cui si ricavano i poligoni

  30. Generazione di mesh poligonali da modelli sweep • Una generalizzazione del metodo precedente è quella di far scorrere una sezione trasversale appoggiandola ad una coppia di “curve binario” che, con la loro distanza variabile, ne definiscono ad ogni passo la dimensione di scala. • Affine transformationsurface • Ad ogni passo lungo z (direzione di estrusione)la sezione trasversale definita sul piano (x,y) subisce una trasformazione affine che la deforma. • Non c’è una curva direttrice, ma i parametri di trasformazione possono essere controllati da curve parametriche. • La natura affine della trasformazione consente sempre l’approssimazione del profilo superficiale mediante poligoni piani.

  31. Generazione di mesh poligonali da modelli sweep Problemi di approssimazioneplanare se sigeneralizza ad unaqualunquecurvadirettrice Problemi di orientamento locale dellasezionetrasversale Problemi di auto-intersezionedellasezionetrasversale

  32. Generazione procedurale di mesh poligonali Fractalterrain: generazione di modelli di rilievi del suolo usando la geometria frattale cioè l’autosimilarità di una forma con sé stessa a diverse scale di osservazione. Il modello a poligoni originale viene decomposto iterativamente per bisezione dei lati. Ad ogni nuovo punto generato si aggiunge una perturbazione statistica della quota originale lungo la normale al lato.

  33. Generazione di mesh poligonali da superfici parametriche Suddivisione ricorsiva delle patch in porzioni più piccole fino a soddisfare un criterio di “planarità” per il quale l’approssimazione poligonale della patch risulta accettabile.

  34. Generazione di mesh poligonali da superfici parametriche Suddivisione uniforme o non uniforme per inseguire curvature locali

  35. Generazione di mesh poligonali da superfici parametriche La suddivisione non uniforme può creare artefatti dovuti allo “spezzarsi” della mesh in corrispondenza di poligoni con risoluzione diversa. Gli eventuali “buchi” andranno circuitati per generare nuovi poligoni.

  36. Generazione di mesh poligonali da superfici parametriche La suddivisione delle patch si riconduce ad una approssimazione delle curve a u e v costante mediante poligonali aperte.

  37. Generazione di mesh poligonali da superfici parametriche R3=Q(0.5): la strutturadeinuovipunti di controllosiottieneapplicando L’algoritmo di De Casteljau

  38. Generazione di mesh poligonali da superfici parametriche Criterio di planarità: minimizzare d1 e d2

  39. Estrazione di iso-superfici (marchingcubes) • Lorenson e Cline (1987) • Questo tipo di approccio è utilizzato soprattutto per visualizzazione o per costruire delle realtà virtuali di campi operatori e non per diagnostica. • Si tratta di determinare come una iso-superficie f(i,j,k)=c, rappresentata mediante poligoni, attraversa il singolo voxel.

  40. Marching cubes (2) • Ogni cubo è costruito connettendo otto pixel di due slice contigue. • Per cui si conosce il valore di f(i,j,k) ad ogni vertice del cubo.

  41. Marching cubes (3) • Ci sono 256 (28) possibilità di attraversamento • 8 vertici che possono essere dentro (1) o fuori (0) dalla superficie • Mediante considerazioni di simmetria, le possibilità di attraversamento si riducono a 14 più il caso nullo con tutti i vertici esterni. • Ad ogni vertice di ogni voxel è assegnato un valore in termini dell’informazione rappresentata dal volume: la iso-superficie rappresenta tutti i punti caratterizzati da un unico valore. • L’algoritmo “marcia” da un voxel (cubo) all’altro e: • Individua la modalità di attraversamento (vertici del voxel interni ed esterni alla superficie) • Calcola l’effettiva posizione dei poligoni nel voxel per mezzo di una interpolazione lineare sugli edge intersecati.

  42. Marchingcubes (4) Indice ad 8 bit cheidentifica la tipologia di attraversamento e puntaallatabelladegli edge numerati come in figura

  43. Marching cubes (5) • Calcolodellenormaliaiverticideitriangoli • Le normaliallasuperficiesonoesprimibili in termini del gradienteGfperché per f(i,j,k)=c si ha cheGf=0 • Allorasicalcolanoigradienti con le differenze finite ad ognivertice del cubo e poi siinterpolanolineaementelungogli edge per trovarneilvaloreall’intersezione con f(i,j,k)=c.

  44. Marching cubes (6) • Tracciadell’algoritmo • Carica 4 slice in memoria • Calcola un cubo da due slice adiacenti • Comparaivalori di f(i,j,k) ad ognivertice con f (i,j,k)=c (luogogeometricodellaiso-superficie) e calcola un indice ad 8 bit cheindividua la modalità di attraversamento • Usal’indice per entrare in unatabelladegli edge al fine di determinaregli edge effettivamenteintersecati • Interpolalinearmenteilvalore di f lungogli edge intersecati per trovare le effettiveintersezionicioèiverticideitriangoli di output • Determina le normaliaivertici a partiredaivalori di quelleneivertici del cubochevengono interpolate linearmentelungogli edge • Dai come output itriangoligeneratidall’attraversamento del cubo con le loronormaliaivertici.

  45. Esempi di elaborazioni di iso-superfici

  46. Esempi di elaborazioni di iso-superfici

  47. Esempi di elaborazioni di iso-superfici

  48. LOD – progressive meshrefinement

  49. LOD – progressive meshrefinement • Criteri di collassamento • Soglia • Minimizzazione di funzionale energia

  50. LOD – progressive meshrefinement

More Related