informatica grafica a.a. 2010-2011 dicgim – university of palermo dipartimento di ingegneria...

55
Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione Prof. Roberto Pirrone 14 giugno 2011

Upload: riccardo-micheli

Post on 02-May-2015

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica

Rasterizzazione

Prof. Roberto Pirrone

14 giugno 2011

Page 2: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Sommario

Algoritmi per il drawingDDA

Midpoint

Tracciamento di curve

Tracciamento di linee con spessore e stile

Algoritmi per il fillingActive Edge Table

Algoritmi per il clippingCohen-Sutherland

Liang-Barsky

Sutherland-Hodgman

AntialiasingUnweighted Area Sampling

Weighted Area Sampling

Newmann-Sproull

14 giugno 2011

Page 3: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Generalità

La rasterizzazione è legata a tutto ciò che comporta il prendere una decisione sul colore di un pixel da accendere sullo schermo.

Essa è la parte finale della pipeline di rendering.

E’ inserita, di solito, nel ciclo dell’algoritmo scan-line

14 giugno 2011

Page 4: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Generalità

Nella pipeline di rendering, la rasterizzazione è affidata ai fragment o pixel shader

Questi determinano se le proprietà di colore di un pixel possono essere propagate ad un intero frammento di linea di scansione in modo da applicare gli algoritmi coinvolti in parallelo

14 giugno 2011

Page 5: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Generalità

Oltre alle tecniche legate alla determinazione di ombreggiatura, trame o trasparenza, la rasterizzazione include:

Drawing, cioè ilproblema del tracciamento di primitive bidimensionali (eventualmente proiezioni di primitive 3D)

Filling, cioè il riempimento di una figura chiusa con un colore (colore solido, sfumatura, trama, trasparenza tra più colori …)

Clipping, cioè il troncamento di una linea rispetto ad altre linee presenti (proiezioni di poligoni che si occludono, bordi esterni dell’immagine cioè del front plane del volume di vista mappato sullo schermo)

Antialiasing, cioè riduzione dell’effetto di sotto-campionamento dell’immagine generata dovuto alla risoluzione spaziale fissa data dalla dimensione del pixel.

14 giugno 2011

Page 6: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Drawing

Il problema principale è quello del tracciamento di un segmento di retta, visto che si parte da un mondo popolato da poligoni piani.

Il tracciamento avviene all’interno di una grigia regolare di pixel che hanno distanza unitaria in ascissa e in ordinata (coordinate schermo)

14 giugno 2011

Page 7: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Drawing14 giugno 2011

Page 8: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo DDA14 giugno 2011

Calcola m=(y1-y0)/(x1-x0)Se |m|<=1 allora

Poni y=y0 Ripeti per x=x0; x<=x1; x++

Accendi il punto (x,round(y))y+=m

Altrimenti Poni x=x0Ripeti per y=y0; y<=y1; y++

Accendi il punto (round(x), y)x+=(1/m)

Page 9: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo DDA Incrementale14 giugno 2011

x=x0, num=x1-x0, den=y1-y0, delta=0;

Ripeti per y=y0;y<=y1;y++Accendi il pixel di coordinate (x,y) delta+=numSe delta>den

x++; delta=0;

Page 10: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo Midpoint14 giugno 2011

Si assumerà inizialmente di considerare m>0 e, in particolare, m [0,1]. ∈

La soluzione per le altre pendenze si può ottenere semplicemente per riflessione della geometria illustrata in figura rispetto agli assi principali.

Si consideri di aver già acceso i pixel della primitiva fino al generico punto P di coordinate (xp , yp ).

Page 11: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo Midpoint14 giugno 2011

L’idea di base di questo approccio è quella di individuare, passo dopo passo, il pixel più vicino all’effettivo punto di intersezione Q tra la retta e l’ascissa x = xp + 1 corrispondente al successivo punto da accendere.

I candidati, ad ogni passo sono solo i due pixel E (xp +1, yp ) ovvero NE (xp +1, yp +1).

