L'algoritmo Free Span Buffer In grafica 3D uno dei punti da affrontare e' la rimozione delle superfici
nascoste. Con questo termine si intende il fare in modo che oggetti che
si trovano vicini alla camera "nascondano" oggetti che si trovano
lontani. Questo problema si divide a sua volta in due sottoproblemi
distinti: innanzi tutto bisogna stabilire esattamente "cosa nasconde
cosa" (il problema delle priorita') e in secondo luogo bisogna anche
capire "come" fare in modo che un oggetto vicino nasconda un oggetto
lontano.
In queste note non mi occupero' del primo problema (su cui eventualmente
spendero' qualche parola in un altro testo) e assumero' che esista un
ordinamento gia' stabilito dei poligoni da disegnare p1,...,pn
(con pi che copre pj se i>=j). Questo significa che sono state
fatte ipotesi o elaborazioni addizionali in quanto come mostra la figura
seguente non e' possibile trovare un simile ordinamento nel caso
generale.
Sovrapposizione ciclica
Questo semplice esempio mostra come non sia possibile nel caso
generale trovare un ordinamento di disegno dei poligoni.
|
Algoritmi pittore e z-buffer Un primo approccio che viene utilizzato e' chiamato "l'algoritmo del
pittore" e consiste nel disegnare tutti i poligoni partendo dall'ultimo
e arrivando al primo. Questo algoritmo e' sicuramente molto semplice
ma ha lo svantaggio di fare molte elaborazioni il cui risultato viene
poi eliminato. Per ogni punto di ogni poligono vengono infatti calcolate
la luminosita', le texture, gli effetti di fog ... per poi magari
coprire il tutto con un poligono piu' vicino alla camera.
Una parziale soluzione, che inoltre permette di lavorare anche con
ordinamenti approssimativi, e' quella dello z-buffer che consiste nel
mantenere per ogni pixel un valore di profondita': durante il disegno
un pixel viene effettivamente disegnato sullo schermo solo se la
profondita' del pixel gia' presente sullo schermo e' superiore e in
caso contrario e' possibile risparmiare tutti i calcoli relativi al
pixel che risulta nascosto accennati prima (con l'algoritmo z-buffer
conviene disegnare front-to-back in modo da disegnare subito i poligoni
coprenti per risparmiare calcoli su poligoni successivi). La semplicita'
dell'algoritmo z-buffer permette di implementare questa funzionalita'
direttamente a livello di scheda video; inoltre il forte abbassamento
del prezzo della RAM ha permesso di utilizzare questa soluzione a costi
relativamente contenuti.
| |
|