Radiosity - Capser.com

Transcript

Radiosity - Capser.com
Radiosity - Wikipedia
Page 1 of 5
Radiosity
Da Wikipedia, l'enciclopedia libera.
La radiosity è un algoritmo di illuminazione globale usato durante il rendering in computer grafica 3D. È
un'applicazione del metodo degli elementi finiti per risolvere l'equazione di rendering di scene composte di
superfici perfettamente diffusive. A differenza dei Metodi Monte Carlo (come il path tracing) che
gestiscono tutti i tipi di percorsi luminosi, la radiosità tiene conto solo di quelli che seguono la forma LD*E,
ad esempio, percorsi che partono da una sorgente e vengono riflessi diffusivamente un certo numero di volte
(anche zero) prima di colpire l'occhio.
Come metodo di rendering, la radiosità venne presentata nel 1984 da ricercatori della Cornell University (C.
Goral, K. E. Torrance, D. P. Greenberg and B. Battaile) in un articolo intitolato "Modeling the interaction of
light between diffuse surfaces". La teoria era utilizzata in ingegneria per studiare la trasmissione del calore
fin dal 1950
Alcuni famosi motori di rendering commerciali basati sulla radiosità sono Lightscape (ora assorbita dal 3D
Studio Max dell'Autodesk), Radiozity della Auto*Des*Sys e ElAS (Electric Image Animation System).
Radiance è un programma open source della Synthetic Image System che fornisce un'accurata simulazione
di luce facendo uso della radiosità.
Indice
◾
◾
◾
◾
◾
◾
◾
◾
◾
1
2
3
4
5
6
7
8
9
Caratteristiche estetiche
Panoramica dell'algoritmo di radiosity
Formulazione matematica
Riduzione del tempo di computazione
Vantaggi
Limiti
Confusione circa la terminologia
Note
Collegamenti esterni
Caratteristiche estetiche
L'inclusione di calcoli di radiosità nel processo di rendering spesso aggiunge realismo al risultato a causa del
modo con cui simula il mondo reale.
Consideriamo una semplice stanza. L'immagine a sinistra è stata generata con un normale renderer ad
illuminazione diretta. Esistono tre tipi di luci nella scena, scelte e piazzate dall'autore nel tentativo di creare
la giusta illuminazione: luci spot con ombre (per creare l'illuminazione sul pavimento), luce d'ambiente
(senza la quale il resto della stanza sarebbe al buio) e luci omnidirezionali senza ombra (per ridurre la
piattezza della luce d'ambiente).
L'immagine a destra è stata calcolata con l'uso di un algoritmo di radiosità. C'è una sola sorgente di luce,
un'immagine del cielo piazzata all'esterno della stanza. La differenza è ben visibile. Ombre morbide sono
visibili sul pavimento, e vari effetti luminosi sono presenti nella stanza. Inoltre, il colore rosso del tappeto
viene riflesso sui muri grigi, dandogli un effetto realistico. Nessuno di questi effetti è stato creato ad arte
dall'autore, sono tutti frutto dell'algoritmo.
https://it.wikipedia.org/wiki/Radiosity
02/10/2016
Radiosity - Wikipedia
Page 2 of 5
Panoramica
dell'algoritmo di
radiosity
La superficie della scena da
visualizzare viene divisa in
una o più superfici (patch) e
l'algoritmo si occupa di una
superficie alla volta. Ad
ogni passaggio
dell'algoritmo viene
calcolata la luce che una
patch riceve dalle altre. Una
Differenze tra Illuminazione Diretta Standard e Radiosità
parte della luce viene
considerata assorbita, il
resto viene riflesso nella scena per il prossimo passaggio dell'algoritmo.
Uno dei comuni metodi per la risoluzione dell'equazione di radiosità viene definita shooting radiosity, e
risolve in modo iterativo sparando (da qui il nome) luce da una superficie ad ogni passo. Dopo la prima
passata saranno illuminati solo gli oggetti che vedono la sorgente di luce. Dopo la seconda altre superfici
riceveranno la luce a causa del rimbalzo di quest'ultima sulle patch già illuminate. La scena acquisisce
luminosità ad ogni passo, fino a raggiungere una stabilità, dovuta al quasi totale assorbimento della luce da
parte delle patch.
Con il susseguirsi dei passaggi si può vedere la luce inondare la stanza. Le singole patch possono essere viste sotto
forma di quadrati su muri e pavimento.
Formulazione matematica
Il metodo si fonda sulla base della radiazione termica, visto che consiste nel calcolo dell'ammontare
d'energia trasferito tra superfici. Per poter semplificare il calcolo si suppone che tutte le superfici siano
perfettamente diffusive. Le superfici vengono solitamente discretizzate in un numero finito di quadrilateri o
triangoli sopra i quali viene definita una funzione polinomiale.
Dopo questa frammentazione, l'ammontare d'energia trasferita può essere computata utilizzando la
riflessività conosciuta delle patch, combinata con il fattore di forma delle due patch. Questa quantità
adimensionale viene calcolata partendo dall'orientamento geometrico delle due patch, e può essere
immaginata come la frazione della possibile area emittente della prima patch coperta dalla seconda.
Una descrizione più scientifica descrive la radiosità come l'energia che lascia una superficie in un intervallo
discreto di tempo, combinazione dell'energia emessa e riflessa:
https://it.wikipedia.org/wiki/Radiosity
02/10/2016
Radiosity - Wikipedia
Page 3 of 5
dove:
◾ Bi è la radiosità della patch i.
◾ Ei è l'energia emessa.
◾ Ri è la riflettività della patch, restituisce l'energia riflessa se viene moltiplicato per l'energia incidente
(quella che arriva dalle altre patch).
◾ Tutte le j (
) nell'ambiente renderizzato vengono integrate per BjFji dAj, al fine di determinare
l'energia uscente dalla patch j e che arriva su i.
◾ Fji è il fattore costante che descrive la relazione geometrica tra le patch i e j.
La reciprocità:
da:
Per semplicità d'uso l'integrale viene sostituito da una costante di radiosità sull'intera patch, il che ci porta
alla versione semplificata:
Questa equazione può essere applicata ad ogni singola patch. L'equazione è monocromatica, quindi va
ripetuta per ogni colore primario.
La costante Fji può essere calcolata in vari modi. I primi metodi utilizzavano un emicubo (un immaginario
cubo centrato sulla prima superficie sulla quale la seconda veniva proiettata, metodo creato da Cohen e
Greenberg nel 1985) per approssimare il fattore di forma. Questo metodo era computazionalmente costoso
per il motivo che un fattore di forma ideale deve essere calcolato per ogni coppia di superfici, il che
generava un incremento quadratico.
Riduzione del tempo di computazione
Nonostante la formulazione base del metodo porti ad un incremento quadratico della complessità, esistono
metodi in grado di ridurre il problema. Il problema può essere riformulato sotto forma di rendering di una
scena contenente texture. In questo caso, il tempo di computazione aumenta in modo lineare con l'aumentare
del numero delle patch. L'uso di un albero di Partizionamento Spaziale Binario può ridurre ampiamente il
tempo speso nel calcolo di quali patch sono nascoste da altre.
Dal momento che la radiosità può essere calcolata con l'uso di algoritmi standard di texture-mapping, questo
ci porta ad un'accelerazione disponibile con l'uso di GPU Hardware, disponibile anche per PC standard.
Vantaggi
https://it.wikipedia.org/wiki/Radiosity
02/10/2016
Radiosity - Wikipedia
Page 4 of 5
Uno dei vantaggi dell'algoritmo di radiosità è la sua relativa semplicità di spiegazione ed implementazione,
il che lo rende ideale per insegnare agli studenti cosa siano gli algoritmi di illuminazione globale. Un
normale renderer ad illuminazione diretta contiene tutti gli algoritmi (proiezione tridimensionale, texture
mapping, rimozione di superfici nascoste) richiesti per l'implementazione della radiosità. Non serve avere
una grande conoscenza della matematica per comprendere ed applicare questo metodo.
Limiti
I metodi di radiosità risolvono solo i percorsi di luce della forma LD*E, ovvero percorsi che partono da una
sorgente e vengono diffusi continuamente prima di raggiungere l'occhio. Nonostante esistano numerosi
approcci all'integrazione di effetti luminosi tipo riflessione speculare[1] e glossy[2], i metodi basati su radiosità
non vengono solitamente usati per risolvere l'Equazione di rendering completa.
I metodi base hanno anche problemi relativi alla visualizzazione (ad esempio nel caso dei bordi degli
oggetti) causati da una discretizzazione rozza delle superfici che porta ad errori nel filtro del dominio
spaziale. Il discontinuity meshing[3] usa la conoscenza della visibilità per generare una discretizzazione più
intelligente.
Confusione circa la terminologia
La radiosità fu il primo algoritmo di rendering utilizzato ampiamente nel calcolo di luce indiretta diffusa. I
metodi precedenti, come il ray tracing Whitted-style, erano in grado di calcolare effetti quali riflessioni,
rifrazioni ed ombre ma, nonostante fossero fenomeni globali, non si riferivano ad illuminazione globale.
Come conseguenza il termine illuminazione globale venne confuso con interriflessione diffusiva, e Radiosità
con illuminazione globale. Invece i tre termini si riferiscono a concetti diversi.
Un'altra fonte di confusione fu il termine radiometrico di radiosity. In un contesto radiometrico, la radiosity
rappresenta l'energia per unità d'area (W/m2) emessa da una superficie. Il termine è quasi sconosciuto
all'esterno della computer grafica e viene solitamente chiamato emissione radiante.
Note
1. ^ Riflessione speculare (http://portal.acm.org/citation.cfm?id=37438&coll=portal&dl=ACM)
2. ^ Riflessione glossy (http://www.cs.huji.ac.il/labs/cglab/papers/clustering/)
3. ^ Discontinuity meshing (http://www.cs.cmu.edu/~ph/discon.ps.gz)
Collegamenti esterni
◾ (EN) Radiosity Overview, dall'HyperGraph del SIGGRAPH, siggraph.org.
◾ (EN) Radiosity, di Hugo Elias (http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm)
(descrizione ed esempi grafici)
◾ (EN) Radiosity, di Allen Martin (http://web.cs.wpi.edu/~matt/courses/cs563/talks/radiosity.html)
(spiegazione matematica)
◾ (EN) ROVER, di Tralvex Yeap (http://www.tralvex.com/pub/rover/abs-mnu.htm) (Articolo sulla
Radiosity e bibliografia)
◾ Descrizione dell'algoritmo di radiosità
(http://www.kino3d.com/manual20/BlenderManualIit/chapter_radiosity.html) utilizzato nel software
open source Blender
Estratto da "https://it.wikipedia.org/w/index.php?title=Radiosity&oldid=77926435"
Categoria: Grafica 3D
https://it.wikipedia.org/wiki/Radiosity
02/10/2016
Radiosity - Wikipedia
Page 5 of 5
◾ Questa pagina è stata modificata per l'ultima volta il 9 gen 2016 alle 14:09.
◾ Il testo è disponibile secondo la licenza Creative Commons Attribuzione-Condividi allo stesso modo;
possono applicarsi condizioni ulteriori. Vedi le Condizioni d'uso per i dettagli. Wikipedia® è un
marchio registrato della Wikimedia Foundation, Inc.
https://it.wikipedia.org/wiki/Radiosity
02/10/2016