Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12
Lezione 14:
Lezione 14: Lezione 14:
Lezione 14: modelling:
superfici di suddivisione
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
Superfici di suddivisione
• Modo molto diffuso per costruire mesh – 1: fare mesh di controllo
• a bassa risoluzione
• "a mano"
– 2: raffinarla automaticamente
• iterativamente
• (ad ogni interazione si aggiungono facce e vertici)
• molti schemi matematici differenti – con diverse peoprietà
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
Superfici di suddivisione
• Esempio: schema butterfly (per mesh triangolari)
– e' uno degli schemi 1=>4
(in un passo di suddivisione, da ogni triangolo se ne ottengono 4) (aggiunta di un vertice per ogni edge)
– MA... quali coordinate assegnare al nuovo vertice?
Ogni schema di suddivisone ha la sua formula. Ad esempio...
Passo suddivisonedi
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
POS( ) = ( POS( ) + POS( ) )
+ ( POS( ) + POS( ) )
+ ( POS( ) + POS( ) + POS( ) + POS( ) )
Superfici di suddivisione
• Esempio: schema butterfly
168 8
16 162
162 16-1
16-1 16-1
16-1
168 162 16-1
NB: i vertici "adiacenti"
sono
defininti univocamente sse la mesh e' two-manifold!
Superfici di suddivisione Ad ogni passo di suddivisione
• (x,y,z) dei nuovi vertici inseriti – formula (estrapolazione)
• (x,y,z) dei vecchi vertici
– si tiene la vecchia pos (schemi “interpolativi”) oppure
– formula (estrapolazione) (schemi “approssimativi”)
Esempio
level 0
(“control mesh”)
level 1
level 2 level 3
lvl ∞
(“limit surface”)
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
Superfici di suddivisione
mesh di controllo
mesh finale
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
Superfici di suddivisione Anche iterativamente:
1- Modellare “control mesh”
(editing manuale)
2- Suddivisione
(un passo)
3- Ritocco!
(editing manuale)
4- Goto 2
(fino a raggiungimento risultato voluto alla risuolzione voluta)
Molti schemi…
• Catmull-Clark
• Doo-Sabin
• Loop
• sqrt(3)
• Butterfly
• Mid-edge
• ….
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
recente aumento di popolarità
Differenze fra gli schemi
• interpolativi VS approssimativi
• solo triangoli, solo quads, qualunque cosa
• incremento complessità – (per ogni passo di suddivisione)
• proprietà della limit surface – (esistenza, smoothness)
• esistenza forma chiusa per la limit surface – (esatta o approssimata)
• …
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
Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12
Lezione 14:
Lezione 14: Lezione 14:
Lezione 14: Geometry Shader
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
Fr am m en ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti in te rp ol at i in te rp ol at i in te rp ol at i in te rp ol at i Ve rti ci & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i
Screen buffer Ve rti ci p or ie tta ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti co m pu ta ti co m pu ta ti co m pu ta ti co m pu ta ti
rasterizer triangoli set- up
rasterizer segmenti set- up
rasterizer punti set- up
co m pu ta zi on i pe r v er tic e co m pu ta zi on i pe r f ra m m en to
Nuove + vecchie primitive!
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
Fr am m en ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti in te rp ol at i in te rp ol at i in te rp ol at i in te rp ol at i Ve rti ci & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i
Screen buffer Ve rti ci p or ie tta ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti co m pu ta ti co m pu ta ti co m pu ta ti co m pu ta ti ra st er iz er tri an go li se t- up ra st er iz er se gm en ti se t- up
ra st er iz er pu nt i se t- up
co m pu ta zi on i pe r v er tic e co m pu ta zi on i pe r f ra m m en to
geometry shader
Geometry Shader
• agisce dopo il vertex shader
• è programmabile (GLSL in OpenGL)
+ comandi come: emitVertex endPrimitive
• accede:
+ agli N vertici (già processati) della primitiva + loro attributi
+ qualche informazione di adiacenza
• produce nuove primitive
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
Geometry Shader
• da OpenGL 3.2 (o Direct3D 10)
• concept
– creazione di ulteriori primitive sulla GPU
• flessibile (e cara) estensione potenzialmente utile in molti algoritmi come:
– suddividere (sup. di suddivisione) – marching cubes on the GPU?
– aggiungere flaps?
– …?
• possible impatto negativo sulla performance e diffusione del supporto ancora non diffusa (PC)
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
Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12
Lezione 14:
Lezione 14: Lezione 14:
Lezione 14:
Modelling:
NURBS e b-splines
Bézier curve
(o Bézier spline)
• Bézier curve di grado k:
insieme di k +1 punti ("di controllo")
che definiscono una curva
(in R
ncon n = 2 , 3 ...)
x y
x0 x1 x2 x3
y0 y2
y2 y3
Bézier curve (di grado 3) uniforme Bézier curve (di grado 3) non-uniforme x
y (x0 , y0)
(x1 , y1)
(x2 , y2) (x3 , y3)
Bézier curve cubiche (-- di grado 3) (o Bézier spline cubiche)
• Curva parametrica
x y
P
3P
2P
1P
0B(0)
B(0.5)
B(1) B(0.25)
B(0.7)
P
3P
2P
1P
0Alcune caratteristiche:
- indipendente da trasformazioni affini - tangenti negli estremi
- inclusione nel quadrilatero
inclusa nelquadri- latero
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
Bézier curve cubiche (-- di grado 3) (o Bézier spline cubiche)
• Usate:
– come primitiva di disegno 2D
• curve continue con derivata continua
– come path nelle animazioni (in 3D)
• velocita' e pos definite agli estremi temporali del moto
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
NURBS: Non Uniform Rational Bézier spline
• Estensione a superfici:
– NURBS
Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2010/11
Lezione 14:
Lezione 14: Lezione 14:
Lezione 14:
Bump-Mapping
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
Bump-Mapping
Fr am m en ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti in te rp ol at i in te rp ol at i in te rp ol at i in te rp ol at i Ve rti ci & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i
Screen Screen Screen Screen buffer buffer buffer buffer Ve rti ci p or ie tta ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti co m pu ta ti co m pu ta ti co m pu ta ti co m pu ta ti
rasterizer triangoli set- up
rasterizer segmenti set- up
rasterizer punti set- up
co m pu ta zi on i pe r v er tic e
Texture RAM interpolo
coordinate texture
coordinate texture
interpolate compreso:
coordinate texture (per vertice!)
bumpmap:
bumpmap:bumpmap:
bumpmap:
ogni texel (la codifica di) una normale
texture look-up, lighting (usando la
normale)
co m pu ta zi on i pe r f ra m m en to
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
Bump-Mapping
• Idea: far apparire una superficie piatta come se avesse del dettaglio geometrico ad alta freq.
• Metodo molto diffuso
– per aggiungere dettaglio geometrico
(o meglio la sua apparenza) in maniera efficace
• E' un froma di per-fragment lighting – il lighitng è computato per ogni frammento – come ad esempio anche il Phong shading
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
Bump-Mapping
stessa geometria (una sfera)
bumpmaps diverse
Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2011/12
Lezione 14:
Lezione 14: Lezione 14:
Lezione 14:
Rendering non fotorealistico
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
Rendering non fotorealistico
• N.P.R. = Non Photorealistic Rendering
• un rendering dove l'obiettivo non è il realismo ma:
– la chiarezza
• comunicare informazione 3D nel modo più comprensibile possibile (all’occhio umano)
• detto “illustrative rendering”
– oppure l'imitazione di uno stile umano:
• stile toon (o cartoon, cartone animato)
• stile disegno a matita
• stile stampa
• stile chiaroscuro a matita
• ...
• detti “imitative renderings”
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
Rendering non fotorealistico
• Esempio: rendering in stile disegni a matita
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
Rendering non fotorealistico
• Esempio: hatching
Emil Praun, Hugues Hoppe, Matthew Webb, Adam Finkelstein 2001