Computer Graphics

33
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 13: meshes

description

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. - PowerPoint PPT Presentation

Transcript of Computer Graphics

Page 1: Computer Graphics

Computer Graphics

Marco Tarini

Università dell’Insubria

Facoltà di Scienze MFN di Varese

Corso di Laurea in Informatica

Anno Accademico 2006/07

Lezione 13: meshes

Page 2: Computer Graphics

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 triangolare (o mesh simpliciale)

• Un insieme di triangoli adiacenti

faccevertici

spigoli(o edges)

Page 3: Computer Graphics

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)

Page 4: Computer Graphics

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

Page 5: Computer Graphics

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 è condiviso proprio due

faccie– se aperta, alcuni edge sono di bordo

Page 6: Computer Graphics

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!

1

23

1

23

senso opposto, edge coerente

A

BC

D

Page 7: Computer Graphics

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– esempi di mesh non orientabili:

• mesh non two-manifold• e...

Nastro di Moebius(non orientabile, aperta)

Bottiglia di Klein(non orientabile, chiusa)

Page 8: Computer Graphics

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

Page 9: Computer Graphics

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

Page 10: Computer Graphics

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...

Page 11: Computer Graphics

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!)

– 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

– 3DML – by Flatland inc.

– C4D – Cinema 4D file format

–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...

Page 12: Computer Graphics

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

Page 13: Computer Graphics

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

cubo.ply

Esempio di file format : formato PLY

• Esempio: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

Page 14: Computer Graphics

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

LetteraL.off

Esempio di file format : formato OFF

• Esempio:

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

# vertici

# facce # edges

x,y,z2ndo vert

prima faccia:4 vertici:con indici3, 2, 1 e 0

indice 0

indice 3

indice 2indice 1

Page 15: Computer Graphics

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 esempio

per 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)

Page 16: Computer Graphics

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

F

V E

Esempi:

struttura FV: puntatori da ogni faccia ai vertici incidenti

struttura FF: puntatori da ogni facciaalle facce adiacenti

struttura EF: da ogni edge alle due faccie adiacenti

Page 17: Computer Graphics

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?)

F

V E

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...)

Page 18: Computer Graphics

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 vertice2 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

Page 19: Computer Graphics

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")

• ...

Page 20: Computer Graphics

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 Hausdorff di distanza fra mesh

– Calcolare la distanza:• in totale• punto per punto

})),(inf(sup,)),(inf(supmax{ badbadAaBbBbAa

Page 21: Computer Graphics

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• ...

Page 22: Computer Graphics

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é?)

Page 23: Computer Graphics

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 texutre

ad ogni wedge– ci sono seams

• replicare i vertici• memorizzale le text coord per wedge

u

v

Page 24: Computer Graphics

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

automaticamente

mesh semplificata2K triangles

mesh originale500K triangoli

• Semplificazione automatica• parametri:

– un errore massimo– o un numero di facce obiettivo

Page 25: Computer Graphics

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

Page 26: Computer Graphics

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

LOD 1 LOD 2 LOD 3 LOD 4

Una piramide di Livelli di Dettaglio

usare quando visto da vicino

usare quando visto da lontano

Page 27: Computer Graphics

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

– ...

Page 28: Computer Graphics

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 semplificazione

atomica meno costosa (in termini di errore aggiunto)

– aggiorna costi

• until (obiettivo raggiunto)– es: numero faccie,

errore

remove vertex

remove face

edge collaps

e

Page 29: Computer Graphics

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

Page 30: Computer Graphics

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)

Page 31: Computer Graphics

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

Page 32: Computer Graphics

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

500milatriangoli

2milatriangoli

semplificazioneautomatica

sempre duemila triangoli, ma con texture mapping

rendering

TESSITURAfatta apposta

(es. BumpMap)detailrecover

Page 33: Computer Graphics

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

simplified2K triangles

originale500K triangles

semplificato ma con tessitura2K triangles