Algoritmi di rasterizzazione

La rasterizzazione e un processo che dato un poligono in coordinate schermo colora i pixel di quel dato poligono con un colore, esistono due processi principali:

  • rasterizzazione per mezzo di coordinate baricentriche
  • rasterizzazione per mezzo di scan conversion

Inoltre queste vengono differenziate in base a come il colore del pixel viene determinato

  • colore omogeneo
  • texture (immagine bidimensionale da applicare sull’oggetto)

Sistema di riferimento baricentrico

Dato un poligono in coordinate schermo definito come segue

allora e possible definire un nuovo sistema di riferimento basato sui vertici del poligono

in questo sistema di riferimento tutti i punti vengono rappresentati da combinazioni affini dei 3 vertici del poligono

In coordinate baricentriche si ha che se un punto fa parte del poligono allora e vero che di conseguenza determinare se un punto fa parte del poligono si riduce a un confronto

if(a >=0 && b >=0 && c >= 0){
	console.log("punto del poligono")
}else{
	console.log("punto non del poligono")
}

Inoltre questo approccio può essere implementato in parallelo per mezzo di architetture SIMD

Recupero dell’informazione colore

Inoltre le coordinate baricentriche possono essere utilizzate per recuperare anche l’informazione del colore di un dato punto, date le coordinate baricentriche l’informazione colore può essere recuperata dallo spazio RGB dei colori

Scan conversion

L’idea base di questo algoritmo consiste nell’identificare le sequenze orizzontali di pixel che fanno parte del triangolo, l’algoritmo si divide in due fasi

  • identificazione delle intersezioni della linea con i lati del triangolo
  • colorazione dei pixel fra le due intersezioni

Per identificare il prossimo pixel sulla linea si utilizza l’algoritmo di linea incrementale

Texture mapping

Il processo di texture mapping si occupa di applicare a un dato poligono un immagine sulla sua superficie, sfruttando un mapping tra i vertici di un poligono 3D e un immagine

Di conseguenza il problema si riduce ad assegnare a ogni pixel il corretto punto della texture in questione, questo può essere fatto per mezzo delle coordinate baricentriche, costruendo un mapping fra le coordinate del poligono e le coordinate in spazio texture

Tuttavia non e detta che dato un punto del poligono ci sia una corrispondenza con un pixel esatta della texture

E necessario quindi determinare il colore da assegnare a un dato punto del triangolo,ci sono diverse strategie disponibili:

Nearest neighbor

Il colore di un dato punto e dato dal pixel della texture più vicino alle coordinate del punto

Bilinear interpolation

Vengono considerati i 4 punti più vicini al punto Le cui componenti colore vengono pesate per determinare il colore del punto

data la seguente interpolazione lineare in una dimensione come segue

la interpolazione bilineare e di conseguenza realizzata come un interpolazione lineare di due interpolazioni lineari

di conseguenza si ha che:

con:

nel caso in cui il punto si trovi al centro dei 4 pixel piu vicini l'interpolazione bilineare si riduce a una media dei 4 pixel

Bi-cubic interpolation

Metodologia che prende in considerazione i pixel più vicini al punto in questione, le cui componenti vengono pesate per mezzo dell’interpolazione colore

e il compromesso più ragionevole tra calcolo e qualità nonché quello più utilizzato in molti software di grafica

PREVIOUS NEXT