Rendering II - rasterization

annuncio pubblicitario
Rendering II - rasterization
s
Dove si descrivono i principali metodi di alto livello utilizzati per ottenere una immagine a
partire da una descrizione degli oggetti 3D
• Rimozione delle facce nascoste
• Scan conversion
• Shading
• La rendering pipeline di OpenGL
• Rendering di altre descrizioni
Grafica al Calcolatore
Rendering II - 1
Rendering di mesh poligonali (cont.)
• Dopo che i poligoni hanno attraversato tutte le trasformazioni geometriche, sono stati
scartati quelli al di fuori del view frustum e sono stati tagliati (clipping), si può
procedere a disegnarli sul display (o viewport).
Rendering
Modeling
front−end
Geometric
processing
Transformations
Clipping
Projection
back−end
Display
Rasterization
Hidden surface removal
Shading
Scan conversion
• In questa lezione studieremo la parte finale della rendering pipeline, il back-end o
rasterization.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 2
Rimozione delle facce nascoste
• Non tutti i poligoni sopravvissuti, però, devono essere disegnati. Alcuni posono non
essere visibili dall’osservatore perché nascosti (totalmente o parzialmente) da altri
poligoni.
• Problema: dati un insieme di poligoni in 3D ed un punto di vista, si vogliono
disegnare solo i poligoni visibili (o porzioni di essi). Ogni poligono si assume essere
piatto ed opaco.
• Vi sono essenzialmente due approcci:
– object-space: l’algoritmo lavora sui poligoni stabilendo relazioni di occlusione
reciproca. Il costo è quadratico nel numero dei poligoni. Però la precisione è
elevata (precisione macchina).
– image-space: l’algoritmo stabilisce occlusioni a livello del pixel. è più veloce ma la
precisione è limitata.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 3
Back-face culling
• Non è un algoritmo generale di rimozione di facce nascoste, ma solo una tecnica utile
per eliminare subito poligoni ovviamente invisibili.
• viene effettuato nello spazio vista (o telecamera)
• l’eliminazione delle facce posteriori (o back-face culling), elimina i poligoni che, a
causa della loro orientazione, non possono essere visti.
• Se V è la direzione di vista (punta verso l’osservatore) ed Np è la normale al poligono,
è facile rendersi conto che il poligono è visibile solo se:
Np · V > 0
• Nota: se la scena è composta da un solo solido convesso, il culling risolve anche il
problema della eliminazione delle facce nasoste.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 4
Depth-Buffer
• È un algoritmo image-space, ma processa un poligono alla volta
• Opera nel 3D screen space
• Fa parte del processo di rasterizzazione
• Il depth-buffer o z-buffer è una matrice (grande come l’immagine) che contiene, per
ciascun pixel, il più piccolo valore di profondità (z) incontrato finora.
• Durante il rendering, per ciascun poligono che viene processato:
– si calcola la profondità (z) dei punti interni con interpolazione della z dei vertici
(con interpolazione scan-line, come il colore in Gouraud shading).
– se la z del pixel è inferiore a quella contenuta nello z-buffer, allora la sua intensità
viene scritta nell’immagine e la z viene viene aggiornata.
• Vantaggio: semplicità di implementazione
• Svantaggio: occupazione di memoria: servono almeno 20-32 bits per pixel per avere
una discretizzazione accettabile delle profondità.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 5
Depth-sort
• Algoritmo Object-space
• Idea: si disegnano i poligoni dal più lontano al più vicino, cosı̀ quelli lontani vengono
sovrascritti da quelli più vicini (back-to-front rendering).
• Due problemi: come ordinare i poligoni e cosa fare se si sovrappongono.
• Non sempre è possibile ordinare i poligoni per profondità. Allora bisogna spezzarli.
• Algoritmo del pittore:
– i poligoni vengono ordinati in una lista in base al vertice di massima distanza
dall’osservatore (o pseudo-profondità).
– si effettua il rendering dei poligoni della lista, dal più lontano al più vicino.
– La sovrapposizione non è considerata (si possono di disegnare immagini sbagliate).
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 6
• Depth sort: nell’algoritmo di depth sort, dopo avere ordinato i poligoni in base al
vertice di massima distanza, vengono risolte le ambiguità, eventualmente spezzando
alcune faccie e riordinando la lista.
• Dati due poligoni P e Q le cui z-estensioni si sovrappongono, è corretto disegnare P
prima di Q solo se almeno uno di questi test è vero:
1. le x-estensioni di P e Q sono disgiunte (veloce);
2. le y-estensioni di P e Q sono disgiunte (veloce);
3. Si consideri il piano contenente Q. P è contenuto
completamente nel semipiano opposto a quello dove
è l’osservatore (abbastanza veloce)?
4. Si consideri il piano contenente P. Q è contenuto completamente nello stesso semipiano dove è
l’osservatore (abbastanza veloce)?
5. Le proiezioni di P e Q sullo schemo sono disgiunte
(pesante)?
+
)*
(
%&'
"#$
!
c
°E.
Angel
• Se tutti i test falliscono, controllo se è corretto disegnare Q prima di P. Se anche
questo fallisce Q viene taliato usando il piano contenente P, ed i pezzi vengono
collocati nella lista al posto giusto.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 7
• BSP trees: Un metodo elegante per la rimozione di superfici nascoste basato su
alberi BSP.
• Nel depth sort, poiché l’ordine dipende dal punto di vista, bisogna ricalcolarlo ad ogni
spostamento.
• Non è praticabile in una applicazione interattiva (es: simulatore di volo).
• Un albero BSP, invece, una volta costruito (richiede pre-processing), consente di
ottenere rapidamente l’ordine giusto al cambiare del punto di vista.
• Costruisco un albero BSP auto-partitioning con i triangoli (divido usando i piani che
contengono i triangoli).
• Vediamo come si ottiene l’ordinamento:
– consideriamo la radice dell’albero
– il punto di vista si trova (diciamo) a destra dell’iperpiano associato alla radice.
– allora gli oggetti che stanno a sinistra sono più lontani di quelli che stanno a destra
dell’iperpiano.
– l’ordine per gli oggetti che si trovano nei due semipiani si ottiene ricorsivamente
considerando separatamente i due sottoalberi.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 8
Esempio di visualizzazione wireframe di una scena, con e senza rimozione della faccie
nascoste.
c
°Alan
Watt
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 9
Scan conversion
• La scan conversiona consiste nel disegnare i poligoni sulla immagine, riempendoli
con il colore determinato dallo shading. Questo equivale a risolvere i seguenti due
problemi.
– Determinare i pixel interessati da un segmento
– Determinare i punti interni del poligono
• Algoritmo di Bresenham. Il classico algoritmo per disegnare un segmento è quello
di Bresenham. Esso genera una sequenza connessa di pixel. Dopo avere disegnato un
pixel l’algoritmo sceglie tra i suoi 8-vicini quale accendere in base all’equazione della
retta, usando solo aritmetica intera.
• Algoritmo scan-line. è l’algoritmo standard per riempire i poligoni si chiama
algoritmo scan-line (attenzione: assieme al termine sweep line è molto usato in Grafica
e Geometria Computazionale, consideratelo un identificatore “sovraccarico”). Il
poligono viene riempito considerando una linea che lo scandisce riga dopo riga dal
basso verso l’alto. Per ciascuna riga si effettua una scansione da sinistra a destra, e
quando si incontra un edge del poligono si inizia a riempire, quando si incontra
un’altro edge si smette. Ci sono casi speciali da gestire con accortezza.
a
Alcuni usano scan conversion e rasterization come sinonimi.
conversion è parte della rasterizzazione
R. Giannitrapani, A. Fusiello
Noi manterremo la differenza: scan
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 10
• Nota: la richiesta che i pixel siano connessi è necessaria quando il segnento è disegnato
“da solo”, ma non lo è se il segnmento è il lato di un poligono da riempire con
l’algoritmo scan-line. In questo caso basta che ce ne sia uno per riga.
• Non ci occupiamo nel dettaglio di questi algoritmi, che sono ormai dei classici della
Grafica, poiché per il programmatore la scan-conversion è un processo ormai
completamente trasparente.
• Il lettore interessato potrà trovare maggiori dettagli in Buss sez. II.4 (oppure Mount,
Lecture 25 e 26, Angel, sez. 7.8,)
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 11
Interpolazione scan-line
• Vediamo come si si possono interpolare all’interno di un triangolo valori definiti sui
vertici (colore, profondità, coordinate texture,... lo vedremo)
– Dato un triangolo sui cui vertici P0 , P1 , P2 , sono definite tre quantità c0 ,c1 ,c2 .
– Se la scan line interseca due lati del triangolo in
Pa e Pb (come in figura), calcoliamo il valore ca
per interpolazione lineare tra i valori c0 e c1 , ed il
valore cb per interpolazione lineare tra i valori c1 e
c2 .
– calcoliamo quindi il valore cs per tutti i punti del
segmento di scan line (Pa ,Pb ) per interpolazione
lineare tra i valori agli estremi, ca e cb .
P1
Pa
Ps
Pb
scan line
P0
P2
• è più effieciente calcolare il valore interpolato in modo incrementale.
• Nota. L’interpolazione effettuata nello screen space è una approssimazione di un
processo che andrebbe svolto nell world space.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 12
Shading
• Gli algoritmi di shading consentono di colorare i poligoni, ovvero di assegnare un
colore ai pixels sui quali il poligono viene proiettato.
• A monte serve un modello di riflessione locale consente di assegnare un colore a
ciscun punto di una superficie (3D).
• Il modello di riflessione locale verrà trattato più avanti. Qui diciamo solo che per
calcolare il colore di un punto servono: la normale M della superficie nel punto, il
vettore V che punta verso l’osservatore (direzione di vista) ed il vettore L che punta
verso la sorgente luminosa.
• Gli algoritmi di shading sono essenzialmente schemi di interpolazione di valori
calcolati sui vertici dei poligoni, che si applicano durante il processo di scan-conversion
del poligono.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 13
• L’applicazione del modello di riflessione ai vertici di un poligono (appartenente ad una
mesh poligonale) richiede di specificare un normale nel vertice M.
• Tipicamente:
– Se la superficie da rappresentare è poliedrica (es. cubo) allora ciascun vertice di
una faccia ha la medesima normale, ovvero la normale della faccia, che si ottiene
come prodotto esterno di due lati consecutivi (non collineari) del poligono.
Attenzione che lo stesso vertice deve poter avere associate molte normali...
– Se invece la mesh è una approssimazione di una superficie soggiacente nota, a
ciascun vertice viene associata la (unica) normale alla superficie, ottenuta
dall’equazione parametrica o implicita della superficie.
– Se la mesh approssima una superficie liscia ma incognita, la normale nel vertice può
essere ottenuta prendendo la media delle normali dei poligoni adiacenti al vertice:
P
Mi
M = Pi
|| i Mi ||
• Struttura dati: ogni faccia ha una lista di vertici e di normali di vertice (quindi lo
stesso vertice può essere associato a normali diverse)
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 14
Flat shading
• Il flat shading è il più semplice di tutti: si colora una faccia con un colore.
• Se la normale fosse definita per la faccia, si colorerebbe il poligono con il colore
ottenuto usando la sua normale M ed il modello di riflessione locale.
• Poiché la normale è definita sul vertice, si calcola il colore su un solo vertice del
poligono (il primo che si incontra) usando il modello di riflessione locale, e si applica
quel colore a tutto il poligono.
• Nota: Per una superficie poliedrica, se il punto di vista e la sorgente luminosa sono
lontani, i vettori V ed L sono costanti su una faccia, quindi è corretto, secondo il
modello di riflessione locale, assegnare un solo colore a tutta la faccia.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 15
• Vantaggi: semplicità e velocità
• Svantaggi: Si percepiscono distintamente i poligoni.
Questo effetto è indesiderato quando la mesh rappresenta una superficie continua. La normale, infatti, varia
e quindi anche il colore associato a triangoli vicini.
c
°Alan
Watt
• Anche nel caso di superfici piatte, se osservatore e luce sono vicini, mentre M è
costante su tutta la superficie, V ed L cambiano da triangolo a triangolo, quindi i
triangoli hanno colori diversi, e si può percepire la transizione.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 16
c
°Alan
Watt
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 17
Gouraud shading
• È la tecnica di shading interpolative più antica, e la più semplice (veloce) che produce
una variazione dell’intensità atraverso il poligono.
– si considerano le normali di vertice;
– si calcola il colore in ogni vertice usando il modello di riflessione locale;
– si calcola l’intensità luminosa dei punti interni al poligono con interpolazioe
scan-line.
• Nota: se le normali di vertice di un poligono sono tutte uguali (come nel caso di una
superficie poliedrica), si ha lo stesso effetto del flat shading, visto che ai vertici del
poligono viene associato il medesimo colore (assumendo che i vettori V ed L siano
costanti).
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 18
• Vantaggi: attenua il salto di colore tra facce adiacenti,
è semplice e veloce (è solo poco più oneroso di flat).
• Svantaggi: Non elimina completamente la percezione
dei poligoni e non rende bene le riflessioni speculari
(highlights).
c
°Alan
Watt
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 19
c
°Alan
Watt
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 20
Phong shading
• Maggiore realismo si ottiene con il metodo di interpolazione di Phong (da non
conforndersi con il modello di riflessione locale di Phong).
• Le normali dei vertici vengono interplate all’interno del poligono (con interpolazione
scan-line + normalizzazione).
• La normale interpolata viene usata nel modello di riflessione locale per calcolare il
colore dei punti interni al poligono.
• Il metodo “cattura” le riflessioni speculari poiché usa il modello di riflessione locale
anche sui punti interni del poligono.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 21
• Vantaggio: buon realismo.
• Svantaggi:
– è circa 5 volte più lento di Gouraud. Per questo
spesso confinato all’uso off-line.
– bisogna “tirarsi dietro” le normali fino alla fase di
scan-conversion (quando vengono dipinti i poligoni). Infatti OpenGL non lo supporta per questo
motivo: le normali vengono abbandonate dopo la
proiezione prospettica
R. Giannitrapani, A. Fusiello
c
°Alan
Watt
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 22
c
°Alan
Watt
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 23
Problema dell’aliasing
• Un argomento di cui non abbiamo parlato, e di cui non parleremo, è quello
dell’aliasing
• Nella costruzione di una immagine per la natura discreta del raster display (o del
frame buffer, che è lo stesso) è inevitabile la comparsa di artefatti che degradano la
qualità dell’immagine
• L’esempio più tipico sono le “scalette” che si formano quando si disegnano linee rette
• Vi sono vari metodi di anti-aliasing e i più comuni sono basati sul calcolo di medie
di shading tra pixel vicini
(1) Aliasing
R. Giannitrapani, A. Fusiello
(2) Anti aliasing
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 24
La rendering pipeline di OpenGL
• In OpenGL i sistemi di riferimento non si mappano esattamente su quelli che abbiamo
visto precedentemente:
Spazio oggetto (locale)
Spazio mondo
Spazio vista
...
World (or standard) coord.
Eye (or camera) coord.
Modelview Matrix
Spazio 3D screen
Normalized device coord.
Projection Matrix
Spazio immagine
Viewport (or window) coord.
Viewport tranformation
• Nel nostro sistema le coordinate immagine sono 2D, mentre in OpenGL sono 3D.
• in OpenGL, nelle window coordinates la pseudo-profondità viene conservata, quindi a
rigore si tratta di uno spazio 3D.
• Per confondere ulteriormente le cose, OpenGL chiama invece screen coordinates le
coordinate immagine 2D.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 25
Storia di un poligono
• Vediamo ora sommariamente cosa accade ad un poligono quando attracersa la pipeline
grafica di OpenGL
standard coordinates
camera coordinates clip coordinates
modelview
matrix
projection
matrix
clipping
normalized device coordinates
perspective
division
window coordinates
viewport
matrix
• Una mesh viene inserita nella pipeline grafica, assieme alle normali associate ai suoi
vertici.
• I vertici vengono quindi trasformati dalla modelview matrix, che li trasforma dal
sistema di riferimento mondo al sistema di riferimento telecamera (eye).
• Qui il modello di riflessione locale viene applicato ai vertici, usando le normali, in
modo da assegnare un colore a ciascun vertice.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 26
• Andando avanti nella pipeline viene applicata la projection matrix. Le coordinate
risultanti prendono il nome di “clip coordinates”.
• Si effettua il clipping dei poligoni.
• I vertici attraversano quindi la divisione prospettica, passando da una
rappresentazione 3D ad una rappresentazione 2D + pseudo-profondità. Le normali si
perdono, ma si mantiene il colore associato ai vertici.
• Siamo in normalized device coordinates , che variano tra -1 ed 1.
• Per mappare queste nella imagine finale si applica la viewport matrix (la
pesudodepth si mappa tra 0 ed 1).
• Si procede alla scan conversion del poligono: i valori di pseudo-profondità e colore
sui vertici vengono interpolati all’interno del poligono nel corso della sua scansione per
righe (con interpolazione scan-line), per determinare
– la visibilità dei pixel interni (depth-buffer)
– il loro colore (Gouraud shading)
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 27
Rendering altre descrizioni
• Vedremo brevemente come si effettua il rendering a partire dalle altre descrizioni degli
oggetti, diverse dalla maglia poligonale.
• Vale la pena di puntualizzare qui che esistono fondamentalmente due paradigmi di
rendering
– rendering di poligoni
– ray casting
• Mentre il primo è specifico per una certa descrizione, il ray casting è trasversale
rispetto alla descrizione dei modelli (ma si applica meglio a certe descrizione che ad
altre).
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 28
Ray casting
• Vediamo ora brevemente come funziona il ray-casting un modo di effettuare il
rendering alternativo al rendering per poligoni che abbiamo visto.
• Inteso come metodo per il calcolo delle superfici nascoste, è l’algoritmo image-space (o
image precision) per eccellenza
• Nel modello proiettivo della telecamera, un raggio ottico è una semiretta uscente dal
view point C che interseca il piano vista.
view
plane
V
camera
ray
N
C
U
• Dovendo assegnare un colore ad ogni pixel, consideriamo il raggio ottico uscente da
ciascun pixel.
• Se il raggio non interseca alcun oggetto della scena allora gli assegno il colore di
background.
• Se il raggio interseca un oggetto, allora devo calcolare l’illuminazione (il colore) ed
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 29
assegnarlo al pixel.
• Per calcolare il colore uso un modello locale (p.es. Phong)
• Questo è il paradigma del ray-casting: si “gettano” (cast) i raggi uscenti da ciscun
pixel per calcolarne il colore.
• In generale, c’è un pesante onere computazionale nel calcolo delle intersezioni
raggio-oggetti.
• si possono facilmente aggiungere le ombre tracciando il raggio che connette il punto
sull’oggetto con la sorgente luminosa (shadow feeler): se esso interseca qualche oggetto
allora il punto è in ombra.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 30
Rendering di superfici parametriche
• Ci sono due possibilità:
1. Usare direttamente la descrizione parametrica
2. Convertire la superficie in una mesh poligonale e quindi seguire la pipeline grafica
per queste
• Nel primo caso si usa generalmente un algoritmo di tipo
ray casting, per scoprire quale punto della superficiie
si proietta su un dato pixel. È piuttosto complesso.
c
°E.
Angel
• Il secondo caso è il più usato. Si possono seguire due strategie:
1. Basata sull’oggetto: in tal caso il criterio di suddivisione della superficie in una
mesh poligonale è basato sulla geometria dell’oggetto
2. Basato sullo schermo: in tal caso la strategia è basata su come appare la
superficie una volta proiettata sullo schermo
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 31
Metodi basati sull’oggetto
• Si possono creare due tipi di mesh basate sull’oggetto:
1. Uniformi: la suddivisione è uniforme su tutta la superficie
2. Non uniformi: la superficie viene divisa in una mesh che può essere più fitta in
determinate zone e più rada in altre
• Per le prime è abbastanza semplice; basta dividere gli intervalli parametrici di u e di v
(vedi capitolo sulle superfici parametriche) in sottointervalli. Le intersezioni delle
isocurve parametriche lungo u e lungo v determinano i vertici di una mesh poligonale
• Per le curve abbiamo già visto metodi efficenti e semplici di suddivisione (algoritmo di
De Casteljau)
• Le seconde devono usare un criterio per stabilire quando fermare la suddivisione; ad
esempio si usa la curvatura (si continua a suddividere fin tanto che la curvatura è
apprezzabile)
• Esistono essenzialmente due problemi per le suddivisioni non uniformi di una
superficie parametrica:
1. È più costosa in termini computazionali (devo calcolare la curvatura)
2. Può introdurre giunzioni a T e quindi avere una mesh inconsistente (con buchi)
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 32
Metodi basati sullo schermo
• In genere si basano su criteri di resa grafica che tenga conto della proiezione
prospettica
1. Area piccola del patch proiettato: quando l’area, misurata in pixel, di un
patch della suddivisione diventa dell’ordine di pochi pixel, allora la suddivisione di
quel patch si interrompe (al limite quando diventa di un pixel solo)
2. Piattezza del patch proiettato: è simile al criterio di piattezza discusso sopra,
ma questa volta si considera la quantità proiettata
3. Piattezza in un intorno della silhouette (contorno): siccome è proprio sul
contorno che si può notare di più l’approssimazione poligonale, si può decidere di
suddividere maggiormente nelle vicinanze della silhouette della superficie (che
dipende dal punto di vista). La silhouette è data dai punti per cui n · l = 0 con n
normale alla superficie e l il vettore che congiunge la camera con il punto
considerato (vettore di vista)
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 33
Rendering di rappresentazioni volumetriche
• Usualmente è organizzata in un octree.
• Per effettuare il rendering si può :
1. Usare ray casting sulla rappresentazione voxelizzata (intersezione raggio-voxel è
facile).
2. Passare ad una rappresentazione poligonale della superficie (marching cubes).
Vedremo questi algoritmi in un capitolo a parte, dedicato alla visualizzazione dei dati.
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Grafica al Calcolatore
Rendering II - 34
Rendering di alberi CSG
• Per gli alberi CSG ci sono essenzialmente due possibilità:
1. Effettuare il rendering della rappresentazione CSG con ray casting (o ray tracing).
2. Convertire ad una rappresentazione volumetrica (a voxel).
R. Giannitrapani, A. Fusiello
Verona, a.a.2003-04
Scarica