RADIOSITY
Algoritmo di calcolo della luce realistica
DENIS COSSUTTA
LAUREA SPECIALISTICA INGEGNERIA INFORMATICA
A.A. 2005/2006
INTRODUZIONE
• meccanismo ray tracing utilizzato per modellare la riflessione
speculare e la rifrazione senza dispersione, facendo uso di una luce
ambientale non direzionale, che tiene conto di tutti i contributi
dell’illuminazione globale
• e le radiazioni e le riflessioni tra oggetti?
• tutta l’energia emessa o riflessa da ogni superficie è responsabile
della sua riflessione e dell’assorbimento da parte di altre superfici
• radiosity = somma dei rapporti in base ai quali la superficie emette
energia, riflettendola e trasmettendola ad ogni altra superficie
RADIOSITY
• le superfici considerate nel metodo di radiosity possono emettere
luce, a differenza di quelle considerate nel ray tracing: ognuna di
esse può essere modellata come una sorgente luminosa estesa,
avente un’area finita
• Il termine radiosità indica la quantità di energia che lascia una
superficie, data dalla somma della quantità di energia che emette
essa stessa e la quantità di energia ricevuta da altre superfici che
riflette
• metodo radiosity – modello di illuminazione fisico che assume che
tutte le superfici siano dei riflettori di luce diffusa costante e che le
interazioni tra di esse si risolvano usando equazioni lineari. La
soluzione di questo sistema di equazioni lineari è l’output finale che
può essere usato per renderizzare le superfici della scena
RADIOSITY
• Il metodo considera la suddivisione o tessellamento dell’ambiente in
un numero finito di elementi di dimensione limitata, chiamati patch,
ognuno dei quali emette e riflette luce in modo uniforme sull’intera
area
• una singolo patch emana : luce diretta e/o indiretta
• luce diretta : luce che l’oggetto riceve direttamente dalla sorgente
luminosa
• luce indiretta : luce riflessa su un oggetto da altri oggetti
RADIOSITY : equazione generale
• negli altri algoritmi la luce veniva trattata separatamente dalle
superfici che illuminava
• il radiosity permette a qualsiasi superficie di emettere luce, in modo
che tutte le sorgenti di luce vengono considerate come se avessero
un’area
• ipotizziamo di suddividere l’ambiente in un numero finito n di patch
di area finita, che emettono e riflettono luce uniformemente in tutta
la loro area. Si ha che per ogni patch i:
RADIOSITY : equazione generale
dove:
Bi è la radiosità totale emessa dalla superficie i
Ei è la luce emessa propriamente dalla superficie i
ρj è un valore adimensionale e corrisponde al valore di riflettenza della
superficie che determina la frazione dell’energia totale incidente
rflessa dalla superficie i
Bj Aj è l’energia totale emessa dalla superficie j con area Aj (radiosità
per area)
Fj-i è la frazione di energia che lascia la superficie j e che investe la
superficie i. Questo valore tiene conto della forma e
dell’orientamento di ogni superficie ed è chiamato fattore di forma
RADIOSITY : equazione generale
• l’equazione indica la relazione esistente tra l’energia emessa da una
superficie unitaria e l’energia entrante nella superficie unitaria, vista
come somma della luce direttamente emessa e della luce riflessa
• la luce riflessa viene determinata calcolando, rispetto al coefficiente
di riflessione della patch, la somma della luce incidente, che non è
altro che la somma della luce che lascia un’unità di area della patch
j-esima e che raggiunge la patch i-esima
RADIOSITY : equazione generale - semplificazione
In ambienti diffusi vale la seguente relazione di reciprocità tra i fattori di
forma Fi-j Fj-i :
Fi-j Ai = Fj-i Aj
Si ottiene quindi la seguente formula finale:
RADIOSITY : equazione generale – forma matriciale
•
•
in questo modo, risolvendo il sistema, troviamo la radiosità per ogni patch
che può essere resa da qualsiasi punto di vista con un qualsiasi algoritmo di
visualizzazione
una volta ottenuto il valore di radiosity della patch, si possono calcolare i
valori per ogni vertice. I casi sono due:
- se un vertice è all’interno di una superficie, gli viene assegnato il valore medio della
radiosità delle patch che lo condividono
- se il vertice è sui bordi della superficie, si trovano le patch che lo condividono e il
vertice interno piu vicino. Poi si confrontano la media della radiosità della patch con la
media della radiosità dei due vertici
RADIOSITY : esempio
Si consideri la figura sottostante:
•
•
•
la radiosità del vertice e è data da : Be =(B1 + B2 + B3 + B4)/4
per calcolare la radiosità del vertice b sui bordi per prima cosa si deve
trovare il vertice interno più vicino che in questo caso è e. Poi si impone (Bb
+ Be)/2=(B1 + B2)/2 da cui si ricava Bb =B1 + B2 - Be
per calcolare la radiosità del vertice a sui bordi, prima si deve trovare il
vertice interno più vicino che in questo caso è e. Poi si impone (Ba + Be)/2=
B1 da cui si ricava Ba =2B1- Be
RADIOSITY : calcolo dei fattori di forma
• I fattori di forma rappresentano la misura di quanta luce
proveniente dalla patch j colpisce una patch i
• Cohen e Greenberg implementarono un algoritmo per
approssimare i form factors
RADIOSITY : calcolo dei fattori di forma
Il fattore di forma da un’area differenziale dAi ad un’area differenziale
dAj , dove Hij può assumere valori 0 o 1 a seconda che dAj sia visibile o
meno da dAi è data da:
RADIOSITY : calcolo dei fattori di forma
Per determinare Fdi,j , cioè il fattore di forma da un’area differenziale dAi
ad un’area finita Aj , integriamo sull’area della patch j
In questo modo il form factor da Ai ad Aj è l’area media dell’equazione
precedente sulla patch i
RADIOSITY : approssimazione dei form factors
• se noi assumiamo il punto centrale di una patch come
rappresentante di tutti gli altri suoi punti, possiamo approssimare Fi,j
con Fdi,j, computato per dAi nel centro della patch i-esima
• Alcuni studiosi hanno cercato un modo più semplice per calcolare
Fdi,j
• Nusselt ha mostrato che questa quantità si può calcolare mediante
due proiezioni successive: innanzitutto bisogna proiettare quelle
parti di Aj che sono visibili da Ai su una semisfera unitaria, centrata
in dAi, successivamente quest’area sulla superficie della semisfera
viene proiettata ortograficamente sul cerchio unitario che costituisce
la base della semisfera
RADIOSITY : approssimazione dei form factors - Nusselt
RADIOSITY
: approssimazione dei form factors – Cohen e Greenberg
• Cohen e Greenberg proposero di proiettare Aj nella metà superiore
di un cubo centrato su dAi con la faccia superiore parallela alla
superficie.
• Ogni faccia dell’ ‘emicubo’ è divisa in piccole celle quadrate di ugual
area
• Aj viene quindi proiettato sulle facce dell’emicubo
• Si pensi ad ogni faccia del cubo come una pellicola su cui viene
impresso ciò che una patch vede in ognuna delle 5 direzioni (5
facce dell’emicubo)
RADIOSITY
: approssimazione dei form factors – Cohen e Greenberg
• Ad ogni cella p dell’emicubo è associato un valore del fatore di
forma:
• Dato un sistema di riferimento per il semicubo, la cui origine è posta
nel centro della faccia inferiore, otteniamo:
• Da cui si ha che:
RADIOSITY
: approssimazione dei form factors – Cohen e Greenberg
• Per una faccia laterale perpendicolare all’asse x dell’emicubo
abbiamo che:
• Da cui si ha che:
• Si può approssimare Fdi,j per qualsiasi patch j sommando i valori di
∆Fp associati ad ogni cella p nelle proiezioni sull’emicubo di Aj
RADIOSITY : substructuring
• Per migliorare il risultato di una soluzione radiosity, si deve
incrementare il numero n di patch, ma in questo modo si andrebbe
ad aumentare il tempo di calcolo poiché la complessità è O(n2)
• Per evitare di incrementare in modo quadratico le suddivisioni delle
patch si suddivide in modo adattativo le patch in sotto patch solo
nelle zone in cui si trova un gradiente di radiosità alto
RADIOSITY : substructuring
• ogni qualvolta viene suddivisa una patch i, i form factor Fsj da ogni
sottopatch s a ogni patch j vengono calcolate mentre ogni form
factor delle patch alle sottopatch di i non vengono calcolate
• dopo che una patch i viene suddivisa, i valori calcolati
precedentemente di ogni form factor della patch alle altre sono
sostituiti da un valore più accurato calcolato sulle m sottopatch di i
• la radiosità di ogni sottopatch s di una patch i può essere calcolata
come:
RADIOSITY : substructuring
• l’algoritmo può iterare suddividendo
sempre più le patch dove c’è un’alto
gradiente di radiosità fino al punto di
raggiungere un risultato
soddisfacente
• le radiosità finali delle sottopatch
saranno poi usate per determinare la
radiosità dei vertici
RADIOSITY : raffinamento progressivo
• il costo dell’algoritmo di radiosity visto fino a questo momento è
molto elevato
• l’idea di base sarebbe creare una prima immagine non accurata e
migliorarla in seguito usando un algoritmo incrementale
• con la definizione attuale di radiosity questo meccanismo non è
realizzabile
• alcuni studiosi tuttavia hanno sviluppato un algoritmo per il
raffinamento progressivo di radiosity, senza la necessità di
precalcolare e memorizzare i fattori di forma
• le equazioni lineari vengono risolte in modo progressivo
RADIOSITY : raffinamento progressivo
•
Le differenze fra i due metodi sono perciò le seguenti:
Modello classico
Raffinamento
progressivo
Il calcolo della radiosity della patch
i-esima viene basato sulla stima
delle altre patch, raccogliendo la
luce dell’ambiente
Si considera invece la radiosity
emanata da una patch verso il
resto dell’ambiente, piuttosto che
quella ricevuta
Ogni termine dell’equazione di
radiosity esprime l’effetto della
patch j sulla radiosity della patch i
Bi dovuto a Bj è uguale a ρjBj Fij ,
per ogni j
Si vuole determinare:
Bj dovuto a Bi è uguale a ρjBi Fji ,
per ogni j
RADIOSITY : raffinamento progressivo
• Il metodo tradizionale raccoglie la luce del resto dell’ambiente sulla
generica patch, mentre l’approccio del raffinamento progressivo
emana la radiosità da una patch verso l’ambiente
• il nuovo calcolo però richiede la conoscenza di Fji ,cioè del fattore di
forma dell’area Aj all’area Ai, da calcolare in semicubi separati,
• sfruttando però la relazione esistente tra fattori di forma reciproci
possiamo dedurre che l’effetto su Bj dovuto a Bi è uguale a:
per ogni j
• per risolvere questa equazione per ogni j, sono necessari soltanto i
form factors calcolati usando un solo emicubo centrato sulla patch i
RADIOSITY : raffinamento progressivo
• se i fattori di forma possono essere calcolati velocemente, allora la
memoria da essi occupata può essere rilasciata non appena la
radiosity da essi emanata viene lanciata nell’ambiente
• ad ogni passo dell’algoritmo dobbiamo avere a disposizione
memoria solo per un singolo semicubo e per i suoi fattori di forma
• Nell’iterazione, le patch più significative, cioè che contribuiscono ad
illuminare maggiormente le altre, vengono calcolate prima mentre
quelle con poca energia, cioè che hanno meno impatto sulle altre,
sono lasciate per ultime
• l’algoritmo itera fino a quando non si raggiunge una tolleranza
accettabile
RADIOSITY : illuminazione ambientale
• alcuni studiosi hanno proposto di aggiungere un termine di
illuminazione ambientale per compensare la bassa luminosità delle
immagini iniziali
• un modo per stimare questo termine è quello di usare una somma
pesata delle patch che ancora non hanno emanato radiosità
• Per prima viene calcolata una riflessione diffusa media
• questa equazione viene usata per calcolare un fattore di riflessione
complessivo R che tenga conto dei cammini differenti attraverso cui
l’energia può viaggiare da una patch all’altra:
RADIOSITY : illuminazione ambientale
• Infine, una stima del termine ambientale viene eseguita facendo
riferimento a quest’ultima quantità R:
• Questo termine ambientale viene poi utilizzato come argomento per
calcolare la radiosità della patch:
RADIOSITY : esempi 1.o esempio
immagine senza radiosity
immagine con radiosity
il fascio di luce si ferma alla
prima iterazione, lasciando al
buio gli oggetti 2 e 3
parte della luce rimbalza
illuminando anche gli oggetti
2 e 3 con intensità decrescente
con il prolungarsi delle iterazioni
RADIOSITY : 2. o esempio
Queste tre ripetizioni della stessa immagine mostrano lo stato di avanzamento
del metodo a raffinamento progressivo di radiosity: la prima immagine viene
prodotta alla prima iterazione, la seconda alla seconda iterazione e la terza
immagine alla quarta iterazione
Riferimenti bibliografici
• http://www.panebianco3d.com/i_tutorials-lightwaveradiosity_01.htm
• www.siggraph.org/education/materials/HyperGraph/radiosi
ty/overview_1.htm
• http://psycho.usr.dsi.unimi.it/~spa/corso9798/t610.html
• http://www.cg.tuwien.ac.at/research/rendering/rays-radio/
• http://web.cs.wpi.edu/~matt/courses/cs563/talks/radiosity.ht
ml
Scarica

EGD28_RADIOSITY_Cossutta06