Clipping e rappresentazione 3D File - e-Learning

Informatica Grafica
Gianluigi Ciocca, Simone Bianco
F1801Q120
Clipping 3D (1)
Dopo essere state trasformate, le coordinate cartesiane di un
punto 3D diventano (in coordinate omogenee):
 x   xh 
 y  y 
M volume − >canonical   =  h 
 z   zh 
   
1   h 
Tutti i punti che stanno nel canonical view volume (e quindi
visibili dalla camera) hanno coordinate tali che
−1 ≤
xh
≤1
h
−1 ≤
yh
≤1
h
−1 ≤
Informatica Grafica
zh
≤1
h
80
Clipping 3D (2)
L’algoritmo di clipping 2D Cohen-Sutherland può essere
direttamente esteso al caso 3D
A ciascun endpoint è associato un codice di 6 bit
B5B4B3B2B1B0 con Bi={0,1}
B0 : il punto è alla sinistra del cubo (xh < -h)
B1 : il punto è a destra del cubo (xh > h)
B2 : il punto è sotto il cubo (yh < -h)
B3 : il punto è sopra il cubo (yh > h)
B4 : il punto è di fronte al piano near (xh < -h)
B5 : il punto è oltre il piano far (zh > h)
Le condizioni sopra elencate valgono se h>0
Se h<0, le condizioni si applicano negando le coordinate
Informatica Grafica
81
Clipping 3D (3)
L’algoritmo di clipping 2D Cohen-Sutherland può essere
direttamente esteso al caso 3D
y
Top
Far
z
Near
x
Bottom
Left
Right
011001
011000
011010
001001
001000
001010
101001
101000
101010
010001
010000
010010
000001
000000
000010
100001
100000
100010
010101
010100
010110
000101
000100
000110
100101
100100
100110
Region Codes
In front of Near plane
Region Codes
Between Near and Far planes
Informatica Grafica
Region Codes
Behind Far plane
82
Clipping 3D (4)
Anche l’algoritmo Liang-Barsky può essere esteso al 3D nello
stesso modo
L’equazione parametrica della linea diventa
(xh1 , yh1 , zh1 , h1 )
(xh 2 , yh 2 , zh 2 , h2 )
u=0
u=1
xh = xh1 + u ⋅ ( xh 2 − xh1 )
yh = yh1 + u ⋅ ( yh 2 − yh1 )
0 ≤ u ≤1
z h = z h1 + u ⋅ ( z h 2 − z h1 )
h = h1 + u ⋅ (h2 − h1 )
Informatica Grafica
83
Modellazione 3D (1)
Modellare significa
Definire/acquisire una rappresentazione degli oggetti
Cosa
Definire la descrizione (modello) degli oggetti
Come
Definire gli attributi associati ai vari elementi degli oggetti
Aspetto
Informatica Grafica
84
Modellazione 3D (2)
I modelli degli oggetti possono essere definiti in modo diverso
a seconda del loro uso e di come sono stati creati
Volumi
Voxel
Geometria solida costruttiva
...
Contorni
Poligoni e mesh
Curve implicite
Patch parametriche
...
Informatica Grafica
85
Boundary Representation (1)
Descrizione basata sul contorno
Gli oggetti sono descritti attraverso le loro superfici
Vertici
Spigoli
Poligoni
Facce
Mesh
Poliedri
Informatica Grafica
86
Boundary Representation (2)
Mesh di poligoni
Uno spigolo (edge) è un segmento che unisce due vertici
Un poligono è una sequenza chiusa di spigoli
Informatica Grafica
87
Boundary Representation (3)
Mesh di poligoni
Il poligono elementare più usato è il triangolo
La faccia del triangolo è garantita giacere su un piano
E’ possibile definire la normale del piano
E’ definita dall’ordine dei vertici (usualmente antiorario)
N
C
N = (B − A) × (C − A)
A
B
Informatica Grafica
88
Boundary Representation (4)
Mesh di poligoni
Un insieme connesso di poligoni è una maglia poligonale (mesh)
Per una corretta modellazione, la mesh deve essere 2-manifold
Uno spigolo deve appartenere al più a 2 poligoni
Informatica Grafica
89
Boundary Representation (5)
Mesh di poligoni
Le mesh possono essere di diverso tipo
Strip
Fan
Semplice
Informatica Grafica
90
Boundary Representation (6)
Mesh di poligoni
L’orientazione di due facce è detta compatibile se i vertici dell’edge
in comune sono percorsi in ordine inverso
Tutte le normali hanno la stessa orientazione
N
Informatica Grafica
N
91
Boundary Representation (7)
Mesh di poligoni
Gli oggetti sono costruiti con mesh chiuse (poliedri)
Tutti gli edge appartengono esattamente a 2 facce
Le normali di un poliedro siano coerenti tra loro (“uscenti” dall’oggetto)
Informatica Grafica
92
Boundary Representation (8)
Spesso è necessario una struttura dati efficiente per codificare
le mesh
Interrogazioni sulla topologia
Manipolazione della geometria
...
La codifica deve anche minimizzare la duplicazione di
informazioni
Informatica Grafica
93
Boundary Representation (9)
Codifica esplicita
P1={(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)}
P2={(x1,y1,z1),(x4,y4,z4),(x2,y2,z2)}
...
V3
V2
P1
P2
Lista di vertici
V={V1,V2,V3,V4}
P1={V1,V2,V3}
P2={V1,V4,V2}
V1
V1=(x1,y1,z1)
V2=(x2,y2,z2)
V3=(x3,y3,z3)
V4=(x4,y4,z4)
Informatica Grafica
V4
94
Boundary Representation (10)
Lista di Edge
V={V1,V2,V3,V4}
E1={V3,V1,P1,λ}
E2={V1,V4,P2,λ}
E3={V4,V2,P2,λ}
E4={V2,V3,P1,λ}
E5={V1,V2,P1,P2}
V1=(x1,y1,z1)
V2=(x2,y2,z2)
V3=(x3,y3,z3)
V4=(x4,y4,z4)
V3
E4
E1
V2
P1
E5
P2
E3
V1
E2
P1={E1,E5,E4}
P2={E2,E3,E5}
Informatica Grafica
V4
95
Boundary Representation (11)
Winged-Edge representation
La struttura contiene 3 tabelle di dati
Face Table
Lista delle facce: ogni entry contiene un puntatore ad uno degli edge
incidenti alla faccia
Vertex Table
Lista dei vertici: ogni entry contiene un puntatore ad uno degli edge
incidente al vertice
Edge Table
Lista degli edge: ogni entry è composta da 8 valori:
Start Vertex, End Vertex,
Left Face, Right Face,
Left Face Predecessor Edge, Left Face Successor Edge,
Right Face Predecessor Edge, Right Face Successor Edge
Informatica Grafica
96
Boundary Representation (12)
Winged-Edge representation
Esempio
c
1
b
2
X
a
b
e
Y
d
Start
End
Left Face
Right Face
Left Face
Pred
Left Face
Succ
Right Face
Pred
Right Face
Succ
X
Y
1
2
a
c
e
d
Informatica Grafica
97
Boundary Representation (13)
Winged-Edge representation
Esempio
D
3
e
a
1
2
c
C
f
A
4
d
b
Vertex
Edge
Face
Edge
A
a
1
a
B
b
2
c
C
d
3
a
D
a
4
b
In totale è necessario memorizzare V+F+8E valori
B
Edge
Start
End
L. Face
R. Face
L. Pred.
Edge
L. Succ.
Edge
R. Pred
Edge
R. Succ
Edge
a
A
D
3
1
f
e
c
b
b
A
B
1
4
a
c
d
f
c
B
D
1
2
b
a
e
d
d
B
C
2
4
c
e
f
b
e
C
D
2
3
d
c
a
f
f
A
C
4
3
b
d
c
a
Informatica Grafica
98
Boundary Representation (14)
Winged-Edge representation
Esempio di interrogazione
Trovare tutti gli edge incidenti nel vertice X (enumerati in senso
antiorario)
Recuperare l’edge incidente dalla tabella
Due casi da considerare
X
X
next
next
current
X è Start Edge: l’edge successivo è il
Left Face Pred
current
X è End Edge: l’edge successivo è il
Right Face Pred
Informatica Grafica
99
Boundary Representation (15)
Winged-Edge representation
Esempio
Trovare tutti gli edge incidenti nel vertice X (enumerati in senso
antiorario)
Algoritmo
Given X
Get incident edge e
s:=e
do
output s
if start vertex of s is X
s:= predecessor of left face
else
s:= predecessor of right face
end
while s!=e
Informatica Grafica
100
Boundary Representation (16)
Winged-Edge representation
Esempio di interrogazione
Trovare tutti gli edge incidenti una faccia F (enumerati in senso
antiorario)
Recuperare l’edge incidente dalla tabella
Due casi da considerare
current
current
next
next
La faccia è una Right Face: l’edge
successivo è il Right Face Succ
La faccia è una Left Face : l’edge
successivo è il Left Face Succ
Informatica Grafica
101
Boundary Representation (17)
Winged-Edge representation
Esempio
Trovare tutti gli edge incidenti una faccia F (enumerati in senso
antiorario)
Algoritmo
Given face F
Get incident edge e
s:=e
do
output s
if F is left face of s
s:= successor of left face
else
s:= successor of right face
end
while s!=e
Informatica Grafica
102
Superfici Curve 3D (1)
Le superfici parametriche 3D sono estensioni delle curve
parametriche 2D
In 2D una curva parametrica cubica p è costruita da 4 punti di
controllo Pi e da 4 funzioni di blend fi
4
p (t ) = ∑ f i (t ) Pi
i =1
In 3D una superficie curva è costruita da 16 punti di controllo
disposti a griglia
4
4
p (u , v) = ∑∑ f i (u ) f j (v) Pi , j
i =1 j =1
Informatica Grafica
103
Superfici Curve 3D (2)
Le curve parametriche 3D sono estensioni di quelle 2D
4
4
p (u , v) = ∑∑ f i (u ) f j (v) Pi , j
i =1 j =1
Patch di Bezier
Informatica Grafica
104
Superfici Curve 3D (3)
Patch di Bezier
Per la continuità C1
I 4 estremi sono interpolati
Informatica Grafica
105
Surface Subdivision (1)
Per rappresentare delle superfici curvilinee con poligoni si può
ricorrere alla tecnica di surface subdivision
Suddivisione di una curva a segmenti in modo tale da
approssimare una curva smooth
2D
3D
Informatica Grafica
106
Surface Subdivision (2)
Si suddivide la mesh poligonale introducendo poligoni più
piccoli in modo ricorsivo
Se la regola di suddivisione è opportuna, si giunge and una
superficie limite smooth
Mesh Base
Informatica Grafica
107
Surface Subdivision (3)
Si suddivide la mesh poligonale introducendo poligoni più
piccoli in modo ricorsivo
Se la regola di suddivisione è opportuna, si giunge and una
superficie limite smooth
Superficie Limite
Informatica Grafica
108
Surface Subdivision (4)
Algoritmo di Chaikin (usato dal 1974 in CG)
Segmenti iniziali approssimanti
Informatica Grafica
109
Surface Subdivision (5)
Algoritmo di Chaikin (usato dal 1974 in CG)
Split degli edge (es. a metà)
Informatica Grafica
110
Surface Subdivision (6)
Algoritmo di Chaikin (usato dal 1974 in CG)
I vecchi vertici sono spostati considerando i vertici dello step
precedente e una regola (es. media)
Informatica Grafica
111
Surface Subdivision (7)
Algoritmo di Chaikin (usato dal 1974 in CG)
Nuova curva approssimante
Informatica Grafica
112
Surface Subdivision (8)
Algoritmo di Chaikin (usato dal 1974 in CG)
Split
Informatica Grafica
113
Surface Subdivision (9)
Algoritmo di Chaikin (usato dal 1974 in CG)
Calcolo dei nuovi vertici
Informatica Grafica
114
Surface Subdivision (10)
Algoritmo di Chaikin (usato dal 1974 in CG)
Nuova curva approssimante
Informatica Grafica
115
Surface Subdivision (11)
Algoritmo di Chaikin (usato dal 1974 in CG)
Se ripetuto all’infinito, la curva approssimante converge ad una
curva limite
Informatica Grafica
116
Surface Subdivision (12)
Gli schemi di suddivisione delle superfici 3D si differenziano per
Tipo di mesh (triangolare o quadrata)
Tipo di curva limite (interpolante o approssimante)
Tipo di suddivisione (faccia o vertice)
Face Split
Triangular meshes
Quad. meshes
Approximating
Loop
Catmull-Clark
Interpolating
Butterfly
Kobbelt
Vertex Split
Quad. meshes
Approximating
Doo-Sabin, Midedge
Informatica Grafica
117
Surface Subdivision (13)
Doo-Sabin
Si considerano mesh quadrate
Si considera il baricentro dei vertici delle facce
Si considerano i punti mediani degli edge incidenti i vertici
Il nuovo vertice è il baricentro delle posizioni dei punti trovati e il vertice
stesso
Informatica Grafica
118
Surface Subdivision (14)
Doo-Sabin
Ogni faccia ha una nuova faccia (F-face) con la stessa forma
dell’originale
Ogni edge ha associata una faccia (E-face) quadrangolare
Ogni vertice ha associata una faccia (V-face) con un numero di
edge pari al numero di edge incidenti il vertice originario
Informatica Grafica
119
Surface Subdivision (15)
Doo-Sabin
Informatica Grafica
120
Surface Subdivision (16)
Loop
Ogni triangolo è suddiviso in 4 triangoli più piccoli suddividendo gli
spigoli
Anche i vecchi vertici sono modificati come media dei vertici degli
edge incidenti
Informatica Grafica
121
Surface Subdivision (17)
Loop
Informatica Grafica
122
Surface Subdivision (18)
Catmull-Clark
Usiamo mesh quadrate come esempio
Si considera il baricentro (F-Point) dei vertici che definiscono la faccia
Per ogni edge si definisce un punto (E-Point) come la media i due FPoint adiacenti all’edge e i punti dell’edge
Informatica Grafica
123
Surface Subdivision (19)
Catmull-Clark
Informatica Grafica
124
Surface Subdivision (20)
Catmull-Clark
Oscar © 2005 nella categoria Technical
Achievement Award
Schema usato nel cortometraggio
“Geri’s game”
Volto
Mani
Tessuti
© Pixar Geri’s Game 1997
Informatica Grafica
125
Surface Subdivision (21)
Butterfly
E’ uno schema ad interpolazione
I vecchi vertici sono mantenuti
Ne vengono creati di nuovi
Informatica Grafica
126
Surface Subdivision (22)
Butterfly
Informatica Grafica
127
Surface Subdivision (23)
Confronto
Informatica Grafica
128
Surface Subdivision (24)
Usi
Loop e Catmull se non è necessaria interpolazione
Loop migliore per mesh triangolari
Catmull migliore per mesh quadrate
Informatica Grafica
129
Surface Subdivision (25)
La tecnica di surface subdivision è definita Tessellation
Gli algoritmi di surface subdivision sono definiti Tessellator
La Tassellation è stata introdotta di recente nelle pipeline di
rendering di DirectX 11 e OpenGL 4.0
Usata in congiunzione con il Displacement Mapping
Base
Tesselation
Informatica Grafica
Tesselation + Displacement
130