Per far questo si valuterà il passaggio della retta, espressa in forma implicita F (x, y) = ax + by + c = 0 , per il punto medio M (xp +1, yp +1/2)

Page 12: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo Midpoint14 giugno 2011

Ripeti per ogni punto da accendereSe F(M)>0 // la retta passa sopra M

Accendi NEAltrimenti // F(M)<=0 la retta passa per M o al di sotto

Accendi E

Page 13: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo Midpoint14 giugno 2011

L’implementazione è, anche in questo caso, incrementale.

Si consideri l’equazione della retta in forma implicita:y=mx+q=(y1 − y0)/(x1 - x0)x+q=(dy/dx)x+q.

Allora la forma esplicita si ottiene come: F (x, y) = dy ⋅x − dx⋅y + dx⋅q = ax + by + c = 0

Si definisce una variabile di decisione d

Per d > 0 si accenderà NE, mentre per d ≤ 0 si accenderà E.

L’algoritmo consiste nel calcolare incrementalmente la sola variabile di decisione.

Se ad un certo passo p+1 si accende il pixel E, allora il nuovo valore della variabile dnew, noto dold al passo precedente p, si ottiene come:

Page 14: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo Midpoint14 giugno 2011

Alternativamente, se al passo p+1 si accende il pixel NE, allora:

Il processo si inizializza calcolando il valore di partenza. Partendo da ( x0 , y0 ) calcoliamo dstart:

Per eliminare la divisione ed utilizzare solo l’aritmetica intera si può far riferimento alla nuova variabile di decisione 2d che deve solamente essere confrontata con il valore 0 ad ogni passo. Quindi:

dstart=2dy-dxdeltaNE=2dydeltaE=2(dy-dx)

Page 15: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Algoritmo Midpoint14 giugno 2011

Calcola dx=x1-x0;Calcola dy=y1-y0;Calcola dstart=2dy-dx;Calcola deltaE=2(dy-dx);Calcola deltaNE=2dy;x=x0; y=y0; d=dstart;Ripeti finché x<x1

Se d<=0 allorad+=deltaE;x++;

Altrimentid+=deltaNE;x++;y++;

Accendi il pixel (x,y)

Page 16: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Midpoint per circonferenze o ellissi

L’equazione implicita di una circonferenza F(x,y)=x2+y2-R2=0 fornisce 2 valori di y per dato x.

Si calcola il midpoint per il primo ottante x [0,R/√2] e poi si ∈replica per gli altri

14 giugno 2011

Page 17: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Midpoint per circonferenze o ellissi14 giugno 2011

Partendo dal punto di valutazione della circonferenza P=(xp,yp) si sceglie il successivo pixel da accendere sulla base dell'analisi del punto medio M (xp+1, yp − 1/2) tra i pixel E ed SE di P.

La variabile di decisione sarà definita come l’equazione implicita della circonferenza valutata in M.

Se F(M)>=0 // M giace o è esterno alla circonferenza Accendi SE

Altrimenti // F(M)<0 cioè M è interno alla circonferenza Accendi E

Page 18: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Midpoint per circonferenze o ellissi14 giugno 2011

Procedendo in maniera analoga a quanto fatto per il tracciamento delle rette, si possono calcolare i due incrementi della variabile di decisione al generico passo p+1, noto il valore dold della varibile di decisione al passo p nei due casi in cui venga acceso il pixel E o SE.

Nel caso di accensione, al passo p, di E:

mentre, nel caso di accensione di SE:

dstart si valuta nel punto (0, R) che è la sommità dell'ottante.

Per mantenere l’uso dell’aritmeticaintera, si considera h=d-1/4 hstart=1-Rh si confronta sempre con 0

Page 19: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Midpoint per circonferenze o ellissi14 giugno 2011

Page 20: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Midpoint per circonferenze o ellissi14 giugno 2011

