Title: Computer Graphics
1Computer Graphics
Lezione 13 meshes
Università dellInsubria Facoltà di Scienze MFN
di Varese Corso di Laurea in Informatica Anno
Accademico 2006/07
2Mesh triangolare (o mesh simpliciale)
- Un insieme di triangoli adiacenti
3Altre 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)
4Caratteristiche 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
5Caratteristiche topologiche di una mesh
- Chiusa o aperta
- se chiusa, ogni edge è condiviso proprio due
faccie - se aperta, alcuni edge sono di bordo
6Caratteristiche 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
B
C
senso opposto, edge coerente
7Caratteristiche topologiche di una mesh
- Orientabile, non orientabile
- esempi di mesh non orientabili
- mesh non two-manifold
- e...
8Come 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
9Come 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
10E 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...
11Formati 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
- 3DS - 3D Studio Max file 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
12Esempio 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
13Esempio di file format formato PLY
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_head
er
14Esempio di file format formato OFF
LetteraL.off
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
OFF12 10 400 0 03 0 03 1 01 1 01 5 00 5
00 0 13 0 13 1 11 1 1
15Mesh 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)
16Mesh 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
17Mesh strutture per la navigazione
- Esempiostruttura 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
18Mesh 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
19Mesh 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") - ...
20Task più difficili
- Misure di distanza
- Date due mesh A e B, calcolare la loro "distanza"
- Es. la metrica Hausdorff di distanza fra mesh
- Calcolare la distanza
- in totale
- punto per punto
21Mesh task più difficili
- Stripification
- Parametrizzazione
- Semplificazione automatica
- e precalcolo di livelli di dettaglio
- Detail recovery
- ...
22Task più difficili
- Stripification
- suddividere i triangoli in triangle strips
- più lunghe possibile
- (perché?)
23Task 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
24Task più difficili
- Semplificazione automatica
- parametri
- un errore massimo
- o un numero di facce obiettivo
automaticamente
mesh originale 500K triangoli
mesh semplificata 2K triangles
25Semplificazione automatica
p e r f o r m a n c e
q u a l i t y
26Semplificazione 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
27Semplificazione automatica
- Molte tecniche diverse
- Errore massimo introdotto
- misurato e/o limitato
- oppure no
- Topologia
- mantenuta
- oppure no
- Streaming
- Possibile
- Oppure no
- ...
28Semplificazione 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
29Semplificazione 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
30Semplificazione 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)
31Detail preservation(o texture for geometry)
- Idea
- semplificare una mesh
- sintetizzare una tessitura
- per ripristinare il dettaglio perso durante la
semplificazione
32 500mila triangoli
semplificazioneautomatica
2mila triangoli
33simplified 2K triangles
originale 500K triangles