Processamento, An´alise e S´ıntese de Imagens II PSI-2652
Prof. Marcio Lobo Netto
Ray Tracing
Modelo de Ilumina¸c˜ ao Global e Grids
Silvia Esparrachiari Ghirotti No. USP 3682567 27 de novembro de 2005
Resumo
Many methods were developed to reflect the global illumination effects that several objects in a scene produce against each other. Here, we’ll abord the ray-tracing technique which calculates a few global special effects, like specular reflectance and refrac- tion of light through transparent objects, and con- sider some recursive method to calculate the dif- fuse ambient light reflection of objects against each other. Depending on the number of objects in the scene, the ray-tracing algorithm might become too slow. At the end of the paper, we shall explain the Grid technique, which helps to improve the rende- rization of a scene by sub-dividing it into cells.
Keywords: Ray tracing, Global Illumination, 3D Scene, Grid
1 Introdu¸ c˜ ao
[1]Na natureza, os raios de luz viajam a partir de suas fontes de luz at´e que atinjam, eventualmente, uma superf´ıcie que interrompa seu processo. Este raio de luz pode ser considerado como um feixe de f´otons viajando todos na mesma trajet´oria. Ao alcan¸car um objeto (superf´ıcie) qualquer combina¸c˜ao de trˆes coisas pode ocorrer ao raio de luz: absor¸c˜ao, re- flex˜ao e refra¸c˜ao. A superf´ıcie pode refletir o raio total ou parcialmente, em uma ou mais dire¸c˜oes, com um intensidade menor ou igual.
A t´ecnica do ray tracing permite a renderiza¸c˜ao de imagens realistas a partir de cenas definidas em trˆes dimens˜oes. O algoritmo determina a visibi- lidade das superf´ıcies tra¸cando raios de luz ima- gin´arios a partir do olho do observador at´e os ob- jetos na cena. No caminho do raio de luz, pode ser necess´ario calcular reflex˜oes, refra¸c˜oes e absor¸c˜oes do raio enquanto este intercepta objetos na cena.
Figura 1: O processo de tra¸camento de raios atrav´es do plano de vis˜ao.
Como o ˆangulo de vis˜ao do observador (horizontal e vertical) ´e limitado, pode-se limitar a ´area rende- rizada escolhendo-se uma regi˜ao no plano de vis˜ao para servir de “janela” para o algoritmo. Esta ja- nela ´e ent˜ao subdividida em regi˜oes de modo a cor- responder a resolu¸c˜ao em pixels da imagem final.
Para cada ponto da malha ´e disparado um raio a partir do olho do observador at´e o centro do pixel e, depois, este continua “caminhando” por dentro da cena 3D. A cor do pixel ´e definida principal- mente pelo objeto mais pr´oximo interceptado pelo raio. O pseudo-c´odigo deste algoritmo ´e descrito na pr´oxima se¸c˜ao.
1.1 Perspectiva Hist´ orica
A t´ecnica do ray tracing foi primeiramente desen- volvida por Appel e por Goldstein e Nagel. Appel utilizou uma malha esparsa de raios para determi- nar as sombras na cena. Goldstein e Nagel origi- nalmente utilizaram seu algoritmo para simular a trajet´oria bal´ıstica de proj´eteis e part´ıculas nuclea- res. Foi s´o posteriormente que eles aplicaram o al- goritmo para gr´aficos. Appel foi o primeiro a tra¸car
raios para determina¸c˜ao de sombras, enquanto que Goldstein e Nagel foram pioneiros no uso de ray trace para calcular opera¸c˜oes booleanas. Whitted e Kay estenderam o ray trace para lidar com reflex˜oes especulares e refra¸c˜oes. Posteriormente, ser˜ao dis- cutidas sombras, reflex˜oes e refra¸c˜oes – os efeitos pelos quais a t´ecnica do ray trace ´e mais conhecida.
2 Calculando Intersec¸ c˜ oes
[2]O pseudo-c´odigo para o algoritmo de ray tracing mais simples, tamb´em denominado ray casting, ´e definido da seguinte forma:
selecione o centro de proje¸c~ao e a janela no plano de vis~ao;
for(cada linha da imagem){
for(cada pixel de uma linha){
determine o raio que parte do centro de proje¸c~ao e passa pelo centro do pixel;
for(cada objeto da cena){
if(objeto ´e interceptado e o ponto ´e o mais pr´oximo analisado at´e o momento)
armazene o ponto de intersec¸c~ao e a
identifica¸c~ao do objeto;
}
defina a cor do pixel baseada nas propriedades do material do objeto interceptado mais pr´oximo;
} }
O princ´ıpio b´asico e delimitante do desempenho de um algoritmo de ray trace ´e a determina¸c˜ao do ponto de intersec¸c˜ao de um raio com os objetos na cena. Quanto mais variadas as formas aceitas (triˆangulos, esferas, cilindros, toros), mais realis- tas se tornam as cenas, por´em, mais complexo o c´odigo. O ponto inicial do algoritmo constitui na defini¸c˜ao do raio. A mais usada ´e a defini¸c˜ao pa- ram´etrica. Cada ponto (x, y, z) ao longo do raio de P0 = (x0, y0, z0) a P1 = (x1, y1, z1) ´e definido por um valorttal que:
P =P0+t(P1−P0) Lembrando que:
Px=P0x+t(P1x−P0x) Py=P0y +t(P1y−P0y)
Py =P0z+t(P1z−P0z)
Agora, para obtermos um ponto de intersec¸c˜ao com um objeto da cena, s´o precisamos da equa¸c˜ao que o representa.
2.1 Esferas
[1]Daremos aqui um exemplo de c´alculo de intersec¸c˜ao utilizando o caso de uma esfera. Uma esfera cen- trada no pontoECe de raioER, tem uma equa¸c˜ao que a descreve no espa¸co igual a:
(x−ECx)2+ (y−ECy)2+ (z−ECz)2=ER2 Para encontrarmos o ponto de intersec¸c˜ao do raio com a esfera (se ele existir), basta substituirmos o ponto (x, y, z) pela defini¸c˜ao dos pontos pertencen- tes ao raioP =P0+t(P1−P0).
x2+ 2ECxx+EC2x+y2+ 2ECyy+EC2y+ z2+ 2ECzz+EC2
z =ER2 Considerando:
Rx=P1x−P0x
Ry=P1y −P0y
Rz=P1z −P0z
(P0x+tRx)2+ 2ECx(P0x+tRx) +EC2x+ (P0y +tRy)2+ 2ECy(P0y +tRy) +E2C
y+ (P0z+tRz)2+ 2ECz(P0z +tRz) +EC2
z =ER2
∴
t2(R2x+Ry2+R2z) + 2t(P0xRx+P0yRy+P0zRz+ ECxRx+ECyRy+ECzRz) +EC2x+EC2y +EC2z+ P02x+P02y+P02z+ 2(ECxP0x+ECyP0y+ECzP0z) =
ER2 Reagrupando os termos:
t2(R·R) + 2t(P0·(R+EC)) +EC·EC+P0·P0+ 2EC·P0−ER2 = 0
E considerando:
A=R·R
B= 2(P0·(R+EC))
C=EC·EC+P0·P0+ 2EC·P0−ER2
Temos:
t=−B±√
B2−4AC
2A (1)
Se ∆ = B2 −4AC > 0 dois pontos de inter- sec¸c˜ao s˜ao definidos, ent˜ao ´e preciso escolher o mais pr´oximo, ou seja, definido pelo menor t;
Se ∆ =B2−4AC = 0 apenas um ponto ´e defi- nido;
Se ∆ =B2−4AC <0 n˜ao h´a intersec¸c˜ao com a esfera.
3 Definindo a cor do pixel
[3]Ap´os encontrarmos o ponto de intersec¸c˜ao mais pr´oximo do observador, para um dado raio, pre- cisamos calcular a cor do pixel correspondente.
Esta propriedade est´a diretamente relacionada com as caracter´ısticas do material do objeto e com a posi¸c˜ao das fontes de luz na cena. Podemos basear a modelagem das reflex˜oes numa superf´ıcie nas se- guintes componentes:
Reflex˜ao Difusa: Reflex˜ao que ocorre em ob- jetos opacos, ou foscos, tais como borracha ou tecido.
Reflex˜ao Especular: Regi˜oes brilhantes que aparecem em objetos polidos (metais ou su- perf´ıcies envernizadas). Este modelo de re- flex˜ao n˜ao ´e o mesmo que ocorre em espelhos.
Espelhos e materiais transparentes requerem um tratamento recursivo e ser˜ao vistos poste- riormente.
Reflex˜ao espelhada: objetos cromados ou espelhados.
Transmiss˜ao: objetos transparentes tais como garrafas e janelas.
Reflex˜ao ambiente: Reflex˜ao difusa prove- niente de outros objetos na cena. Neste do- cumento, tratamos a ilumina¸c˜ao ambiente de forma simples, dando mais ˆenfase `a intera¸c˜ao entre os objetos da cena por meio da reflex˜ao total e da refra¸c˜ao (transmiss˜ao).
Seja L= (LR, LG, LB) uma fonte de luz e C = (CR, CG, CB) a cor de um objeto definidos pelas suas trˆes intensidades na faixa do vermelho, verde e azul, respectivamente. Os objetos da cena possuem um coeficiente para cada tipo de reflex˜ao, trans- miss˜ao e espelhamento descritos acima: Cd,Cseα, Cr,CteCa. A fonte de luz, por sua vez, deve con- ter um vetor de componentes para reflex˜ao difusa e outro para a especular: Ld eLs. Cada componente
Figura 2: Vetores utilizados no c´alculo do pixel ob- sercado pelo raio tra¸cado.
de C e L devem estar no intervalo de [0,1] e repre- senta a porcentagem de luz refletida. Por exemplo, seC= (0.5,0.2,0.2) eL= (1.0,0.0,1.0), a cor final do objeto ser´a:
LC = (0.5,0.0,0.2), note que o produto ´e feito componente a componente.
3.1 Analisando as reflex˜ oes
Conforme dito anteriormente, o sombreamento de um ponto numa superf´ıcie ´e feito em fun¸c˜ao do rela- cionamento entre a posi¸c˜ao do observador, as fontes de luz, a superf´ıcie em quest˜ao e os demais objetos da cena. Os seguintes vetores s˜ao importantes na defini¸c˜ao do sombreamento:
Vetor Normal: ~n´e perpendicular `a superf´ıcie e direcionado para o lado externo do objeto.
Cada superf´ıcie possui um modo particular de ter sua normal calculada. Por exemplo, para a esfera:
~n=normalize(Pt−EC) (2) Vetor do observador: ~v aponta na dire¸c˜ao do observador~v=P0−Pt.
Vetor de ilumina¸c˜ao: ~laponta na dire¸c˜ao da fonte de luz.
Vetor de reflex˜ao: ~rindica a dire¸c˜ao da re- flex˜ao pura do vetor de ilumina¸c˜ao.
~r= 2(~n·~l)~n−~l (3) Vetor de meio caminho: ~h´e definido como estando exatamente no meio entre~le~v:
~h=normalize(~l+~v) (4) Reflex˜ao Difusa A reflex˜ao difusa se baseia no fato de que a luz vinda de qualquer dire¸c˜ao ´e re- fletida uniformemente em todas as dire¸c˜oes. Tal tipo de reflex˜ao tamb´em ´e conhecido comoRefletor Lambertiano. A explica¸c˜ao f´ısica para tal processo
´e que os objetos, num n´ıvel microsc´opico apresen- tam sua superf´ıcie micro-facetada e altamente irre- gular. Estas irregularidades espalham a luz unifor- memente em todas as dire¸c˜oes.
A raz˜ao pela qual um refletor Lambertiano pa- rece ser mais brilhante em algumas regi˜oes que em outras ´e devida ao fato daquela regi˜ao estar vol- tada diretamente para luz, ent˜ao, a energia ´e espa- lhada por uma ´area menor, aumentando o brilho.
Conforme o ˆangulo de inclina¸c˜ao aumenta, menor a intensidade da luz refletida.
Seja Id a componente difusa da fonte de luz e Cd o coeficiente de reflex˜ao difusa do objeto. Se assumirmos que ~n e~l est˜ao ambos normalizados, temos cosθ =~n·~l. Se~n·~l < 0 o ponto est´a vol- tado para o lado oposto `a fonte de luz. Se n˜ao for o caso, Precisamos verificar se n˜ao h´a nenhum objeto entre o ponto e a fonte de luz. Utilizamos nova- mente o algoritmo do ray trace para percorrermos o raio: R=Pt+t(L0−Pt), ondePt´e o ponto em quest˜ao eL0 ´e a posi¸c˜ao da fonte de luz. Se n˜ao houver nenhum objeto no caminho, armazenamos esta informa¸c˜ao (para ser usada nos demais passos) e calculamos a componente difusa da cor como se segue:
Id=Cdmax{0, ~n·~l}LdC (5) OndeCd´e o coeficiente de reflex˜ao da luz difusa, Ld´e a componente difusa da luz e C ´e a cor do ob- jeto. Caso haja um objeto bloqueando a fonte de luz, armazenamos qual o objeto mais pr´oximo inter- ceptado e o ponto de intersec¸c˜ao (esta informa¸c˜ao ser´a usada na composi¸c˜ao da luz ambiente) e defi- nimosId= 0. Caso o ponto n˜ao esteja voltado para a luz tamb´em definimosId= 0.
Reflex˜ao especular Muitos objetos n˜ao s˜ao re- fletores Lambertianos perfeitos. Um bom exemplo
´e o caso das superf´ıcies polidas ou met´alicas. Estas costumam ter pontos ou ´areas mais brilhantes e de destaque. Teoricamente, estes realces s˜ao gerados num n´ıvel microsc´opico, onde a luz n˜ao est´a sendo espalhada uniformemente em todas as dire¸c˜oes, e sim numa dire¸c˜ao preferencial, que condiz com a regra “ˆangulo de incidˆencia igual ao ˆangulo de re- flex˜ao”. Por outro lado, as micro-facetas n˜ao s˜ao t˜ao suaves ao ponto de se assemelharem a um es- pelho.
Quanto mais pr´oximo da dire¸c˜ao de reflex˜ao ab- soluta est´a o observador, mais brilhante ser´a o ponto observado. Os parˆametros da superf´ıcie que controlam a reflex˜ao especular s˜aoCs, o coeficiente de reflex˜ao especular e α, o coeficiente de brilho.
Quanto maior o α, menor os focos brilhantes na superf´ıcie. Os valores de brilho costuma variar en-
tre [1,1000]. A componente especular s´o deve ser computada se o ponto ´e iluminado diretamente pela fonte de luz. A componente de reflex˜ao especular final ´e:
Is=Csmax{0, ~r·~v}αLs (6) Decaimento da intensidade da luz Para acen- tuarmos a sensa¸c˜ao de profundidade, podemos adi- cionar um efeito de atenua¸c˜ao da intensidade da fonte de luz de acordo com a distˆancia do ponto
`a fonte. Dessa forma, duas superf´ıcies idˆenticas (mesmo material, inclina¸c˜ao, tamanho), mas a distˆancias diferentes do observador, poder˜ao con- tar, al´em do efeito de perspectiva, com uma ate- nua¸c˜ao na ilumina¸c˜ao: se a fonte est´a mais pr´oxima do observador, a superf´ıcie mais distante ser´a ligei- ramente sombreada.
Uma equa¸c˜ao que permite uma s´erie de efeitos de ilumina¸c˜ao ´e:
f =min
µ 1
ad2+bd+c,1
¶
(7) Quando a = 1, b = c = 0, temos o decaimento tradicional referente ao inverso do quadrado da distˆancia. Os parˆametros a, b e c podem ser com- binados de diversas maneiras at´e se obter o efeito desejado.
Reflex˜ao espelhada Este tipo de reflex˜ao ´e aquela observada em espelhos, superf´ıcies cromadas ou espelhos d’´agua. Objetos espelhados possuem seu coeficiente de reflex˜ao no intervalo ]0,1]. Seja
~v = normalize(Pt−P0), o que vemos ´e o objeto atingido pelo vetor de vis˜ao refletido:
~rv= 2(~v·~v)~n−~v (8) Utilizando o vetor ~rv, tra¸camos um novo raio e verificamos qual o primeiro objeto interceptado.
Calculamos a cor naquele ponto e atribu´ımos esta cor `a componente Ir. Caso nenhuma objeto seja interceptado, atribu´ımos a cor de fundo a Ir. Pre- cisamos tomar um cuidado especial quando tenho muitos objetos espelhados numa cena, sen˜ao, pode- mos gerar uma situa¸c˜ao de um la¸co infinito. Para tal, precisamos definir o grau m´aximo de recurs˜ao de uma determinada cena. Al´em do mais, como os coeficientes de reflex˜ao est˜ao sempre num intervalo ]0,1], para objetos espelhados, a partir de um certo grau de recurs˜ao, a contribui¸c˜ao do objeto passa a ser desprez´ıvel.
Transmiss˜ao O modelo de transmiss˜ao, tamb´em conhecido comorefra¸c˜ao, ´e determinado pelo coefi- ciente de transmiss˜aoCtdiferente de zero. Tamb´em
Figura 3: Efeitos de refra¸c˜ao gerados pelo ray- tracing.
Figura 4: A lei de Snell, o raio incide de um meio com um ´ındice de refra¸c˜ao menor para um com o
´ındice de refra¸c˜ao maior.
´e necess´ario determinar outros dois parˆametros, os
´ındices de refra¸c˜ao para o meio interno ηi e para o meio externo ηi. Relembrando o modelo f´ısico, o ´ındice de refra¸c˜ao representa a raz˜ao entre a ve- locidade da luz no v´acuo e a velocidade da luz no meio.
A lei deSnelldiz que um raio incidente com um ˆangulo θi ( relativo `a normal da superf´ıcie) ser´a transmitido com um ˆangulo θt (relativo `a normal oposta) tal que:
sinθi
sinθt
=ηt
ηi (9)
Com um pouco de geometria e com a equa¸c˜ao 9, podemos concluir que o raio refratado ´e:
~t= µηi
ηt
cosθi−cosθt
¶
~n−ηi
ηt
~v (10) Sendo cosθi = (~v·~n) e
cosθt= s
1− µηi
ηt
¶2³
1−(~n·~n)2´
(11) Note que o termo dentro da ra´ız quadrada pode ser negativo seηi/ηt>1, ou seja, se j´a nos encon- tramos no meio de maior refra¸c˜ao. Neste caso, n˜ao ocorrer´a refra¸c˜ao, e sim reflex˜ao.
Um raio pode, portanto, percorrer um vasto ca- minho at´e que tenha sua cor definida. Enquanto percorre a cena e interage com objetos espelhados ou com transparˆencia, sua dire¸c˜ao muda, e ele de- fine uma ´arvore hier´arquica de objetos pelos quais passou. A profundidade m´axima desta ´arvore deve ser definida a fim de evitar-se loops infinitos. Um raio determinar´a uma componente de cor ao atingir um objeto opaco, o limite m´aximo da ´arvore ou ad- mitir´a a cor de fundo quando n˜ao interceptar mais nenhum objeto da cena.
Figura 5: O caminho percorrido por um raio con- forme vai sendo refratado e refletido pelos objetos em meio a uma cena.
Reflex˜ao ambiente Num modelo simples de re- flex˜ao, ´e definido um coeficiente de reflex˜ao da luz ambiente e todos os objetos, mesmo aqueles n˜ao iluminados, ou as faces n˜ao iluminadas diretamente pela fonte de luz, possuem sua cor influenciada por esta componente da luz. Como esta componente n˜ao interage nem depende dos demais objetos na cena, ela ´e definida simplesmente como:
Ia=CaLaC (12) Juntando tudo Depois que calculamos as com- ponentes diretas no ponto difusa, ambiente e espe- culares de cor, e as componentes recursivas de re- flex˜ao e refra¸c˜ao, calculamos a distˆancia do ponto at´e a fonte de luz para obtermos o decaimento da intensidade nas componentes locais (difusa, espe- cular e ambiente). A cor final no pontoPt´e dada por:
I=CaLaC+
X
i
V is(P, i) Li
ad2i +bd+c[CdCmax(0,(~n·~l))+
Csmax(0,(~r·~v)α] +Crtrace(P, ~rv) +Cttrace(P, ~t) (13) Onde: V is(P, i) indica se a i-´esima fonte de luz ´e vis´ıvel pelo ponto. CasoCreCtsejam zero, a cha- mada para o ray trace (trace(P, ~rv)) n˜ao precisa ser feita. Perceba que a atenua¸c˜ao do raio de luz n˜ao
´e aplicado as componentes refletida ou atenuadas.
Isto tem se mostrado uma boa aproxima¸c˜ao para um modelo de ilumina¸c˜ao, mesmo para os objetos pr´oximos o observador.
4 Grids
[4]Nos m´etodos que utilizam recurs˜ao, tais como c´alculo de reflex˜ao e refra¸c˜ao, a verifica¸c˜ao da in- tersec¸c˜ao do raio com cada objeto da cena pode consumir um tempo consider´avel. Mesmo em ce- nas com poucos objetos reflexivos ou transparentes, mas com uma grande quantidade de objetos opacos,
´e necess´ario verificar cada um deles na busca pela intersec¸c˜ao mais pr´oxima do observador.
Um m´etodo simples para reduzir o n´umero de objetos consultados ´e denominado grid (grade), e consiste na subdivis˜ao do espa¸co em c´elulas, e na associa¸c˜ao dos objetos da cena a elas.
As c´elulas costumam ser geradas a partir da di- vis˜ao da cena nos planos paralelos a um ou mais eixos. A cada c´elula ´e associada uma lista de obje- tos que ela cont´em total ou parcialmente.
Ao disparar um raio de luz do olho do observador em dire¸c˜ao `a cena, o raio come¸ca a percorrer algu- mas c´elulas do grid. A cada c´elula, s´o ´e necess´ario testar a intersec¸c˜ao do raio com os objetos associ- ados a ela, reduzindo consideravelmente o n´umero de testes.
E necess´ario escolher um algoritmo que defina´ como as c´elulas ser˜ao percorridas. O algoritmo des- crito aqui ´e o de Amanatides, Woo (1987). Os tes- tes de intersec¸c˜ao do raio com a lista de objetos de cada c´elula ou com os limites da grade s˜ao os respons´aveis pela interrup¸c˜ao do algoritmo de var- redura.
Mesmo que o raio intercepte um objeto, deve-se continuar com os testes de intersec¸c˜ao para todos objetos da lista, a fim de se obter um ponto de intersec¸c˜ao mais pr´oximo `a origem do raio.
Uma vez que as c´elulas cont´em uma lista de obje- tos, inclusive os parcialmente contidos, nota-se que um objeto pode ter seu volume ocupando em mais de uma c´elula. Isto pode ocasionar repetidos testes de intersec¸c˜ao entre um raio e um objeto e, ainda assim, n˜ao ocorrer intersec¸c˜ao alguma entre eles.
Para evitar um rec´alculo do teste de intersec¸c˜ao do raio com um mesmo objeto, adota-se o que ´e conhecido como mail boxing. Quando um raio ´e testado contra um objeto qualquer, pode-se arma- zenar temporariamente o resultado da intersec¸c˜ao do raio com o objeto, e reaproveit´a-lo posterior- mente. Quando uma rotina de teste de intersec¸c˜ao
´e chamada, ela verifica primeiramente se o objeto j´a n˜ao foi testado para aquele raio. Se o foi, ela retorna os dados armazenados previamente.
Uma vez que objetos grandes podem ocupar mais de uma c´elula, pode acontecer de uma intersec¸c˜ao ocorrer fora da c´elula em quest˜ao. A conseq¨uˆencia disto pode ser desastrosa: ao retornar desta inter- sec¸c˜ao, os testes das pr´oximas c´elulas ser˜ao supri- midos, o que pode omitir pontos de intersec¸c˜ao com outros objetos mais pr´oximos.
Para ilustrar a situa¸c˜ao, imagine uma cena com- posta por algumas esferas de tamanho variado, ma- peadas em uma grade. Um raio atravessa a cena, chegando a uma c´elula que cont´em parte de uma esfera grande. Um teste de intersec¸c˜ao entre o raio e a esfera grande ´e realizado, e descobre-se que o raio intercepta a esfera. O algoritmo de varredura de grade retorna o ponto interceptado com a es- fera grande, parando de varrer as c´elulas da grade.
Por´em, nota-se que na pr´oxima c´elula a ser varrida, o raio intercepta a esfera pequena em um ponto mais pr´oximo em rela¸c˜ao ao ponto interceptado na esfera grande. Como o mesmo ocorre para outros raios semelhantes, o efeito resultante ´e o “desapa- recimento” da esfera pequena.
Da mesma forma, esse problema n˜ao se limita a
“apagar” objetos pequenos da cena, como tamb´em pode levar a erros no c´alculo de sombras ao dis- parar raios secund´arios de objetos a fontes de luz e acumular erros grosseiros em cenas com muitos objetos espelhados.
A corre¸c˜ao deste problema consiste em verificar se o ponto de intersec¸c˜ao obtido encontra-se dentro da c´elula atual, o que aumenta o custo computacio- nal, dado que a verifica¸c˜ao ´e feita toda vez que um teste de intersec¸c˜ao entre raio e objeto retorna um resultado positivo.
A fim de reduzir o n´umero de intersec¸c˜oes entre os raios e sua caixa envolt´oria, uma boa pr´atica ao criar uma grade ´e minimizar o seu volume. De- pois de definido o volume, ´e necess´ario divid´ı-la em c´elulas num tamanho adequado.
C´elulas com tamanho reduzido podem aumentar o custo computacional do algoritmo de varredura, mas tamb´em diminuem o n´umero de objetos conti- dos, o que ´e vantajoso em cenas com alta densidade de primitivas cujo custo do teste de intersec¸c˜ao seja muito alto. C´elulas de tamanho maior s˜ao mais adequadas a cenas com baixa densidade de objetos
(cujos testes de intersec¸c˜ao n˜ao sejam muito custo- sos).
Outro fator importante ´e n˜ao inserir objetos mal distribu´ıdos em uma mesma grade. Por um lado, a concentra¸c˜ao de objetos beneficia raios que atra- vessam a cena cruzando as grades vazias, por outro, os raios acabam caindo em c´elulas com uma longa lista de objetos, praticamente inutilizando o uso da grade em determinadas situa¸c˜oes. Esse ponto fraco encontrado ao se utilizar grades foi uma das mo- tiva¸c˜oes para o desenvolvimento de outras subdi- vis˜oes espaciais com v´arios n´ıveis de profundidade, n˜ao abordados neste artigo.
5 Bibliografia Referˆ encias
[1] Foley, J.D., van Dam, A., Feiner, S.K., Hughes, J.F., Computer Graphics, principles and pra- tice, Addison-Wesley, 2a edi¸c˜ao, USA, 09/2004, pp 701-711.
[2] Kim, H.Y.,S´ıntese de Imagem e Rastreamento de Raio, S˜ao Paulo, 07/1992, pp 131-141.
[3] Mount, D.M., Computer Graphics, CMSC 427, notas de aula, primavera/2004, Maryland, USA, pp 58-66.
[4] Balciunas, D.A., Uso de Subdivis˜oes Espaciais em Objetos Complexos em Tra¸cado de Raios - Tese de Mestrado a ser publicada, 1o semestre de 2006.