22
DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227

DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227

Embed Size (px)

Citation preview

Page 1: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DIM10220

Raytracing Recursivo

Iluminação indireta

Page 21: DIM102 1 Raytracing 24T12 – Sala 3F5 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227

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

DIM10222

Exemplos de Raytracing

• Raytracer gratuito disponível online: www.povray.org• Imagens produzidas usando-se raytracing: www.irtc.org