Per un’ellissi l’algoritmo è lo stesso che per una circonferenza, a meno del valore della F(x,y). Inoltre, per ogni quadrante, si individuano due regioni separate dal punto in cui il vettore gradiente di F è inclinato a 45°. Le due regioni differiscono per i punti candidati all’accensione ad ogni passo.

Page 21: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Filling

Il riempimento può essere relativo a poligoni o a polilinee.

Il riempimento di poligoni si effettua con l’algoritmo scan-line in cui il tracciamento dei lati è fatto con il DDA incrementale sulla x, visto che ad ogni passo la linea di scansione (cioè la y) aumenta di 1.

Si vuole riempire i punti certamente interni per cui l’algoritmo è leggermente modificato per accendere i pixel immediatamente a destra (sinistra) del lato del poligono

14 giugno 2011

Page 22: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Filling

Linee curve chiuse possono essere riempite con il midpoint valutando ad ogni pixel p il segno di F(p) per stabilire se il pixel è interno o meno alla curva.

Questo è il flag in da usare nell’algoritmo scan-line

14 giugno 2011

x=x0, num=x1-x0, den=y1-y0, delta=den;

Ripeti per y=y0;y<=y1;y++Accendi il pixel di coordinate (x,y) delta+=numSe delta>den

x++; delta-=den;

Page 23: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

Quando una linea deve essere tracciata con spessore non unitario si pone un problema di riempimento che deve tenere in considerazione una serie di requisiti di natura prettamente stilistica:

Quale forma ha il pennello: rettangolare o circolare?

Quale orientazione ha un pennello non circolare?

La linea ha sempre spessore costante?

Quale forma hanno le estremità della linea?

Le metodologie da applicare sono varie e differiscono per precisione del tratto e carico computazionale.

14 giugno 2011

Page 24: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

Replicazione di righe/colonne rispetto alla primitiva di spessore unitario

Il metodo consiste nell’aggiungere sopra e sotto (a destra e a sinistra) del pixel che viene acceso dall’algoritmo di tracciamento un numero di pixel tale da raggiungere lo spessore voluto.

Problemi di variazione di spessore con la pendenza

Problemi negli spigoli in cui si incontrano due linee (estremi condivisi) che danno origine a dei buchi

Linea di spessore pari: sbilanciamento tra lato destro e sinistro

Nel caso di un arco di circonferenza si nota che questo tende ad assottigliarsi nelle zone con pendenza della tangente |m| 1. Lo ≃spessore t della primitiva, in queste regioni si riduce a t/√2.

14 giugno 2011

Page 25: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

14 giugno 2011

Page 26: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

Uso di un pennino mobile

In questo metodo, il centro dell'impronta del pennino si muove lungo la traiettoria teorica. L'impronta si sposta di conseguenza.

Si possono pensare tracce di pennino di forma qualunque, ma si deve tener conto del problema che il pennino, quando il suo centro si sposta di un pixel, ha una parte della traccia che copre una zona bianca del disegno ed un’altra che, invece, ripassa sopra zone che erano già state accese.

Si utilizzano delle strutture dati simili alle tabelle ET e AET per calcolare in anticipo quali siano le nuove linee di scansione prese in considerazione dalla traccia del pennino, quando questo si sposta: queste saranno le uniche linee soggette a riempimento.

L’approccio va bene per le rette, ma, nelle circonferenze o nelle ellissi, i tratti non orizzontali e non verticali risultano ispessiti.

14 giugno 2011

Page 27: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

14 giugno 2011

Page 28: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

14 giugno 2011

Page 29: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

Riempimento dello spazio tra due primitive di spessore unitario distanti tra loro quanto lo spessore t voluto

Con questa tecnica si tracciano due primitive di spessore unitario a distanza t/2 dalla ideale linea mediana. Non ci sono problemi di spessori pari o dispari e lo spessore non cambia con la pendenza.

Per le rette si tracciano rettangoli di lunghezza l e larghezza t che vengono riempiti come al solito.

