Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Effetti fotorealistici
9 giugno 2011 Effetti fotorealistici Prof. Roberto Pirrone
2
Sommario Generalità Texture mapping Bump mapping Ombre proiettate
9 giugno 2011 Generalità Texture mapping Algoritmo di Fleibush-Levoy-Cook Mip-map Summed area table Bump mapping Ombre proiettate Algoritmo scan-line Algoritmo di Atherton-Wieler-Greenberg Volumi d’ombra Z-buffer shadow Determinazione delle aree di penombra Trasparenza Blending Screen-door Algoritmo di Mammen
3
Generalità 9 giugno 2011 Una scena resa solamente attraverso lo shading presenta un grado di realismo modesto. Per ottenere un elevato grado di realismo si può: Applicare delle trame o tessiture alle superfici Creare rugosità sulla superficie Applicare le ombre tra gli oggetti Tenere conto della trasparenza delle superfici Tener conto delle riflessioni tra oggetti
4
Texture mapping 9 giugno 2011 Il processo di texture mapping consiste nell’applicare un’immagine (texture map) definita in un proprio spazio di coordinate (u,v) sui poligoni della superficie, eventualmente ripetendola su tutta la superficie. Per diminuire l’onere computazionale si effettua il mapping inverso dai pixel dell’immagine a quelli dello spazio della texture map. La trasformazione complessiva tiene conto della proiezione sullo schermo e di una legge di mappatura della tetxure su un singolo poligono (definizione esplicita delle texture coordinates di ogni vertice).
5
Texture mapping 9 giugno 2011
6
Texture mapping 9 giugno 2011 Il procedimento di mapping inverso è analogo a quello visto per le tecniche di warping. L’interpolazione è basata sul filtraggio spaziale dell’immagine di ingresso scegliendo un’opportuna maschera di convoluzione per pesare i pixel della texture che ricadono nel quadrilatero in cui il pixel viene trasformato.
7
Algoritmo di Fleibush-Levoy-Cook
9 giugno 2011
8
Algoritmo di Fleibush-Levoy-Cook
9 giugno 2011 Si sceglie una maschera di convoluzione, tipicamente molto piccola: di solito si usa una gaussiana con supporto circolare e raggio 2 pixel. Ripeti per ogni pixel dello spazio destinazione interno all’immagine trasformata Mappa nello spazio sorgente tutto il rettangolo includente il supporto del filtro centrato sul pixel Considera il minimo rettangolo che include il quadrilatero ottenuto nello spazio sorgente Il rettangolo viene sottoposto a clipping con gli estremi dell’immagine sorgente // texture Trasforma i pixel dell’immagine sorgente interni al rettangolo clippato, usando la trasformazione diretta, verso l’immagine nello spazio destinazione ottenendo un quadrilatero Scarta i pixel che ricadono all’esterno del rettangolo includente il supporto del filtro centrato sul pixel destinazione Se il rettangolo includente il supporto del filtro ha intersezione non vuota con l’immagine stessa, allora il valore del pixel si otterrà da quello calcolato, in proporzione al volume del filtro che è sotteso dall’area di intersezione tra l’immagine ed il rettangolo includente Fine Ripeti
9
Mip map 9 giugno 2011 Una mip-map è una struttura dati che conserva la mappa di tessitura scalata a vari livelli. Williams modifica l’algoritmo di Fleibush-Levoy-Cook ed individua la zona della mip map (e quindi scelta l'immagine da utilizzare) che più corrisponde al numero dei pixel della texture che ricadono nella trasformazione inversa del rettangolo includente, il filtro centrato nel pixel.
10
Mip map 9 giugno 2011 Williams usa un parametro D per definire la dimensione della mappa di da usare in corrispondenza ad un pixel che si mappa in un rettangolo di dimensioni ∂u x ∂v. D=max{ [(∂u/∂x)2+(∂v/∂x)2]1/2, [(∂u/∂y)2+(∂v/∂y)2]1/2 } ∂x e ∂y sono le dimensioni del pixel, in genere unitarie. Poiché D è continuo e le mip-maps sono discrete, si interpola linearmente tra una risoluzione e l’altra.
11
Summed area table 9 giugno 2011 Metodo sviluppato da Crow per effettuare un filtraggio veloce. Il valore filtrato è uguale alla somma dei valori della texture che ricadono nel rettangolo includente il filtro.
12
Metodi di texture mapping a confronto
9 giugno 2011 Campionamento diretto della texture; (b) mip-map;(c) Summed area table; (d) mip-map e filtro gaussiano a supporto ellittico
13
Bump mapping 9 giugno 2011 Il bump mapping è una tecnica per ottenere delle rugosità sulla superficie e consiste nel perturbare la distribuzione delle normali secondo una mappa di scostamenti verticali (bump map) B(u,v). Blinn propone un metodo di ricalcolo delle normali perturbate a partire dalle derivate parziali Bu e Bv dello scostamento applicato.
14
Ombre 9 giugno 2011 L’inserimento di un’ombra nell’equazioni di illuminamento consiste nel porre dei coefficienti Si che possono valere 1 o 0 per ogni sorgente luminosa. Si=1 implica che il punto è illuminato dalla i-esima sorgente, altrimenti no.
15
Algoritmi per le ombre 9 giugno 2011 Gli algoritmi per le ombre sono algoritmi di DSV eseguiti in relazione alla posizione della sorgente luminosa. Principali approcci Algoritmo scan-line Bouknight e Kelly Algoritmo di Atherton Wieler e Greenberg Algoritmo di Crow dei volumi d’ombra Z-buffer shadow
16
Algoritmo scan-line 9 giugno 2011 Tutti i poligoni sono proiettati, per ogni sorgente, su una sfera centrata nella sorgente stessa e si eliminano le coppie di proiezioni non sovrapposte. Si proiettano i poligoni rimasti a coppie gli uni sugli altri a partire dalla sorgente. Considerando gli pseudo-poligoni costituiti dalle proiezioni si applica l’algoritmo scan-line di visibilità.
17
Algoritmo scan-line 9 giugno 2011
18
Atherton Wieler Greenberg
9 giugno 2011
19
Volumi d’ombra 9 giugno 2011 Per ogni poligono viene definito un volume d’ombra determinato dai raggi proiettori dei suoi vertici emanati dalla sorgente luminosa. Si contano le facce back-facing e front-facing dei volumi d’ombra attraversati da un raggio proiettore emanato dalla posizione dell’osservatore per raggiungere un punto della scena. Se queste si eguagliano allora il punto è illuminato, altrimenti è in ombra. Nel caso di osservatore in ombra bisogna aggiungere 1 al conteggio degli attraversamenti.
20
Volumi d’ombra 9 giugno 2011
21
Z-buffer shadow Si calcola lo z-buffer classico.
9 giugno 2011 Si calcola lo z-buffer classico. Per ogni sorgente luminosa si calcola lo z-buffer ZLi(x’,y’) visto dalla sorgente i-esima e si applica la roto-traslazione osservatore sorgente per i punti visibili. Se un punto dello z-buffer trasformato Z’(x’,y’) risulta essere tale che Z’(x’,y’)<ZLi(x’,y’) allora il punto originale P(x,y,z) è in ombra per la sorgente Li.
22
Z-buffer shadow 9 giugno 2011
23
Penombra 9 giugno 2011 La penombra si ha quando un oggetto è illuminato da una sorgente luminosa non puntiforme, ma con un’estensione finita. Ogni punto ha un livello di ombra dipendente dalla porzione di superficie occlusa dalla sorgente. Un approccio computazionalmente costoso sarebbe quello di modellare una superficie emissiva come un insieme di sorgenti puntiformi.
24
Penombra 9 giugno 2011 Nishita e Nakamae (1985) hanno determinato un approccio per sorgenti lineari, poligonali o poliedriche convesse e per oggetti poliedrici. Per ogni vertice della sorgente si determina il volume d’ombra che genera un oggetto della scena proiettando i suoi vertici. Il volume d’ombra globale è l’intersezione di tutti i volumi d’ombra, mentre il volume di penombra è la chiusura convessa di tutti i volumi d’ombra. I punti all’interno del volume di penombra sono colorati proporzionalmente alla parte di sorgente visibile: si può usare un approccio BSP-tree.
25
Penombra 9 giugno 2011
26
Trasparenza 9 giugno 2011 Le tecniche di trasparenza possono essere di tipo rifrattivo e non rifrattivo. Le tecniche di tipo rifrattivo calcolano la direzione di un raggio luminoso trasmesso attraverso una superficie e sono utilizzate come parte del processo di ray-tracing. Le tecniche non rifrattive sono dette anche tecniche di blending e riconducono il problema della trasparenza al calcolo del colore di un pixel che appartiene alla proiezione di due o più poligoni sovrapposti e non opachi, ciascuno avente un colore proprio.
27
Trasparenza non rifrattiva
9 giugno 2011 Nello scenario più semplice abbiamo due poligoni P1 e P2 e sia P1 trasparente e posto davanti a P2, opaco, rispetto alla linea di vista. Il calcolo del colore di un pixel che ricade nell’intersezione delle proiezioni dei due poligoni sul piano dell’immagine si ottiene per combinazione dei colori originari di P1 e P2.
28
Trasparenza non rifrattiva
9 giugno 2011 Blending tra i due colori. Il poligono trasparente filtra la luce che lo attraversa in maniera separata sui tre canali.
29
Screen door 9 giugno 2011 La tecnica di trasparenza screen-door è semplice ed efficiente. Per simulare un effetto di trasparenza, basta disporre spazialmente mescolati pixel con il colore di P1 e pixel con il colore di P2 secondo un pattern ripetitivo binario m(u,v)∈{0,1}. Il grado di prevalenza dell’uno o dell’altro colore in ogni areola elementare dell’immagine determinerà il livello di trasparenza simulato.
30
Trasparenza con z-buffer (alg. di Mammen)
9 giugno 2011 Esegui il DSV di tutti i poligoni opachi con lo z-buffer classico O=[o(x,y)]: o(x,y)={col, z} per ogni (x,y) Crea il buffer degli oggetti trasparenti T=[t(x,y)]: t(x,y)={trasp, flag, col, z} per ogni (x,y) Ripeti Ripeti per ogni (x,y) t(x,y).flag=0 Ripeti per ogni y Ripeti per ogni x Se esiste un poligono trasparente P tale che o(x,y).z < zP(x,y) < t(x,y).z allora t(x,y).trasp=traspP t(x,y).flag=1 t(x,y).col=colP t(x,y).z=zP Fine Ripeti Ripeti per ogni (x,y) Se t(x,y).flag=1 allora o(x,y).col=t(x,y).col*(1-t(x,y).trasp) +o(x,y).col*t(x,y).trasp o(x,y).z=t(x,y).z t(x,y).flag=0 finché t(x,y).flag=0 per ogni (x,y)
31
Trasparenza rifrattiva
9 giugno 2011
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.