Sistemi Multimediali II Lezione 8 attributi per vertice
Sistemi Multimediali II Lezione 8: attributi per vertice Università dell’Insubria asdad asdsad fadf asdf asd fasdf asd asdf asd Facoltà di Scienze MFN di Varese asdad asdsad fadf asdf asd fasdf asd asdf asd Corso di Laurea in Informatica Anno Accademico 2004/05 asdad asdsad fadf asdf asd fasdf asd asdf asd Marco Tarini
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 ‧ 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
Cosa è un segmento? V 2 V 1 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 ‧ 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? 0. 0 v+1 0. 9 + 1 vv 2 0. 1 v 0. 66 v 1 +1 0. 33 v 2 2 0. 5 v 1 + 0. 5 v 2 0. 75 v 1 + 0. 25 v 2 ≪ x è una interpolazione V 2 V 1 1 v 1 + 0 v 2 di v 1 e v 2 ≫ 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=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 ‧ 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
Parentesi notazione interpolazione: x = a v 1 + b v 2 V 1 x V 2 a e b scalari positivi con a + b = 1 (quindi 0 ≤ a ≤ 1 e 0 ≤ b ≤ 1 ) estrapolazione: V 1 V 2 x x = a v 1 + b v 2 a e b scalari positivi con a + 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 ‧ 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
Cosa è un triangolo? V 3 V 2 V 1 con o o ≪ é 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 ‧ 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? V 3 p q V 1 V 2 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 ‧ 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? V 3 V 2 V 1 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 ‧ 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
Per esempio. . . 0 v 1 + 0 v 2 + 1 v 3 0. 33 v 1 + 0. 33 v 2 +0 0. 33 v 1 + v 13 v 2 + 0 v 3 (il baricentro del triangolo) V + 0. 5 v 3 v 2 + 0 v 3 0. 65 v 1 +3 0. 20. 5 v 2 v+1 0. 15 (punto in mezzo al lato v 1 v 2) V 2 V 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 ‧ 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
Ebbene. . . V 3 V 2 V 1 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 ‧ 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
Ma anche. . . V 3 V 2 dato un punto V 1 p nel triangolo → 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 esistono unici 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 ‧ 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
Le coordinate baricentriche • Concetto FONDAMENTALE V 3 p V 2 V 1 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 ‧ 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 Interpretazione fisica (storica) (buffa) p ha coordinate baricentriche (a 1 a 2 a 3) sse é il baricentro di: V 3 V 1 a 3 Kg a 1 Kg p V 2 a 2 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 ‧ 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
Le coordinate baricentriche Interpretazione geometrica 1 V 3 p k 1 V 2 h p = v 1 + h ( v 2 -v 1 ) + k ( v 3 -v 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 ‧ 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
Coordinate baricentriche: improtante proprietà f( v 3 ) V 3 p f( v 2 ) trasformazione affine f (proiezione compresa) f(p) V 2 V 1 p ha coord. baricentriche a, b, c nel triangolo v 1 v 2 v 3 f( v 1 ) 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 ‧ 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
Le coordinate baricentriche come rapporti fra aree • Quali sono le coord baricentriche di un punto p? V 3 A 1 A 2 p A 3 V 1 V 2 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 ‧ 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
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 ‧ 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
associamo degli attributi ai vertici che mandiamo es: colore RGB rasterizer punti setup rasterizer triangoli setup rasterizer segmenti qui gli attributi possono subire varie compuatzioni qui gli attributi vengono interpolati computazioni per frammento setup Frammenti & attributi interpolati Vertici proiett & attributi computazioni per vertice & loro attributi Vertici Attributi nel pipeline pixel finali (nello screen-buffer) ogni frammento avrà una valore interpolato degli attributi per vertice 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 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 ‧ 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 • Idea: NOTA: vero solo per le trasformazioni affini. E' solo una approssimazione per la distorsione prospettica – lavoriamo su R 2 f( v 3 ) V 3 p f( v 2 ) trasformazione affine f (proiezione compresa) f(p) V 2 V 1 p ha coord. baricentriche a, b, c nel triangolo v 1 v 2 v 3 f( v 1 ) 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 ‧ 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
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 ‧ 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 • Interpoliamo gli attributi: – linearmente sui bordi – e in ogni scanline, tra gli estremi dello span v 1 a 1 p v 2 a 2 f p interpolato fra a 2 e a 1 q q interpolato fra a 0 e a 1 f interpolato fra p e q v 0 a 0 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 • Lo stesso per tutti gli attributi v 1 a 1, b 1, c 1. . . p v 2 a 2, b 2, c 2. . . f Ottimaizzatione: si puo' calcolare incrementalme. vediamo come → q v 0 a 0, b 0, c 0. . . 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 Primo frammento prodotto: ha come attributo a 0 ogni volta che mi sposto 1 pixel a dx: aumento di una costante a 2 a 1 ogni volta che mi sposto 1 pixel in alto: aumento di una costante dx dy a 0 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 Primo frammento prodotto: ha come attributo a 0 ogni volta che mi sposto 1 pixel a dx: aumento di una costante a 2 8 passi a 1 ogni volta che mi sposto 1 pixel in alto: aumento di una costante dx dy 9 d x + 8 dy = a 1 - a 0 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 ‧ 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 Primo frammento prodotto: ha come attributo a 0 ogni volta che mi sposto 1 pixel a dx: aumento di una costante a 2 11 passi a 1 a 0 1 passo ogni volta che mi sposto 1 pixel in alto: aumento di una costante dx dy 9 d x + 8 dy = a 1 - a 0 dx + 11 dy = 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 ‧ 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
Edge functions e attributi • Per i rastertizzatori basati su edge-functions: – useremo la regola delle aree: V 3 A 1 A 2 p = a 1 v 1 + a 2 v 2 + a 3 v 3 p A 3 V 2 V 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 ‧ 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
Parentesi: area di un triangolo • In R 3 posso calcolarla con il prodotto esterno V 3 e nel caso particolare di R 2 ? proviamo. . . d 1 A V 1 d 2 V 2 il "diviso due" lo possimo ignorare. Tanto ci interessano solo i rapporti fra le aree A = | d 1 x d 2 | /2 = | (v 3 – v 1) x (v 2 – v 1 ) | /2 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
Flash. Back: Edge functions • La funzione il cui segno ci dice in quale semipiano siamo n v 0=(x 0, y 0 ) SI v 2 NO q v 1=(x 1, y 1 ) p = (x 0 , y 0) n = ( - ( y 1 -y 0 ) , x 1 -x 0) f(q) = n‧q - n‧p totale: l'edge function per un lato è la coord baricentrica ralativa al vertice opposto (dopo aver diviso per la somma delle 3 edge functions) 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
- Slides: 29