• Non ci sono risultati.

Superfici Parametriche

N/A
N/A
Protected

Academic year: 2021

Condividi "Superfici Parametriche"

Copied!
18
0
0

Testo completo

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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 ·

(6)

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 !

(7)

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

(8)

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

(9)

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)

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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)

(17)

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

(18)

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

f

f

Riferimenti

Documenti correlati

Si aggiungono inoltre, nel volume compreso tra il cilindro grande e il volume piccolo, delle rette orientate secondo la direzione del vento e la tangente al bordo di uscita

[r]

¤  Useful for computing sampled integral measures over

 Tutte le superfici di AREA minima area (subject to boundary constraints) hanno curvatura media = 0 (Non vale il contrario!)..  The surface tension of an interface, like a

1.4 Un esempio delle capacità del Leap Motion unito alla Realtà Aumentata 8 1.5 Vuforia con target

In this work several catalysts for the steam reforming of oxygenated compounds (ethanol or glycerol) derived from biomass were prepared. The main objective of this thesis was to

© The Author(s). European University Institute. Available Open Access on Cadmus, European University Institute Research.. l'Ufficio delle Bollette che furono anche

l’incrocio è formato da una linea verticale e da una linea orizzontale) ESERCIZIO: disegna 4 linee orizzontali,6 linee verticali e 8