29
Sistemi Multimediali II Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione 8: attributi per vertice asdad asdsad fadf asdf asdf asdf asd asdfasdf asd fasdf asdasdf asd asdf asd asdf asd asdf asd asdad asdsad fadf asdf asdf asdf asd asdfasdf asd fasdf asdasdf asd asdf asd asdf asd asdf asd asdad asdsad fadf asdf asdf asdf asd asdfasdf asd fasdf asdasdf asd asdf asd asdf asd asdf asd

Sistemi Multimediali II

  • Upload
    elsa

  • View
    63

  • Download
    0

Embed Size (px)

DESCRIPTION

Lezione 8: attributi per vertice. asdad asdsad fadf asdf asdf asdf asd asdfasdf asd fasdf asdasdf asd asdf asd asdf asd asdf asd. Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05. Sistemi Multimediali II. asdad - PowerPoint PPT Presentation

Citation preview

Page 1: Sistemi Multimediali II

Sistemi Multimediali II

Marco Tarini

Università dell’Insubria

Facoltà di Scienze MFN di Varese

Corso di Laurea in Informatica

Anno Accademico 2004/05

Lezione 8: attributi per vertice

asdadasdsadfadfasdf asdf asdf asdasdfasdf asdfasdf asdasdf asd asdf asd asdf asdasdf asd

asdadasdsadfadfasdf asdf asdf asdasdfasdf asdfasdf asdasdf asd asdf asd asdf asdasdf asd

asdadasdsadfadfasdf asdf asdf asdasdfasdf asdfasdf asdasdf asd asdf asd asdf asdasdf asd

Page 2: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 2/40

Preambolo:

• Le coordinate baricentriche

Page 3: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 3/40

Cosa è un segmento?

V1

V2

con ...RRRv,v 43221 o o

Page 4: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 4/40

Cosa è un segmento?

V1

V2

posso definirlo cosi':un segmento di vertici v1 e v2

é l'insieme di tutti i punti x esprimibili come

x = a v1 + b v2

a e b scalari positivi con a + b = 1

0.5 v1 + 0.5 v2

0.0 v1 + 1 v2

0.75 v1 + 0.25 v2

1 v1 + 0 v2

0.1 v1 + 0.9 v20.66 v1 + 0.33 v2 ≪ x è una

interpolazione

di v1 e v2 ≫

Page 5: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 5/40

Parentesi notazione

V1

V2

x = a v1 + b v2

a e b scalari positivi con a + b = 1

x

interpolazione:

V1

V2

x = a v1 + b v2

a e b scalari positivi con a + b = 1

x

estrapolazione:

(quindi 0 ≤ a ≤ 1 e 0 ≤ b ≤ 1 )

Page 6: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 6/40

Cosa è un triangolo?

V1

V2

con ...RRRv,v,v 432321 o o

V3

≪ é l'insieme di tutti i punti x tali che... ≫

Page 7: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 7/40

Cosa è un triangolo?

V1

V2

V3

p

qq = k1 v1 + k2 v2

k1 + k2 = 1 k1,k2 > 0

p = h1 v3 + h2 qh1 + h2 = 1 h1,h2 > 0

esercizio: sostituiamo e...

Page 8: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 8/40

Cosa è un triangolo?

V1

V2

V3

un triangolo di vertici v1 v2 v3

é l'insieme di tutti i punti x esprimibili come

x = a1 v1 + a2 v2 + a3 v3

a1 a2 a3 scalari positivi

a1 + a2 + a3 = 1

Page 9: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 9/40

Per esempio...

V1

V2

V3

0 v1 + 0 v2 + 1 v3

0 v1 + 1 v2 + 0 v30.33 v1 + 0.33 v2 + 0.33 v3

(il baricentro del triangolo)0.5 v1 + 0.5 v2 + 0 v3

(punto in mezzo al lato v1 v2)0.65 v1 + 0.2 v2 + 0.15 v3

Page 10: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 10/40

Ebbene...

V1

V2

V3

dati a1 a2 a3 scalari tali positivi

con a1 + a2 + a3 = 1

→x = a1 v1 + a2 v2 + a3 v3

é un punto del triangolo

Page 11: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 11/40

Ma anche...

V1

V2

V3

dato un punto p nel triangolo

→esistono unici a1 a2 a3 tali che

p = a1 v1 + a2 v2 + a3 v3

e a1 a2 a3 sono positivi e a somma 1

diciamo che a1 a2 a3 sono le coordinate baricentriche di p

Page 12: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 12/40

Le coordinate baricentriche

• Concetto F O N D A M E N T A L E

V1

V2

V3

p

p ha coordinate baricentriche (a1 a2 a3) sse

p = a1 v1 + a2 v2 + a3 v3

Page 13: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 13/40

a3 Kg

a2 Kg

Le coordinate baricentriche Interpretazione fisica (storica) (buffa)

V1 V2

V3

p ha coordinate

baricentriche (a1 a2 a3) sse

é il baricentro di:

p

a1 Kg

Page 14: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 14/40

Le coordinate baricentriche Interpretazione geometrica

V1

V2

V3 p1

1

p = v1 + h ( v2-v1 ) + k ( v3-v1 )

h

k

Page 15: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 15/40

Coordinate baricentriche: improtante proprietà

V1

V2

V3

p

3R 2R

f(p)

f( v1 )

f( v2 )

f( v3 )

trasformazione affine f(proiezione compresa)

p ha coord. baricentriche a,b,cnel triangolo v1 v2 v3

f(p) ha coord. baricentriche a,b,cnel triangolo f(v1) f(v2) f(v3)

