Computer Graphics
Marco Tarini
Lezione 3: modellare con triangoli
Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Rasterization-based HW-supported rendering
• tutto sia composto da triangoli (3D) – o al limite da punti, o segmenti
•ma....
...non tutto nasce composto di triangoli quasi nulla
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
un quadrilatero?
"quad" "diagonal split"
due 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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
un poligono a n lati?
triangolarizzazione di poligono:
(in 3D, non un problema del tutto banale...) (n-2) 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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
triangoli!
Tutto sia composto da triangoli (3D)
la superficie di un solido geometrico, per es. una sfera?
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
la superficie di un solido geometrico, per es. una cono?
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
un campo d'altezza?
(array 2D di altezze, e.g. per modellare un terreno?)
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Esempio di campo di altezza triangolato
• "height field"
• un esempio tipico:
– campo d'altezza per modellare un terreno...
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
nuvola di punti ?
(point cloud) triangoli!
problema molto studiato, e (nel caso generale) difficile
Algoritmi comuni: “Ball Pivoting”
x
y z
x
y 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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
da nuvola di punti a triangoli: esempio
Tutto sia composto da triangoli (3D)
volume? triangoli!
algoritmi di segmentation (e.g. "marching cubes" * )
triangoli che definiscono
iso-superficie una
Passare da volume a superficie
Dataset Volumetrico:
- griglia 3D regolare di valori di densità - campionamento regolare in 3D - es: output di una scansione TAC
densità: 0.3 densità: 0.45
…
consumo memoria cubico con la risoluzione
(diventa facilmenteingestibile)
Passare da volume a superficie
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Dataset Volumetrico V
algoritmo
“Marching- Cubes”
Iso-superficie Triangolata
(di valore S s)
• s = valore soglia
• superficie (chiusa) dove il valore del campo = s
• racchiude i punti di V che hanno valore > s
Algorimo Marching-Cubes : alcuni cenni
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Cubetto con vertici in 2 x 2 x 2 = 8 campioni del dataset
Ogni campione : - o dentro (se >s) - o fuori (se <s)
Per ciascuna combinazione di dentro/fuori
=> una triangolaione predefinita (usare una tabella tabella, 2^8 = 256 casi) (ma solo 15 diversi contando le simmetrie)
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Da dataset volumetrico a triangoli: altro esempio
Dataset Volumetrico Iso-superficie
Triangolata (di valore s)
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
una superficie curva parametrica?
per es. NURBS *, b-splines *...
triangoli!
questo è facile. Il contrario, che qualche volta è utile, MOLTO meno
* verdemo più avanti nel corso, se c'è tempo
Superficie Parametrica
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
=
z y x v f u
3 2
:
R B
R A
B A f
⊆
⊆
→
A B
f
A
p ∈ f ( p ) ∈ B
2D 3D
u
v z
x y
Superficie Parametrica
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
=
z y x v f u
3 2
:
R B
R A
B A f
⊆
⊆
→
dominio di f immagine di f
“ x,y,z sono calcolate come formule di u,v ” Superficie Parametrica:
immagine di una
funzione da R
2a R
3per definirne una,
scegliere una funzione
(e il suo dominio)
( f surgettiva)
ESEMPIO: area laterale cilindro
come Superficie Parametrica:
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
=
v u
u v
f u sin( ) ) cos(
] 1 , 0 [ ] 2 , 0 [ :
×
=
→ A π
B A f
A f
2D 3D
u v
z
x y
B
2 π 1
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
superfici implicite?
Superficie implicita
• E’ il luogo degli zeri di una funzione data:
(tutti i punti p t.c. f (p) = 0 )
• Nota: definiscono un “dentro” e un “fuori”:
– f (p) < 0 <==> p dentro – f (p) > 0 <==> p fuori
– f (p) = 0 <==> p sulla superficie
…sono oggetti solidi! (superfici “watertight”)
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
R R f : 3 →
Superficie implicita
• Es…
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
2 2 2
2 y z R
x z y x
f = + + −
z
x y
Giocare con le sup implicite: GSM
• Molto convenienti…
• Siano A e B oggetti solidi delimitati da superfici implicite, con funzioni f A e f B
• Posso definire (come sup implicite):
– inversioni: - f A
– intersezioni: max( f A , f B ) – unioni: min( f A , f B ) – scavi: max( f A , - f B )
A B
Geometric Solid Modelling
////
Geometric Solid Modelling
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
min max min
max
--
f 4 f 4
f 5
f 2 f 1
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tutto sia composto da triangoli (3D)
superfici implicite? triangoli!
nb: non c'e' un modo solo per farlo.
Modo + semplice (non ottimo): campionare volume e estrarre isosuperfice a valore 0
triangoli che definiscono
la superficie esplicitamente
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tornando allo schema generale...
applicazione interattiva mondo reale
/ modello matematico / artista 3D ...
Geometria
Immagine/i
rendering
preprocessing (modelling)
acquisizione 3D / simulazione / modellazione
(e.g. 3Dstudio max, Maya)
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Tipica fase di preporsessing
Geometria
Immagine/i rendering
preprocessing (modelling)
diagonal split (da quad a 2 tri) può venire fatto anche qui, al volo
diagonal split (da quad a 2 tri) può venire fatto anche qui, al volo
Tutto il resto che abbiamo visto nei lucidi precedenti
(trasformazione in triangoli) tipicamente qui
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
e r n d e r n i g
Tr ia ng oli
Riassuntino Quads Campi d'altezza
Forme geo.
di base Superfici parametriche
"al volo"
n-agoni Dati Volumetrici Superfici implicite
Nuvole di punti
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Modellare direttamente con triangoli
• rappresentare gli oggetti con triangoli – o al limite da punti, o linee
una teiera? un coniglio
di porcellana?
triangoli, triangoli, 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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• rappresentare gli oggetti con triangoli – o anche quads (o al limite da punti, o linee) – molti strumenti interattivi
• Maya (Autodesk) (*),
• 3Dstudio (Max) (*),
• Solidthinking (*),
• Rhinoceros (*), (attraverso superfici parametriche)
• Wings3D,
• Z-brush (Pixologic) (*),
• MeshLab, (VCG-group, Pisa)
• ...
– low low low low----poly modelling poly modelling poly modelling: poly modelling
• l'arte di modellare l'oggetto con POCHI TRIANGOLI
• (evita di rendere l'applicazione transform limited)
• (tipico skill dell'artista digitale per i video games)
Modellare direttamente con triangoli
(*) = commerciali
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Low-poly modelling
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a by Phillip Heckinger (3D modeller)
Low-poly modelling
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Un limite generale di questo approccio
• Non sempre è semplice modellare le entità da raffigurare attraverso superfici triangolate...
– esempi:
• una nuvola?
• una fiamma?
• una pelliccia?
• . . .
by Niniane Wang (non real time)
by N. Adabala uni florida (non real time)
by M. Turitzin and J. Jacobs Stanford Uni (real time!)
Primitive di rendering
• Triangoli
– ok, abbiamo capito
• Quads
– in un certo senso, perchè diventano triangoli al volo
• Segmenti
• Punti
Tutto l'hardware è progettato e ottimizzato principalmente per
questo caso
Primitive di rendering
• Triangoli
– ok, abbiamo capito
• Quads
– in un certo senso, perchè diventano triangoli al volo
• Segmenti
• Punti
utili ad esempio
per particle systems
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 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a