DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.
Transcript of DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.
![Page 1: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/1.jpg)
DIM102 1
Raytracing
24T12 – Sala 3F5
Bruno Motta de Carvalho
DIMAp – Sala 15 – Ramal 227
![Page 2: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/2.jpg)
DIM1022
Introdução
• Raytracing é um método de iluminação global, baseado em física que descreve a transferência de energia e radiação na cena
• Interações de luz na cena dependem das propriedades da luz e dos materiais, e da geometria dos componentes da cena (luz, objetos e observador)
• Cada superfície tem uma distribuição que caracteriza sua absorção, reflexão, transparência, etc. Para cada comprimento de onda
• Imagem é então gerada amostrando-se (traçando raios) para pontos da cena
• Caro computacionalmente, usa-se algumas técnicas para acelerar sua execução
![Page 3: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/3.jpg)
DIM1023
Renderizando com Raytracing
• Generalização da pintura de Durer que mostra projeção perspectiva• Raytracing: Emita raios do olho para pontos de amostragem na foto virtual e
calcule qual a cor/intensidade para cada ponto• Ao invés de se emitir um número infinito de raios da fonte de luz para o
objeto e depois para o observador, emite-se um número finito de raios do observador através dos pontos de amostragem para os objetos e depois para a fonte de luz (ou outro objeto)
![Page 4: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/4.jpg)
DIM1024
Renderizando com Raytracing• Gere raios primários, que vão da posição de observação aos
pontos de amostragem • Encontre objeto mais próximo do observador ao longo do raio,
isto é, ache a primeira interseção entre o raio e um objeto da cena• Use modelo de iluminação para determinar luz no elemento de
superfície mais próximo• Gere raios secundários que se originam no objeto interceptado
![Page 5: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/5.jpg)
DIM1025
Raytracing x Conversão de Scans
conversão de scan
raytracing
Para cada triângulo da cena...
Para cada amostra na imagem
![Page 6: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/6.jpg)
DIM1026
Raytracing x Conversão de Scans• Conversão de scans:
Para cada objeto da cenapara cada triângulo ou quadrilátero do objeto
passe geometria do vértice e cores para OpenGL, que
pintará todos os pontos interiores do triângulo no framebuffer
• Rápido, mas restrito ao modelo de iluminação do OpenGL e uso de triângulos e quadriláteros
• Raytracing:Para cada amostra na imagem
determine qual objeto na cena é atingido primeiro pelo raio naquela amostrapinte aquela amostra com a cor do objeto naquele ponto
![Page 7: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/7.jpg)
DIM1027
Gerando Raios
• Inicie um raio do ponto de observação P, na direção d que o faça interceptar um ponto no plano do filme cuja cor nós desejamos saber
• Pontos ao longo do raio tem a forma P + td onde P é o ponto inicial do raio, d é o vetor unitário com a direção do raio e t é um número real não-negativo
• O ponto P é o centro de projeção no volume de visão perspectivo
![Page 8: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/8.jpg)
DIM1028
Gerando Raios
• Inicie com pontos no espaço da tela e transforme esses pontos em pontos no plano do filme da câmera 3D
• Qualquer plano ortogonal ao vetor olhar-para é um plano de filme adequado pois possui z constante no volume de visão canônico
• Escolha um plano como o plano do filme e crie uma função que mapeie pontos do espaço da tela para este plano.
• Por exemplo, pode-se usar o plano traseiro. Para converter as coordenadas, basta mapear coordenadas inteiras do espaço da tela para a faixa de valores [-1,1]
![Page 9: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/9.jpg)
DIM1029
Gerando Raios
• Transforme ponto do plano do filme em um ponto no espaço do mundo
- O vetor de direção é determinado pelo CoP e este ponto - Direção deve estar no espaço do mundo porque objetos são posicionados
usando este espaço
• Isso incorre na utilização da transformação inversa a transformação de normalização, a transformação de visualização
![Page 10: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/10.jpg)
DIM10210
Calculando Interseções
• Se um objeto é definido implicitamente por uma função f tal que f(Q) = 0 se e somente se Q é um ponto na superfície do objeto, então o cálculo da interseção raio-objeto é relativamente fácil
• Pontos no raio tem a forma P + td, enquanto que um ponto Q na superfície do objeto tem f(Q) = 0, logo nós queremos saber para quais valores de t f(P + td) = 0 (se existirem)
![Page 11: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/11.jpg)
DIM10211
Calculando Interseções
• Transforme equação de superfície implícita em uma equação em funçao de t e a resolva
• A parte do objeto que você vê primeiro do ponto de observação é o menor valor não-negativo de t
• Para objetos definidos por mais de uma equação, escreve-se um conjunto de equações e inequações e as codificam como casos (switch). Pode ser generalizada para lidar com outras combinações de objetos, como objetos de CSG ou objetos definidos por somas de equações implícitas
![Page 12: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/12.jpg)
DIM10212
Vetores Normais em Pontos de Interseção• Para se calcular a iluminação, nós devemos obter, dado um
ponto na objeto, o vetor normal aquele ponto para que se possa calcular os ângulos entre a normal e os outros vetores
• Se a superfície engloba um sólido cujo interior é dado por
então nós podemos achar o vetor normal no ponto (x, y, z) usando o gradiente naquele ponto:
Lembre-se que o gradiente é umvetor com três componentes
0) , ,( zyxf
),,( zyxf n
) , ,( ), , ,( ), , ,() , ,( zyxz
fzyx
y
fzyx
x
fzyxf
![Page 13: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/13.jpg)
DIM10213
Vetores Normais em Pontos de Interseção• No caso da esfera, nós temos
• Logo, as derivadas parciais são
• E o gradiente é
• n deve ser normalizado antes de ser usado em produtos internos!• Em alguns casos extremos esse gradiente pode ser zero, e esse método
falha. Nesse caso, use um gradiente vizinho que não seja zero
1) , ,( 222 zyxzyxf
zzyxz
f
yzyxy
f
xzyxx
f
2) , ,(
2) , ,(
2) , ,(
)2,2,2(),,( zyxzyxf n
![Page 14: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/14.jpg)
DIM10214
Pixels e Amostras
• No caso mais simples, escolhe-se as amostras nos centros dos pixels (amostra=pixel)
• Para se obter melhores resultados, usa-se superamostragem, utilizando mais de uma amostra por pixel (amostrapixel)
• Técnicas mais avançadas usam amostragem adfaptativa, onde se aumenta a densidade das amostras em áreas de mudança rápida (na geometria ou iluminação)
• Na amostragem estocástica, as amostras são posicionadas probabilisticamente
• Para resultados mais rápidos pode-se usar subamostragem, ou seja, menos amostras que pixels
– Use o máximo de amostras que o tempo permite– beam tracing: trace um conjunto de raios vizinhos juntos
• Converte-se amostras em pixel usando-se um filtro para se obter uma média ponderada das amostras
![Page 15: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/15.jpg)
DIM10215
Raytracing Recursivo
• Criação recursiva de novos raios na cena, que vão captar mais informação sobre sobre as interações de luz
• Inicie no ponto de interseção• O ideal seria enviar raios em todas as
direções (muito caro computacionalmente)• Envie raios nas direções mais prováveis de
contribução significativa:- direção da luz (sombras)- Ricocheteando nos objetos (reflexão especular)- Através do objeto (transparência)
![Page 16: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/16.jpg)
DIM10216
Sombras
• Cada luz na cena contribui para a cor e intensidade de um elemento de superfície
• Construa um raio da superfície para cada luz• Teste se o raio intersecta outros objetos antes de chegar a luz
- Se não for o caso, a contribuição completa da luz pode ser contada- Caso contrário, nenhuma contribuição é contada, a não ser que o objeto
intersectado tenha um componente de transparência não-nulo
objectIntensityλ = ambient +
attenuation ∙ lightIntensityλ ∙ [diffuse + specular]ΣnumLights
light = 1
![Page 17: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/17.jpg)
DIM10217
Transparência
• Para um polígono parcialmente transparente
Iλ2
Iλ1
2 poligono o para calculada eintensidad
1 poligono o para calculada eintensidad
1 poligono do ciatransmitan
)1(
2
1
1
2111
I
I
k
IkIkI
t
tt
polygon 1
polygon 2
![Page 18: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/18.jpg)
DIM10218
Transparência
• Modela-se o desvio da luz em interfaces de materiais usando-se a lei de Snell
2medium of refraction ofindex
1 medium of refraction ofindex
t
i
t
iit
sinsin
medium 1
medium 2
![Page 19: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/19.jpg)
DIM10219
Raytracing Recursivo
• Trace raios secundários nas interseções:– Luz: trace raio para cada fonte de luz. Se a fonte de luz está encoberta por um objeto
opaco ela não contribui para a iluminação– Reflexão especular: trace raio na direção refletida em relação a N– Refração/transparência: trace raio na direção de refração ditada pela lei de Snell– Crie novos raios de luz recursivamente até que a contribuição dos mesmos seja
insignificante
• A nova equacão de iluminação
– Intensidade de raios secundários calculadas com mesma equação– Fointes de luz contribuem para iluminação especular e difusa
• Limitações– Reflexão recursiva inter-objetos é estritamente especular – Reflexão recursiva inter-objetos difusa é tratada usando-se radiosidade
recursive
refracted
ttt
reflected
ssm
specular
nss
diffuse
ddpatt
ambient
dkaa IOkOkVROkLNOkIfOII ])([
![Page 20: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/20.jpg)
DIM10220
Raytracing Recursivo
Iluminação indireta
![Page 21: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/21.jpg)
DIM10221
Pipeline de Raytracing
• Raytracer produz amostras visuais de um modelo - samples convolved with filter to form pixel image
• Pré-processamento adicional- pré-processamento do banco de dados dos objetos geralmente acelera
cálculos
smallest t
generate secondary rays
![Page 22: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.](https://reader036.fdocuments.net/reader036/viewer/2022070311/552fc10b497959413d8c1ba6/html5/thumbnails/22.jpg)
DIM10222
Exemplos de Raytracing
• Raytracer gratuito disponível online: www.povray.org• Imagens produzidas usando-se raytracing: www.irtc.org