Page 16: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 16/40

Le coordinate baricentrichecome rapporti fra aree

• Quali sono le coord baricentriche di un punto p?

V1

V2

V3

p

p = a1 v1 + a2 v2 + a3 v3

A2

A3

A1

3213

32

21

1 aaa AAAAA

A

A

A

A

Atot

tottottot

Page 17: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 17/40

Preambolo:

• Le coordinate baricentriche

Page 18: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 18/40

Attributi nel pipeline

Fram

men

ti&

att

rib

uti

in

terp

ola

ti

Vert

ici

& loro

att

rib

uti pixel

finali(nello

screen-buffer)

Vert

ici

pro

iett

&

att

rib

uti

com

pu

tat

i

rasterizer

triangoli

com

puta

zioni

per

fram

mento

set-up

rasterizer

segmenti

set-up

rasterizer

punti

set-up

com

puta

zioni

per

vert

ice

rasterizer

triangoli

set-up

associamodegli

attributiai vertici

chemandiamo

es: colore RGB

qui gli attributi

possono subirevarie

compuatzioni

ogni frammento avrà

una valoreinterpolato

degli attributiper vertice

qui gli attributivengono interpolati

Page 19: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 19/40

Attributi nella rasterizzazione

• Quindi il rasterizer deve fare DUE cose:1 trovare i frammenti che compongono la

primitiva• e.g. i frammenti interni al triangolo

2 interpolare gli attributi per questi frammenti• tramite le coordinate baricentriche

• Il rasterizer produce frammenti CON attributi associati

Page 20: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 20/40

Attributi nella rasterizzazione

• Idea:– lavoriamo su R2

V1

V2

V3

p

3R 2R

f(p)

f( v1 )

f( v2 )

f( v3 )

trasformazione affine f(proiezione compresa)

p ha coord. baricentriche a,b,cnel triangolo v1 v2 v3

f(p) ha coord. baricentriche a,b,cnel triangolo f(v1) f(v2) f(v3)

NOTA: vero solo per le trasformazioni affini.

E' solo una approssimazione per

la distorsione prospettica

Page 21: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 21/40

Scan-line rasterizer & attributi

• Otteniamo gli attributi per frammentointerpolando gli attributi per verticelungo segmenti (linearmente)

• Equivalente ad usare le coordinate baricentriche del frammentocome pesi

Page 22: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 22/40

Scan-line rasterizer & attributi

• Interpoliamo gli attributi:– linearmente sui bordi– e in ogni scanline, tra gli estremi dello span

v0

v2

v1

p qf

p interpolatofra a2 e a1

q interpolatofra a0 e a1

f interpolatofra p e q

a2

a1

a0

Page 23: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 23/40

Scan-line rasterizer & attributi

• Lo stesso per tutti gli attributi

v0

v2

v1

p qf

a2, b2, c2...

a1, b1, c1...

a0, b0, c0...

Ottimaizzatione:

si puo'calcolare

incrementalme.

vediamo come →

Page 24: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 24/40

Scan-line rasterizer & attributi

a2

a1

a0

Primo frammento prodotto:

ha come attributo a0

ogni volta che mi sposto 1 pixel a dx:

aumento di una costante dx

ogni volta che mi sposto 1 pixel in alto:

aumento di una costante dy

Page 25: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 25/40

Scan-line rasterizer & attributi

a2

a1

a0

Primo frammento prodotto:

ha come attributo a0

ogni volta che mi sposto 1 pixel a dx:

aumento di una costante dx

ogni volta che mi sposto 1 pixel in alto:

aumento di una costante dy

9 dx + 8 dy = a1 - a0

8 p

ass

i

9 passi

Page 26: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 26/40

Scan-line rasterizer & attributi

a2

a1

a0

Primo frammento prodotto:

ha come attributo a0

ogni volta che mi sposto 1 pixel a dx:

aumento di una costante dx

ogni volta che mi sposto 1 pixel in alto:

aumento di una costante dy

9 dx + 8 dy = a1 - a0

11 p

ass

i

1 passo

dx + 11 dy = a2 - a0

risolvo nella fase diSET-UP di quel triangolo

Page 27: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 27/40

Edge functions e attributi

• Per i rastertizzatori basati su edge-functions:– useremo la regola delle aree:

V1

V2

V3

pp = a1 v1 + a2 v2 + a3 v3A2

A3

A1

3213

32

21

1 aaa AAAAA

A

A

A

A

Atot

tottottot

Page 28: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 28/40

il "diviso due" lo possimo ignorare.Tanto ci interessano

solo i rapportifra le aree

Parentesi: area di un triangolo

• In R3 posso calcolarla con il prodotto esterno

AV1

V2

V3

d1

d2

A = | d1 x d2 | /2 = | (v3 – v1) x (v2 – v1 ) | /2

e nel caso particolare di R2 ?

proviamo...

Page 29: Sistemi Multimediali II

M a r c o T a r i n i ‧ S i s t e m i M u l t i m e d i a l i I I ‧ 2 0 0 4 / 0 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a - 29/40

FlashBack: Edge functions

SI

NO

• La funzione il cui segno ci dice in quale semipiano siamo

n

q

v0=(x0, y0 )

v1=(x1, y1 )

n = ( - ( y1 -y0 ) , x1 -x0)p = (x0 , y0)

f(q) = n‧q - n‧p

v2

totale: l'edge functionper un lato è

la coord baricentricaralativa al vertice

opposto

(dopo aver diviso perla somma delle 3 edge functions)