Sistemi Multimediali II Marco Tarini Università dellInsubria 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 asdad asdsad fadf asdf asdf asdf asd asdfasdf asd fasdf asdasdf asd asdf asd asdad asdsad fadf asdf asdf asdf asd asdfasdf asd fasdf asdasdf asd asdf asd
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 / 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
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 / 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? V1V1 V2V2 con o o
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 / 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? V1V1 V2V2 posso definirlo cosi': un segmento di vertici v 1 e v 2 é l'insieme di tutti i punti x esprimibili come x = a v 1 + b v 2 a e b scalari positivi con a + b = v v v v v v 2 1 v v v v v v 2 x è una interpolazione di v1 e v2
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 / 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 V1V1 V2V2 x = a v 1 + b v 2 a e b scalari positivi con a + b = 1 x interpolazione: V1V1 V2V2 x = a v 1 + b v 2 a e b scalari positivi con a + b = 1 x estrapolazione: (quindi 0 a 1 e 0 b 1 )
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 / 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? V1V1 V2V2 con o o V3V3 é l'insieme di tutti i punti x tali che...
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 / 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? V1V1 V2V2 V3V3 p q q = k 1 v 1 + k 2 v 2 k 1 + k 2 = 1 k 1,k 2 > 0 p = h 1 v 3 + h 2 q h 1 + h 2 = 1 h 1,h 2 > 0 esercizio: sostituiamo e...
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 / 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? V1V1 V2V2 V3V3 un triangolo di vertici v 1 v 2 v 3 é l'insieme di tutti i punti x esprimibili come x = a 1 v 1 + a 2 v 2 + a 3 v 3 a 1 a 2 a 3 scalari positivi a 1 + a 2 + a 3 = 1
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 / 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... V1V1 V2V2 V3V3 0 v v v 3 0 v v v v v v 3 (il baricentro del triangolo) 0.5 v v v 3 (punto in mezzo al lato v 1 v 2 ) 0.65 v v v 3
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 / 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... V1V1 V2V2 V3V3 dati a 1 a 2 a 3 scalari tali positivi con a 1 + a 2 + a 3 = 1 x = a 1 v 1 + a 2 v 2 + a 3 v 3 é un punto del triangolo
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 / 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... V1V1 V2V2 V3V3 dato un punto p nel triangolo esistono unici a 1 a 2 a 3 tali che p = a 1 v 1 + a 2 v 2 + a 3 v 3 e a 1 a 2 a 3 sono positivi e a somma 1 diciamo che a 1 a 2 a 3 sono le coordinate baricentriche di p
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 / 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 V1V1 V2V2 V3V3 p p ha coordinate baricentriche (a 1 a 2 a 3 ) sse p = a 1 v 1 + a 2 v 2 + a 3 v 3
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 / 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 a 3 Kg a 2 Kg Le coordinate baricentriche Interpretazione fisica (storica) (buffa) V1V1 V2V2 V3V3 p ha coordinate baricentriche (a 1 a 2 a 3 ) sse é il baricentro di: p a 1 Kg
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 / 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 V1V1 V2V2 V3V3 p 1 1 p = v 1 + h ( v 2 -v 1 ) + k ( v 3 -v 1 ) h k
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 / 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à V1V1 V2V2 V3V3 p f(p) f( v 1 ) f( v 2 ) f( v 3 ) trasformazione affine f (proiezione compresa) p ha coord. baricentriche a,b,c nel triangolo v 1 v 2 v 3 f(p) ha coord. baricentriche a,b,c nel triangolo f(v 1 ) f(v 2 ) f(v 3 )
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 / 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 baricentriche come rapporti fra aree Quali sono le coord baricentriche di un punto p? V1V1 V2V2 V3V3 p p = a 1 v 1 + a 2 v 2 + a 3 v 3 A2 A3 A1
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 / 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
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 / 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 Frammenti & attributi interpolati Vertici & loro attributi pixel finali (nello screen-buffer) Vertici proiett & attributi computati rasterizer triangoli computazioni per frammento set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice rasterizer triangoli set- up associamo degli attributi ai vertici che mandiamo es: colore RGB qui gli attributi possono subire varie compuatzioni ogni frammento avrà una valore interpolato degli attributi per vertice qui gli attributi vengono interpolati
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 / 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
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 / 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 R 2 V1V1 V2V2 V3V3 p f(p) f( v 1 ) f( v 2 ) f( v 3 ) trasformazione affine f (proiezione compresa) p ha coord. baricentriche a,b,c nel triangolo v 1 v 2 v 3 f(p) ha coord. baricentriche a,b,c nel triangolo f(v 1 ) f(v 2 ) f(v 3 ) NOTA: vero solo per le trasformazioni affini. E' solo una approssimazione per la distorsione prospettica
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 / 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 frammento interpolando gli attributi per vertice lungo segmenti (linearmente) Equivalente ad usare le coordinate baricentriche del frammento come pesi
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 / 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 v0v0 v2v2 v1v1 p q f p interpolato fra a 2 e a 1 q interpolato fra a 0 e a 1 f interpolato fra p e q a2a2 a1a1 a0a0
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 / 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 v0v0 v2v2 v1v1 p q f a 2, b 2, c 2... a 1, b 1, c 1... a 0, b 0, c 0... Ottimaizzatione: si puo' calcolare incrementalme. vediamo come
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 / 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 a2a2 a1a1 a0a0 Primo frammento prodotto: ha come attributo a 0 ogni volta che mi sposto 1 pixel a dx: aumento di una costante d x ogni volta che mi sposto 1 pixel in alto: aumento di una costante d y
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 / 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 a2a2 a1a1 a0a0 Primo frammento prodotto: ha come attributo a 0 ogni volta che mi sposto 1 pixel a dx: aumento di una costante d x ogni volta che mi sposto 1 pixel in alto: aumento di una costante d y 9 d x + 8 d y = a 1 - a 0 8 passi 9 passi
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 / 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 a2a2 a1a1 a0a0 Primo frammento prodotto: ha come attributo a 0 ogni volta che mi sposto 1 pixel a dx: aumento di una costante d x ogni volta che mi sposto 1 pixel in alto: aumento di una costante d y 9 d x + 8 d y = a 1 - a 0 11 passi 1 passo d x + 11 d y = a 2 - a 0 risolvo nella fase di SET-UP di quel triangolo
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 / 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: V1V1 V2V2 V3V3 p p = a 1 v 1 + a 2 v 2 + a 3 v 3 A2 A3 A1
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 / 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 rapporti fra le aree Parentesi: area di un triangolo In R 3 posso calcolarla con il prodotto esterno A V1V1 V2V2 V3V3 d1d1 d2d2 A = | d 1 x d 2 | /2 = | (v 3 – v 1 ) x (v 2 – v 1 ) | /2 e nel caso particolare di R2 ? proviamo...
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 / 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 v 0 =(x 0, y 0 ) v 1= (x 1, y 1 ) n = ( - ( y 1 -y 0 ), x 1 -x 0 ) p = (x 0, y 0 ) f(q) = nq - np v2v2 totale: l'edge function per un lato è la coord baricentrica ralativa al vertice opposto (dopo aver diviso per la somma delle 3 edge functions)