Per le circonferenze si tracciano due cerchi concentrici di raggio R + t/2 e R - t/2. Analogamente per le ellissi due primitive concentriche di semiassi rispettivamente (a - t/2,b - t/2) e (a + t/2,b + t/2).

14 giugno 2011

Page 30: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

14 giugno 2011

Page 31: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

Tratteggio

Il tratteggio di una linea si può ottenere guidandone il tracciamento con una tecnica di mascheramento. Per semplicità si farà riferimento ad un segmento di retta, ma il procedimento si estende immediatamente anche ad altri tipi di linea.

Lo stile del tratteggio è codificato con una costante intera di 16 o 32 bit che, come maschera binaria, ha dei bit 1 in corrispondenza dei pixel del tratto da accendere e dei bit 0 in corrispondenza dei pixel da lasciare spenti.

“tratto e punto” in 32 bit: 11111001100111111111100110011111

14 giugno 2011

Page 32: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Tracciamento di primitive con spessore e stile del tratto

Ogni bit comanda l'accensione di un tratto di linea di lunghezza data, in dipendenza di un fattore di scala alla quale vogliamo ripetere il tratto.

Sia s la scala alla quale si vuole disegnare una iterazione dello stile del tratteggio e sia t l’intero a 32 bit che codifica lo stile:

Ripeti per x=x0, i=0; x<=x1; x++, i++Se t>>((i/s)%(32)) & 1 == 1

Accendi il pixel alla coordinata (x,y) // y determinato dall’algoritmo di //tracciamento

14 giugno 2011

Page 33: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping

Il problema del clipping è intrinsecamente 3D, ma sorge anche nel 2D quando bisogna determinare l’estensione di curve proiettate sullo schermo che possono

Intersecarsi tra loro

Essere interrotte dai bordi della viewport

Il clipping verrà analizzato perRette

Poligoni

Curve

14 giugno 2011

Page 34: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette

Algoritmo di Cohen-Sutherland

Si basa sull’uso di un test per effettuare l’accettazione o la reiezione banale delle linee che siano interamente visibili o interamente invisibili rispetto a una regione rettangolare. Siano (xmin,ymin) e (xmax, ymax) i punti che definiscono la regione di visibilità, allora il piano può essere diviso in 9 regioni dalle 4 rette che la delimitano.

Ad ogni regione viene assegnato un codice a 4 bit che risulta dal test effettuato per i punti (x,y) di ogni regione con le 4 rette:

1° bit=1 per y > ymax

2° bit=1 per y < ymin

3° bit=1 per x > xmax

4° bit=1 per x < xmin

14 giugno 2011

Page 35: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette14 giugno 2011

Page 36: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette14 giugno 2011

RipetiValuta i codici dei due estremiSe entrambi i codici sono nulli

La linea è totalmente visibile // caso ABAltrimenti se l’AND bit a bit degli estremi è diverso da 0

La linea è totalmente invisibile // caso CD: si tratta di // linee che sono tutte in una // delle 4 regioni definite dai // bit del codice perché gli // estremi hanno un bit 1 nella // stessa posizione)

Altrimenti Si considera il primo estremo con codice diverso da 0

// caso EF e IL: se un estremo ha codice pari a 0// allora è visibile

Si effettua l’intersezione con la retta corrispondente al primo bit 1 del codice // punto H in EF e punto M in ILSi considera il nuovo segmento che va dal punto intersezione al secondo estremo e si calcola il nuovo codice per l’intersezione

Finché non ricadi in uno dei due casi banali

Page 37: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette

Algoritmo di Cyrus-Beck

E’ il caso bidimensionale dell’intersezione retta-poligono in 3D

Per ogni lato della viewport si considera una geometria semplificata

14 giugno 2011

Page 38: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette

Algoritmo di Cyrus-Beck

14 giugno 2011

Page 39: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette14 giugno 2011

