Sistemi Multimediali II
Lezione 8:
Università dell’Insubria
Facoltà di Scienze MFN di Varese
Corso di Laurea in Informatica
Anno Accademico 2004/05
Marco Tarini
meshes
Mesh triangolare (o mesh simpliciale)
• Una mesh è un insieme di triangoli adiacenti
facce
vertici
spigoli
(o edges)
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 2/40
Caratteristiche topologiche di una mesh
• Two Manifold ("varietà due") o no
– se si ogni edge è condiviso da al max due faccie
• two manifold = bene
• non two manifold = male
• molti algoritmi su mesh richiedono che la mesh sia twomanifold
NO
SI
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 3/40
Caratteristiche topologiche di una mesh
• Chiusa o aperta
– se chiusa, ogni edge è condiviso proprio due faccie
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 4/40
Caratteristiche topologiche di una mesh
• Orientabile, non orientabile
– è possibile assegnare un orientamento ad ogni
faccia coerentemente?
– orientabile = normali coerenti!
1
3
2
3
1
2
senso opposto, edge coerente
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 5/40
Come definisco una mesh?
• Una mesh è un insieme di triangoli adiacenti
• Come la definisco?
• Modo diretto:
– un vettore di triangoli
– e per ogni triangolo tre vertici
– e per ogni vertice tre coordinate
• Piuttosto poco efficiente
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 6/40
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
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 7/40
E gli attributi?
• Posso definirli:
– per vertice
• scrivo un attributo dopo ogni vertice
– per faccia
• scrivo un attributo dopo ogni faccia
– per wedge (vertice di faccia)
• scrivo tre attributi dopo ogni faccia
• Attributi più comuni:
– colore
– coordinate texture
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 8/40
Esempio: formato PLY
• E' un formato digitale per mesh
• 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 ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 9/40
Esempio: 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 ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 10/40
Esempio: formato OFF
• Esempio:
# facce # edges
# vertici
x,y,z
2ndo
vert
OFF
12 10 40
0 0 0
3 0 0
3 1 0
1 1 0
1 5 0
0 5 0
0 0 1
3 0 1
3 1 1
1 1 1
indice 0
indice 1
indice 2
indice 3
LetteraL.ply
1
0
4
4
4
4
4
4
4
4
4
4
5
5
3
5
6
6
0
1
2
3
4
5
1
1
2
4
7
9
1
2
3
4
5
0
1 0
3 0
8 9
10 11
7 6
8 7
9 8
10 9
11 10
6 11
prima faccia:
4 vertici:
con indici
3, 2, 1 e 0
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 11/40
Mesh: task comuni
• Data una mesh:
– magari appena caricata
• trovare il bounding box
– utile ad esempio
per translare e scalare
l'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 ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 12/40
Mesh: task comuni
• Data una mesh:
– magari appena caricata
• trovare le normali per vertice
– come si fa?
1 azzerare tutte le norm x vertice
2 iterare ogni faccia:
trovare normale
normalizzare normale
aggiungere normale al vertice
3 iterare ogni vertice:
normalizzarlo
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 13/40
Task più difficili
•
•
•
•
•
•
Bounding sphere
Stripification
Parametrizzazione
Simplificazione automatica
Detail recovery
...
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 14/40
Task più difficili
• Stripification
– suddividere i triangoli in triangle strips
• più lunghe possibile
– perche?
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 15/40
Task più difficili
• Parametrizzazione
– assegnare una coppia di coordinate texutre
ad ogni vertice
– 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 ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 16/40
Task più difficili
• Semplificazione automatica
• parametri:
– un errore massimo
– o un numero di facce obiettivo
automaticamente
mesh originale
mesh semplificata
M a r c o T a r i n i ‧500K
S i s t etriangoli
m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s2K
i t àtriangles
d e l l ’ I n s u b r i a - 17/40
Semplificazione automatica
performance
quality
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 18/40
Semplificazione automatica
Una piramide di Livelli di Dettaglio
LOD 1
usare quando
visto da vicino
LOD 2
LOD 3
LOD 4
usare quando
visto da lontano
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 19/40
Detail preservation
(o texture for geometry)
• Idea:
– sintetizzare una tessitura
– per ripristinare il dettaglio perso durante la
semplificazione
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 20/40
500mila
triangoli
detail
recover
TESSITURA
fatta apposta
semplificazione
automatica
2mila
triangoli
rendering
sempre duemila triangoli, ma con texture mapping
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 21/40
originale
semplificato
simplified
ma con tessitura
500K triangles
2K triangles
M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 22/40
Scarica

ppt