1 / 31

Effetti fotorealistici

Effetti fotorealistici. Prof. Roberto Pirrone. Sommario. 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

duante
Download Presentation

Effetti fotorealistici

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Effetti fotorealistici Prof. Roberto Pirrone

  2. Sommario • Generalità • Texturemapping • Algoritmo di Fleibush-Levoy-Cook • Mip-map • Summed area table • Bumpmapping • 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à • 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 Il processo di texturemapping consiste nell’applicare un’immagine (texturemap) 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 texturemap. La trasformazione complessiva tiene conto della proiezione sullo schermo e di una legge di mappatura della tetxure su un singolo poligono (definizione esplicita delle texturecoordinatesdi ogni vertice).

  5. Texturemapping

  6. Texturemapping 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

  8. Algoritmo di Fleibush-Levoy-Cook 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 Seil 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. Mipmap • 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. Mipmap • 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 • Metodosviluppato da Crow per effettuare un filtraggioveloce. • Il valorefiltratoèugualeallasommadeivaloridella texture chericadononelrettangoloincludenteilfiltro.

  12. Metodi di texturemapping a confronto Campionamento diretto della texture; (b) mip-map;(c) Summed area table; (d) mip-map e filtro gaussiano a supporto ellittico

  13. Bump mapping 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 • 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 • 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 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

  18. Atherton Wieler Greenberg

  19. Volumi d’ombra 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

  21. Z-buffer shadow 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

  23. Penombra 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 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

  26. Trasparenza 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 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 • Blending tra i due colori. • Il poligono trasparente filtra la luce che lo attraversa in maniera separata sui tre canali.

  29. Screen door 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) 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 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 Fine Ripeti finché t(x,y).flag=0 per ogni (x,y)

  31. Trasparenza rifrattiva

More Related