Ripeti per ogni segmento che deve essere troncatoSe P1== P0 esci // linea degenereAltrimenti tE=0, tL=1 // gli estremi del segmento: non

// ha senso andare oltreRipeti per ogni lato da intersecare

Calcola numeratore e denominatore di tSe −Ni⋅D == 0 // linea parallela al lato di clipping

Se Ni [⋅ P0 − PEi]>0 // lato esterno//segmento parallelo ed esternoEsci

Altrimentirestituisci gli estremi P0 e P1

Altrimenti se −Ni⋅D > 0 tE=max(t ,tE)

AltrimentitL=min(t ,tL)

Se tE > tL esci // falso positivo: un punto potenzialmente // entrante è successivo ad un punto potenzialmente // uscente, quindi la linea è esterna Altrimenti

restituisci gli estremi corrispondenti a tE e tL

Page 40: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di rette

Liang-BarskyAlgoritmo semplificato• Tiene conto delle reali orientazioni delle normali Ni

• Determina delle formule semplici di calcolo di t• Non necessita di un posizionamento particolare

per PEi

14 giugno 2011

Ni PEi P0-PEi t

x=xmin {-1,0} (xmin,y) (x0 - xmin, y0 – y) -(x0 - xmin)/(x1 – x0)

x=xmax {1,0} (xmax,y) (x0 - xmax, y0 – y) -(x0 - xmax)/(x1 – x0)

y=ymin {0,-1} (x,ymin) (x0 - x, y0 – ymin) -(y0 - ymin)/(y1 – y0)

y=ymax {0,1} (x,ymax) (x0 - x, y0 – ymax) -(y0 - ymax)/(y1 – y0)

Page 41: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di poligoni

Sutherland-Hodgman

Estensione del clipping di un segmento alla lista dei segmenti di un poligono

Il poligono da troncare è espresso come una lista di vertici v1,v2,...,vn e viene scandito da vn a v1 e di nuovo a vn per ogni lato del rettangolo di clipping (o della viewport)

14 giugno 2011

Page 42: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di poligoni14 giugno 2011

I test di interno/esterno e di parallelismo si possono condurre con l’approccio di Liang-Barsky

Page 43: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di Poligoni14 giugno 2011

Ripeti per ogni lato del rettangolo di clipping listaout=nulls=listain(lunghezza(listain))

Ripeti per l che va da 1 a lunghezza(listain)p=listain(l)Se s è esterno al lato

Se p è internoCalcola l’intersezione ilistaout=listaout+i listaout=listaout+p

AltrimentiSe p è interno

listaout=listaout+pSe p è esterno

Calcola l’intersezione ilistaout=listaout+i

s=p Finelistain=listaout

Fine

Page 44: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Clipping di circonferenze o ellissi

Si effettua una serie di test semplici di accettazione e reiezione rispetto ai lati di clipping

Con il rettangolo includente

Con ogni suo quadrante

Con ogni singolo ottante

I test sono dei clipping poligonali

L’intersezione è calcolata solo per i lati di interesse

14 giugno 2011

Page 45: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

Per effetto della dimensione finita (e non infinitesima) dei pixel dei sensori di acquisizione e dei display, è possibile riprodurre le immagini inseguendo solo fino ad un certo punto le brusche variazioni di luminosità e/o colore, cioè le elevate frequenze spaziali.

Come conseguenza di questa limitazione, i profili degli oggetti disegnati in un’immagine presentano delle “seghettature”: a questo fenomeno si da il nome di aliasing ed è una caratteristica tipica della digitalizzazione di qualunque segnale analogico, anche temporale, nel momento in cui vengono fissati i parametri di campionamento.

14 giugno 2011

Page 46: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

Approccio Unweighted Area Sampling (UAS)

Si pensi al display come ad una disposizione regolare di tessere quadrate o rettangolari. Anche la retta (linea) più sottile, ha un suo spessore = 0 e quindi possiamo pensarla come un rettangolo pieno (o come una striscia curvilinea).

