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

Post on 17-Apr-2015

102 views 0 download

Transcript of 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

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

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)

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

DIM1025

Raytracing x Conversão de Scans

conversão de scan

raytracing

Para cada triângulo da cena...

Para cada amostra na imagem

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

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

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]

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

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)

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

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

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

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

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)

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

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

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

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 ])([

DIM10220

Raytracing Recursivo

Iluminação indireta

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

DIM10222

Exemplos de Raytracing

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