Superfici Parametriche
Curve e Superfici parametriche
• Una mesh poligonale rappresenta una discretizzazione lineare a tratti della superficie
• Matematicamente, è una superficie lineare a tratti,
– Piatta sulle facce, con spigoli vivi fra facce
– Quando viene usata per rappresentare una superficie curva, la piattezza delle faccie e la presenza di spigoli vivi sono artefatti di modellazione
• (maggiore la risoluzione, minore la portata degli artefatti, ma mai zero) – (analogia: una linea spezzata è una rappresentazione lineare a tratti che
può solo approssimare una ideale linea curva)
– Ad esempio, un ideale cilindro viene approssimato con una mesh a
forma di prisma ad N facce (N determina la risoluzione della mesh)
– Vediamo ora un modo per rappresentare invece in modo esatto alcune
Curva parametrica e superficie parametrica
• Curva parametrica:
– definisco:
una funzione continua da float a R3:
e un intervallo di valori A (es, da 0 a 1) – La curva (uno “spagettone” che vola in R3)
è data da f(A), cioè dall’immagine di f,
cioè tutti i punti raggiungibili con f a partire da A, cioè il codominio della funzione definita su A – t è la posizione parametrica del punto f(t) – Possibile uso alternativo:
se t rappresenta il tempo, la curva parametrica rappresenta una traiettoria.
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
z y x t f ) (
Curva Parametrica
z y x t
f ) (
3
: R R
B
A
B A
f
A B
f
A t
B t f ( )
1D 3D
t
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
z y x t
f s
3 2
: R B
R A
B A
f
dominio di f immagine di f
“ x,y,z sono calcolate come formule di s,t ” Superficie Parametrica:
immagine di una funzione da
(un pezzo di) R 2 a R 3 per definirne una, scegliere una funzione (e il suo dominio A) (il “dominio parametrico”) ( f surgettiva)
Superficie Parametrica
y
x t
f s
3 2
: R R
B
A
B A
f
A
f
A
p f ( p ) B
s
t z
x y
ESEMPIO: una sup implicita per
l’area laterale cilindro (altezza h raggio r)
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
) sin(
) cos(
u r
v h
u r
v f u
] 1 , 0 [ ] 2 , 0 [ :
A
B A
f
A f
2D 3D
u v
y
x z
2 1
B
Superfici (e curve) parametriche:
convenzioni e termini
• A = Dominio Parametrico = il dominio di f – Definito su uno spazio bimensionale
(monodimensionale per le curve) – Spesso, per convenzione,
definito come il quadrato [0..1]x[0..1]
( [0..1] per le curve )
– Per distinguere le sue coordinate da quelle usate come spazio oggetto ( x,y,z ), le chiamiamo s , t (a volte, u e v )
– per es, in GLSL, s e t sono sinonimi di x e y
come nomi dei campi delle classi vec2,3,4
Sinonimi in GLSL
• Sinonimi per chiamare le coordinate dei vec:
• Usabili intercambiabilemente, per aumentare la leggibilità del codice
– compreso per lo swizzling, 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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
x,y,z,w r,g,b,a s,t,u,v
, , ,
, , ,
, , ,
coordiante spaziali, es mondo o ogg colori, es pre o post lighting
posizioni parametriche Interpretazione naturale:
p.st = q.yz
sinonimi sinonimi sinonimi sinonimi
Curve parametriche: un esempio banale
• Dati due vertici («di controllo») v0, v1 quale la curva parametrica
(non è davvero «curva» in questo caso) è data dal segmento che connette v0 a v1?
v0
v1
= 0 · 1 − + 1 ·
Curve parametriche:
un esempio appena meno banale
• Applichiamo ricorsivamente:
– tre «control point» v0, v1 , v2
– data una posizione parametrica t ,troviamo:
– il punto a interpolando fra v0 e v1 (con t ) – il punto b interpolando fra v1 e v2 (con t ) – il punto finale c interpolando fra a e b (con t ) – definisco f ( t ) come questo c !
– Ho definito una curva controllata da v0 v1 e v2 detta curva di Bézier (di grado 2)
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Bézier curves di grado 3 (cubiche)
• quattro «control point» v0, v1 , v2, v4
• data una posizione parametrica t ,troviamo:
– il punto a interpolando fra v0 e v1 (con t ) – il punto b interpolando fra v1 e v2 (con t ) – il punto c interpolando fra v2 e v3 (con t )
• poi
– il punto d interpolando fra a e b (con t ) – il punto e interpolando fra b e c (con t )
• e infine
– il punto finale f interpolando fra d e e (con t )
• definisco f ( t ) come questo f !
Codice GLSL
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
vec3 bezier( in float t, // pos paramet.
in vec3 v0, in vec3 v1, in vec3 v2, in vec3 v3) {
vec3 a = mix(v0,v1, t);
vec3 b = mix(v1,v2, t);
vec3 c = mix(v2,v3, t);
vec3 e = mix( a,b, t);
vec3 f = mix( b,c, t);
return mix( e, f, t);
}
Esercizi
• Disegnare lo schema per le curve di Bezier lineari, quadratiche, curve
– Seguendo il procedimento descritto
• Trovare le formule di f(t) come interpolazione dei punti di controllo
– (cioè determinare i pesi di queste interpolazioni)
– Soluzione: nei prossimi lucidi
Quadratic Bézier curve
= 1 − + 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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
funzioni peso punti di controllo
Esercizio: verificare che sia una interpolazione dei punti di controllo
Cubic Bézier curve
= 1 −
+ 3 1 − + 3 1 − +
funzioni peso
punti di controllo
Codice GLSL ottimizzato
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
vec3 bezier( in float t, // pos paramet.
in vec3 v0, in vec3 v1, in vec3 v2, in vec3 v3) {
float k = 1.0-t;
return (k*k*k)*v0 + (3.0*k*k*t)*v1 + (3.0*k*t*t)*v2 +
(t*t*t)*v3 ; }
Bézier curves: plot delle funzioni di peso
Grado 1
(l’esempio banale) Grado 3
(cubic) Grado 2
(quadratic)
Examples of Bézier cubic curves
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Curve paramteriche: quale direzione tangente?
• Mettiamo di esser nel punto f(t)
• Basta chiedersi di quanto mi sposto se t aumenta di un pochino, es di dt.
• Risposta:
– vado in f( d+ dt).
– mi sono spostato di f( t + dt) - f( t ) (un vettore)
– dividendo per dt, ottengo lo spostamento nella curva per unità di spostamento nello spazio parametrico
– il limite con dt che va a 0 è quindi la direzione tangente!
– cioè la derivata in t di f
df(x) / dt = vettore tangente della curva
Curve di Bézier: quale dir tangente
• Esercizi:
– computare le derivate per t (per il grado 3 o 2)
– Computare il valore di queste derivate all’inizio (t=0) e alla fine (t=1) del percorso, (per il grado 3 o 2)
– soluzione: nei prossimi lucidi
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Curve di Bézier
• Si può generalizzare a grado 5, 6, 7…
– esercizio: come vengono le formule? Generalizzare (difficile!)
• Tuttavia, il grado 4 è il più usato:
– cubico = ancora molto efficiente, e tuttavia molto comodo:
– due punti di controllo v0 e v3
controllano dove inizia e finisce la curva (rispettivamente) – i due punti di controllo intermedi v1 e v2
controllano in modo naturale la dir tangente all’inizio e alla fine
• all’inizio, è (il triplo di) v1-v0 quindi la curva parte da v0 verso v1
• alla fine, è (il triplo di) v3-v2
quindi la curva arriva in v3 da direzione v2
• Molto intuitivo, e utile per fondere curve in uno solo
Concatenating Bezier curves: Bezier path
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
=
se end points coincidono:
( = ) curva continua
se inoltre ( ) allineati:
curva continua con (direzione di) derivata continua (curva “smooth”)
Curve paramteriche con punti di controllo
• La custruzione di Bèzier è solo un’esempio.
• In generale, uno schema consiste nel definire
N punti di controllo e definire una curva che passa da questi
punti (schema interpolativo)
oppure no (schema approssimativo)
• Le curve di Bèzier di grado N>1 sono dunque
un esempio di schema approssimativo
Da curve parametriche a superfici parametriche
• Ho una griglia di NxN punti di controllo…
– Es: con N = 2 ho: v0,0 v0,1 v0,2 v1,0 v1,1 v1,2 v2,0 v2,1 v2,2
• Voglio sapere p = f(s,t),
– la pos 3D del punto della sup di coord parametriche (s, t)
• procedimento:
– computo a come f(s) sulla curva v0,0 v0,1 v0,2 – computo b come f(s) sulla curva v1,0 v1,1 v1,2 – computo c come f(s) sulla curva v2,0 v2,1 v2,2 – infine, computo p come f(t) sulla curva a,b,c
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Da curve parametriche a superfici parametriche
• Ho una griglia di NxN punti di controllo…
– Es: con N = 2 ho: v0,0 v0,1 v0,2 v1,0 v1,1 v1,2 v2,0 v2,1 v2,2
• Voglio sapere p = f(s,t),
– la pos 3D del punto della sup di coord parametriche (s, t)
• Procedimento equi-valente:
– computo a come f(t) sulla curva v0,0 v1,0 v2,0 – computo b come f(t) sulla curva v0,1 v1,1 v2,1 – computo c come f(t) sulla curva v0,2 v1,2 v2,2
p a,b,c
Bi-cubic Bézier patches
• N = 4
• Griglia di 4x4 vertici di controllo v0,0 v0,1 v0,2 v0,3
v1,0 v1,1 v1,2 v1,3 v2,0 v2,1 v2,2 v2,3 v3,0 v3,1 v3,2 v3,3
• Passa per i 4 angoli v0,0 v0,3 v3,0 v3,3
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Bi-cubic Bézier patches
Bi-cubic Bézier patches
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Bi-cubic Bézier patches
Bézier patches
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Bézier patches
The Utah Teapot, by Martin Newell (1975)
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Rendering di sup parametrica con rasterization based
una superficie curva
parametrica? Poligoni
Rendering di superficie parametrica con rasterization based
• Idea: tassellare il dominio parametrico A in modo regolare (es.: 10x10)
• Ogni posizione (s,t) corrisponde al punto in 3D (coord mondo) f(s,t)
– f può essere calcolato nel vertex shader!
• Quale normali alla superficie nel punto (s,t)?
f
t
Rendering di superficie parametrica con rasterization based
• Osservazione: quanto densamente tassellare può essere deciso in qualsiasi fase, anche in fase di rendering
– (La superficie modellata è curva: solo il rendering la approssima con superfici piatte
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a