• 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

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

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

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