330 likes | 418 Views
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.
E N D
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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