14 giugno 2011

Page 47: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

L'idea dell'antialiasing di tipo UAS è quella di accendere tutti i pixel interessati anche marginalmente dal rettangolo che rappresenta analiticamente il segmento di retta di dato spessore o, più in generale, la striscia che rappresenta la generica linea curva.

In questo approccio, i pixel vengono accesi con un'intensità "proporzionale" alla porzione della loro area che è interessata dalla linea. Così, da un punto di vista percettivo, inganna l'occhio e fa percepire contorni continui e non seghettati.

Analogamente si può dire che, più distante è il centro del pixel dalla linea, minore è l'intensità con cui viene acceso: il pixel sarà spento se è completamente esterno alla linea.

14 giugno 2011

Page 48: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

La tecnica UAS non è apprezzabile da un punto di vista percettivo perché gli estremi della primitiva tendono a “sbordare” in quanto pixel molto distanti dal centro della linea, ma con una piccola sovrapposizione con essa risultano accesi.

14 giugno 2011

Page 49: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

Approccio Weighted Area Sampling (WAS)

Si sopperisce ai difetti dell’approccio UAS tenendo conto anche della distanza del centro del pixel dalla traccia teorica della primitiva, pensata come priva di spessore.

Le due tecniche UAS e WAS sono delle vere e proprie tecniche di filtraggio dell’immagine e possono essere spiegate ricorrendo al concetto di filtraggio spaziale tramite convoluzione di un opportuno nucleo con ogni singolo pixel e non con un vicinato.

14 giugno 2011

Page 50: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

Sia Imax l’intensità massima di accensione di un pixel in assenza di antialiasing.

Sia L⊂R2 l’insieme dei punti della primitiva. Ogni pixel che ha intersezione non vuota con L sarà acceso con un’intensità I=Imax*Ws ottenuto come filtraggio con un opportuno nucleo di convoluzione W(τ,ν) centrato nel pixel p(xp,yp) con una funzione dA(x,y) che esprime l’area ricoperta dalla primitiva.

Per una scelta opportuna del nucleo di convoluzione, le tecniche UAS e WAS sono casi particolari del medesimo approccio.

14 giugno 2011

Page 51: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing14 giugno 2011

Con la modalità WAS, a differenza della UAS, aree di pixel ugualmente interessate dalla primitiva non sono in generale accese con la stessa intensità. I pixel i cui centri sono più vicini al confine teorico della primitiva sono accesi più intensamente degli altri, a parità della porzione di area interessata.

Le estremità della linea, che sono pixel parzialmente coperti, ma con il centro vicino o interno alla linea stessa, sono accese più intensamente che nel UAS e forniscono una impressione visiva di terminazione netta.

Page 52: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

Algoritmo di Goupta-Sproull

L’algoritmo di Goupta e Sproull si integra con il midpoint per la conversione di linee di qualunque spessore con antialiasing.

Questo approccio è ancora basato sull’uso di una tabella (ℑ D,t) di valori precalcolati di applicazione del filtro di antialiasing per diversi valori della distanza D del pixel dal centro della primitiva e per diversi valori dello spessore t della linea.

14 giugno 2011

Page 53: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing

Il problema si riduce semplicemente a modificare l’algoritmo midpoint per calcolare, dato lo spessore della linea, la distanza dal suo centro del pixel da accendere e di tutti i suoi vicini in riga o colonna che ne sono comunque toccati.

In quanto segue si farà riferimento a dei filtri con supporto circolare di raggio R=1. In queste condizioni, una linea di spessore unitario attraversa tipicamente 3 pixel per colonna (|m|<1) con un minimo di 2 ed un massimo di 5.

14 giugno 2011

Page 54: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing14 giugno 2011

Page 55: Informatica grafica a.a. 2010-2011 DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Rasterizzazione

Informatica grafica a.a. 2010-2011

DICGIM – University of Palermo

Antialiasing14 giugno 2011