1 / 33

Computer Graphics

Lezione 13: meshes. Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 200 6 /0 7. Computer Graphics. Marco Tarini. Mesh triangolare (o mesh simpliciale). facce. vertici. spigoli (o edges ). Un insieme di triangoli adiacenti.

nyla
Download Presentation

Computer Graphics

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. Lezione 13: meshes Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Computer Graphics Marco Tarini

  2. Mesh triangolare (o mesh simpliciale) facce vertici spigoli (o edges) • Un insieme di triangoli adiacenti M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  3. Altre mesh • Mesh bidimensionali • Mesh di triangoli (o tri-mesh, o simpliciali) • Mesh di quadrilateri (o quad-mesh) • Mesh miste (quad e tri) • Spesso, mesh prevalemtemente di quads • Mesh di poligoni • Mesh volumetriche • Mesh tetraedrali (o simpliciali 3D) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  4. Caratteristiche topologiche di una mesh • Two Manifold ("varietà due") oppure no • in generale: two-manifold = localmente è una superficie • per le mesh: two-manifold = ogni edge è condiviso da al max due faccie • two manifold = bene • non two manifold = male • (molti algoritmi su mesh necessitano che sia two-manifold) NO SI M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  5. Caratteristiche topologiche di una mesh • Chiusa o aperta • se chiusa, ogni edge è condivisoproprio due faccie • se aperta, alcuni edge sono di bordo M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  6. Caratteristiche topologiche di una mesh • Orientabile, non orientabile • è possibile assegnare un orientamento ad ogni faccia coerentemente? • orientabile = normali coerenti! A 1 1 3 D 2 3 2 C B senso opposto, edge coerente M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  7. Caratteristiche topologiche di una mesh Nastro di Moebius (non orientabile, aperta) Bottiglia di Klein (non orientabile, chiusa) • Orientabile, non orientabile • esempi di mesh non orientabili: • mesh non two-manifold • e... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  8. Come definisco una mesh? • Una mesh è un insieme di triangoli adiacenti • Strutture dati? • Modo diretto: • un vettore di triangoli • e per ogni triangolo tre vertici • e per ogni vertice tre coordinate • Poco efficiente • replicazione dati • oneroso fare updates M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  9. Come definisco una mesh? • Modo indexed • Lista ordinata di vertici • per ogni vertice la posizione • Lista ordinata di facce • per ogni faccia, 3 indici di vertici • Se serve: lista ordinata di edges • per ogni edge, 2 indici ai vertici M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  10. E gli attributi? • Tipicamente definiti: • per vertice • un attributo nella struttura di ogni vertice • per faccia • un attributo nella struttura di ogni faccia • per wedge (vertice di faccia) • tre attributi nella struttura di ogni faccia (caso più generico!) • per edge (raro) • Attributi più comuni: • colore • coordinate texture • normali... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  11. Formati files per mesh (una Torre di Babele!) • SLDPTR – SolidWork "part" • WINGS – Wings3D object • NFF - Used by Sense8's WorldToolKit • OBJ - Wavefront Object Files • OFF - A general 3D mesh Object File Format • OOGL - Object Oriented Graphics Library • PLG - Used by REND386/AVRIL • POV - Persistence of Vision ray-tracer • QD3D - Apple's QuickDraw 3D Metafile format • TDDD - for Imagine & Turbo Silver ray-tracers • NFF & ENFF - (Extended) Neutral File Format • VIZ - Used by Division's dVS/dVISE • VRML - Virtual Reality Modeling Language • VRML97- ISO Specification di VRML • X3D – successore di VRML • PLY – Used by Cyberware • DICOM – Dalla casa omonima • Renderman – per l'omonimo visualizzatore • RWX – RenderWare Object • Z3D – ZModeler File format • etc, etc, etc... • 3DS- 3D Studio Maxfile format • MA, MB – Maya file format • 3DX – Rinoceros file format • BLEND – Blender file format • DAE – Collada file format • OBJ –Another file format for 3D objects • X – Direct X object • BYU - Movie BYU file format • DEM - Digital Elevation Models • DXF – (exchange format used by Autodesk's AutoCAD) • FIG - Used by REND386/AVRIL • FLT - MulitGen Inc.'s OpenFlight format • HDF - Hierarchical Data Format • IGES - Initial Graphics Exchange Specification • IV - Open Inventor File Format Info • LWO, LWB & LWS - Lightwave 3D file formats • MAZ - Used by Division's dVS/dVISE • MGF - Materials and Geometry Format • MSDL - Manchester Scene Description Language • 3DML – by Flatland inc. • C4D – Cinema 4D file format M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  12. Esempio di file format : formato PLY • E' un formato digitale per mesh superficiali • Puo' essere in binario, o in ASCII (testo) • binario: più compatto e veloce da leggere • ascii: umanamente leggibile con un editore di testo • In ogni caso, comincia con un header in ASCII M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  13. Esempio di file format : formato PLY • Esempio: cubo.ply ply format ascii 1.0 comment proprio un cubetto element vertex 8 property float x property float y property float z element face 12 property list uchar int vertex_indices end_header M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  14. Esempio di file format : formato OFF # facce # edges # vertici prima faccia: 4 vertici: con indici 3,2, 1 e 0 indice 0 x,y,z 2ndo vert indice 1 indice 2 indice 3 • Esempio: LetteraL.off OFF12 10 400 0 03 0 03 1 01 1 01 5 00 5 00 0 13 0 13 1 11 1 1 1 5 10 5 14 3 2 1 04 5 4 3 04 6 7 8 94 6 9 10 114 0 1 7 64 1 2 8 74 2 3 9 84 3 4 10 94 4 5 11 104 5 0 6 11 M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  15. Mesh: task comuni • Data una mesh: • magari appena caricata • trovare il AABB(axis aligned bounding box) • utile ad esempioper translare e scalarel'oggetto opportunamente • come si fa? • (si itera sui vertici: trovare il max e il min di tutte le x, le y e le z) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  16. Mesh: strutture per la navigazione • Navigazione ("traversal") di mesh • Strutture dati apposite • puntatori (o indici) da ogni elemento ad ogni elemento adiacente o incidente • efficienza in tempo contro efficienza in spazio Esempi: struttura FV: puntatori da ogni faccia ai vertici incidenti struttura FF: puntatori da ogni faccia alle facce adiacenti struttura EF: da ogni edge alle due faccie adiacenti F V E M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  17. Mesh: strutture per la navigazione • Esempio:struttura VF: • per ogni vertice, la lista delle facci incidenti • (lunghezza variabile! Poco efficiente! Come si fa?) Altre strutture di navigazione utili (oltre a F,V,E): W: Wedge: (angolo di faccia) H: Half-Wedge: ("mezzo" angolo di faccia) (molto potente) (operazioni...) F V E M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  18. Mesh: task comuni • Data una mesh: • magari appena caricata • trovare le normali per faccia • trovare le normali per vertice • come si fa? • che struttura serve? • (FV? VF?) • BASTA LA FV! • 1 azzerare tutte le norm x vertice • 2 iterare su ogni faccia: • - trovare normale x faccia • (normalizzata) • - aggiungerla a normale dei • tre vertici incidenti (FV) • 3 iterare su ogni vertice: • normalizzare normale x vertice M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  19. Mesh: task più difficili • Bounding sphere • Calcolo di caratteristiche • Geometriche (curvatura per vertice, curve geodesiche...) • Topologiche (chiusura, genus, edge di bordo...) • Detection e chiusura buchi • Date due mesh, calcolare la "distanza" • in totale • punto per punto • Rimozione rumore (geometrico, topologico) • o enhancing del segnale ad alta frequenza... • un pò come come image processing(infatti si parla di "geometry processing") • ... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  20. Task più difficili • Misure di distanza • Date due mesh A e B, calcolare la loro "distanza" • Es. la metrica Hausdorffdi distanza fra mesh • Calcolare la distanza: • in totale • punto per punto M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  21. Mesh: task più difficili • Stripification • Parametrizzazione • Semplificazione automatica • e precalcolo di livelli di dettaglio • Detail recovery • ... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  22. Task più difficili • Stripification • suddividere i triangoli in triangle strips • più lunghe possibile • (perché?) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  23. Task più difficili • Parametrizzazione • assegnare una coppia di coordinate texutread ogni wedge • ci sono seams • replicare i vertici • memorizzale le text coord per wedge v u M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  24. Task più difficili • Semplificazione automatica • parametri: • un errore massimo • o un numero di facce obiettivo automaticamente mesh originale 500K triangoli mesh semplificata 2K triangles M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  25. Semplificazione automatica p e r f o r m a n c e q u a l i t y M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  26. Semplificazione automatica Una piramide di Livelli di Dettaglio LOD 2 LOD 3 LOD 4 LOD 1 usare quando visto da lontano usare quando visto da vicino M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  27. Semplificazione automatica • Molte tecniche diverse • Errore massimo introdotto: • misurato e/o limitato • oppure no • Topologia: • mantenuta • oppure no • Streaming • Possibile • Oppure no • ... M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  28. Semplificazione automatica • Strategie completamente diverse • Approcci iterativi • repeat • compi l'azione di semplificazioneatomica meno costosa (in termini di errore aggiunto) • aggiorna costi • until (obiettivo raggiunto) • es: numero faccie,errore edge collapse M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  29. Semplificazione automatica • Strategie completamente diverse • Vertex clustering: • dividi i vertici originali in una griglia regolare • collassa in un solo vertice tutti i vertici nella stessa casella • togli i triangoli che hanno solo 1 o 2 vertici diversi • Approssimazione dipende da dimensione griglia M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  30. Semplificazione automatica • Strategie completamente diverse • Fitting di piani • sostituire molte facce con poligoni planari quando i loro vertici sono quasi coplanari Cohen-Steiner, Alliez, Desbrun(SIGGR04) M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  31. Detail preservation(o texture for geometry) • Idea: • semplificare una mesh • sintetizzare una tessitura • per ripristinare il dettaglio perso durante la semplificazione M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  32. TESSITURA fatta apposta (es. BumpMap) detail recover rendering sempre duemila triangoli, ma con texture mapping 500mila triangoli semplificazioneautomatica 2mila triangoli M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

  33. semplificato ma con tessitura 2K triangles originale 500K triangles simplified 2K triangles M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 0 6 / 0 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

More Related