31
PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Embed Size (px)

Citation preview

Page 1: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

PSI5789 - Conceitos Avançados de Síntese de Imagens

Marcio Lobo Netto

Ray TracingTécnica e Implementação

Alice Shimada Bacic3o período de 2002

Page 2: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

IntroduçãoComputação gráfica:

Grande diversidade de aplicações Demanda por imagens realistas Complexidade do mundo real Abstrações do mundo real

Modelos limitadosObjetivo da sínteze de imagens:

produção de imagens que não possam ser distinguidas de uma fotografia

Page 3: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

AbordagensNa tentativa de alcançar o realismo

desejado utiliza-se conceitos de física e óptica;

Iluminação global: Uma vista de uma cena é dada pelo

processamento da luz refletida por um ponto considerando toda a iluminação que chega a este ponto;

Iluminação direta + indireta

Page 4: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

AlgoritmosOs algoritmos mais populares para

iluminação global são: Radiosity:

trabalha com a interação difusa; Ray tracing:

trabalha com a interação especular ;Ambos algoritmos simulam parte da

interação global da iluminação;

Page 5: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing -PropósitoGerar imagens 3D realistas em uma tela

2D de computado: Simulação do comportamento físico dos

raios de luz em um ambiente 3D. Calculo das cores de cada pixel de imagem

considerando a interseção dos raios com os objetos da cena;

Reflexão dos raios recursivamente.

Page 6: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray tracing – HistóricoA técnica foi inicialmente desenvolvida por

Appel (1968), Goldstain (1968) e Nagel (1971); Appel:

usou uma grade (grid) de raios para determinar o preenchimento (shading) dos objetos de uma cena e calcular quando um ponto estaria dentro de uma sobra

Nagel e Goldstain:inicialmente criaram um algoritmo em balística para

simular a trajetória de projéteis e para calcular a trajetória de partículas nucleares.

Mais tarde aplicaram o algoritmo criado em computação gráfica

Page 7: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray tracing – Histórico (continuação)

Whitted e Kay estenderam a técnica inicial para simular a refração e a reflexão especular.

O algoritmo proposto por Whitted é um algoritmo de iluminação global parcial, que combina: a remoção de superfícies escondidas; o preenchimento produzido pela iluminação direta; a reflexão de objetos entre si e a refração da luz

através de objetos transparentes; a computação de sombras bem definidas

Page 8: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray tracing – Visão geralConsidera que uma fonte de luz emite photons

que colidem com objetos repetidamente: Parte da energia é absorvida e parte refletida pelo

objeto; Ao contrário do mundo real, a abstração do

algoritmo considera que os raios de luz partem do observador e são refletidos repetidamente gerando o preenchimento final do objetos processados na cena;

O termo ray tracing recursivo é geralmente usado para referenciar o processo do algoritmo que considera a cadeia de reflexões dentro da cena

Page 9: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing - CenárioObservador (eye): ponto no espaço onde o

ray tracing observa a cena através da viewplane;

Viewplane: janela retangular onde é projetada a cena. Cada ponto da janela corresponde a um pixel da tela do computador;

Modelo (model): uma coleção de objetos 3D;Fonte de luz (light source): fonte de

iluminação, que irradia luz uniformemente em todas as direções;

Cena (scene): o conjunto do modelo mais a fonte de luz formam uma cena

Page 10: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Cenário (ilustração)

Observador

Viewplane

Fonte de luz

Objetos da cena

Pixel

Raio de luz

Monitor

Page 11: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Premissas

=

Os raios de luz viajam em linha reta

Raios de luz não causam interferência entre si caso se cruzem.

Raios de luz partem da fonte de iluminação para os olhos, porém pelo princípio da reciprocidade (The Principle of Reciprocity), podemos assumir que o inverso produz o mesmo resultado para efeitos de calculo

Page 12: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Reflexão e transmissão

A reflexão: é o fenômeno físico onde a luz atinge uma superfície e é refletida.

A transmissão ocorre quando a luz atinge uma superfície transparente ou translúcida e passa através da superfície.

A reflexão ou transmissão da luz podem ser especular o difusas.

Reflexão

Transmissão

Page 13: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Reflexão e transmissão

Quando a propagação da luz após atingir o objeto é perfeita, isto é, a luz é refletida ou transmitida em apenas uma direção com toda a intensidade inicial temos a reflexão ou transmissão especular.

Quando a luz abandona o objeto em todas as direções com intensidade igual, temos a reflexão ou transmissão difusas.

Especular

Difusa

Page 14: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Tipos de algoritmoForward ray tracing:

as partículas de luz (photons) são seguidas desde a fonte de luz até o objeto;

Desperdício, pois nem todo raio de luz que partiu de uma fonte deverá alcançar o observador;

Ineficiente, pois gasta-se processamento com raios de luz não aproveitados.

Page 15: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Tipos de algoritmoBackward ray tracing:

Foi desenvolvido para melhorar o desempenho da técnica;

Neste caso um raio de luz é criado no observador e sua trajetória é traçada passando pelo viewplane até o primeiro objeto da cena alcançado;

A trajetória do raio é calculada através de recursivas reflexões;

Page 16: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Tipos de algoritmo

Backward

forward

Page 17: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Modelo OO

CartesianPointx : floaty : floatz : float

getX()getY()getZ()

Cartesian

0..*0..*

Addresses

Backward Forward

LightRayintensity : floatdirection

File

Objectcolor : longreflection : floatrefraction : float

ProcessLight()

LightSource

*

1

*

1

Produces

CoordinateSystem

Sphereradius : float

Cilinderdiameter : floatheight : float

BoxWidth : floatHeight : floatHight : float

Point

+Centre

2

+Axis

2

+Cornner

ImageFile

Image

Saved

Scene

gotoFirstObject()nextObject()gotoLastObject()currentObject()

**

**

0 *0 *

Used by

Observer

+Position

Viewplane

See throught

+Position

11

SceneDescriptor

RayTracer

**

Process

Creates image for

Captured by

Load

Page 18: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Modelo OOVisualização dos componentes da

técnica; Interação entre componentes;

Objetivo: Extensibilidade; Opção por tipo de algoritmo; Definir a estrutura de dados e a interação

entre os componentes da técnica;

Page 19: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Fatores trabalhados pelo algoritmo: As superfícies escondidas; O preenchimento devido à iluminação

direta; A reflexão e a refração; As sobras desde que bem definidas, isto é,

geométricas e com bordas bem definidas

Page 20: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Raios de luz são traçados através da cena: interseção com os objetos:

testar a interseção de cada raio com cada objeto da cena;

Cada interseção entre raio e objeto gera dois novos raios, um refletido e outro transmitido;

interações especulares;

Page 21: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Ao traçarmos raios recursivamente, devemos adotar critérios de parada: A recursividade sempre termina quando o

raio intercepta uma superfície difusa; Ou quando um número pré-determinado de

níveis de recursão é atingido; Ou quando a energia de um raio se torna

menor que um determinado valor.

Page 22: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Componentes da luz: Para cada ponto P de um objeto atingido por um

raio:dois novos raios, um refletido e outro transmitido.

A intensidade de P:Componente local;Contribuição global do raio refletido;Contribuição global do raio refratado seguido.

Sombras: Se um raio refletido atinge um segundo objeto o

ponto que gerou o raio está na sombra;Remoção de superfícies escondidas:

Lista de raios gerados com a respectivas distâncias entre ponto e observador;

Page 23: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Equação da iluminação: I(P) = Ilocal(P) + Iglobal(P) = Ilocal(P) + Krg * I(Pr) + Ktg * I(Pt) Onde:

P: ponto atingido;Pr: Ponto atingido através do traçado de um raio

refletido;Pt: Ponto atingido através do traçado de um raio

transmitido;Krg: Coeficiente global de reflexão;Ktg: Coeficiente global de transmissão.

Page 24: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Corpo básico: Recursão;

Um raio é particionado em dois• um raio refletido• outro transmitido

Duas chamadas a si mesmo, uma para cada raio particionado.

Page 25: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Informação contida em um raio: Origem do raio; Direção; Ponto de interseção; Cor atual no ponto de interseção; Atenuação atual; Distância do ponto de interseção à origem do raio; O índice de refração que o raio possui atualmente; A nível de traçado atual; O número atual de objetos a que o raio é interno;

Page 26: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

// a notação usada considera o uso de uma linguagem orientada a objetos ShotRay(ray) {

object := objectCollection.getCurrentObject();if (ray.intersepts (object)) {ray.getNormalAtInterseptionPoint(object);iLocal := ray.calculateIntensity(object);ray.decrementTraceDepth();if (ray.getTraceDepth() > 0) {// Calcula e traça o raio refletidoif (ray.isReflected(object)) {rayr := ray.evalReflection(object);rayr.setOrigin(ray.getIntersectionPoint(object);

 // Multiplica o valor de Krg pelo valor// da chamada anteriorrayr.attenuate(Krg);

 rayCollection.add(rayr);ShotRay(rayr);

 if (rayr.interseptsAnObject(objectCollection)) {// Considera o Krg I e o Ilocalrayr.combineColours();}}

Page 27: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

// Calcula e traça o raio refratadoif (object.isRefracting()) {

if (ray.isEntering(object)) {ray.acumulateRefrativeIndex();// Incrementa o número de objetos em

que// o raio se encontra ray.incrementObjectNumber();rayt := ray.evalRefraction(object);refractedRayCollection.add(rayr);

}

Page 28: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

else {ray.deacumulateRefrativeIndex();// Decrementa o número de objetos em que// o raio se encontra ray.decrementObjectNumber();rayt := ray.evalRefraction(object);refractedRayCollection.add(rayr);}rayt.setOrigin(ray.getIntersectionPoint(object);

 rayr.attenuate(Ktg);

 if (rayt.interseptsAnObject(objectCollection)) {// Considera o Ktg I e o Ilocal

rayt.combineColours();}}}}

}

Page 29: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Ray Tracing – Algoritmo de Whitted

Complexidade do Algoritmo e Desempenho: qr = 2 * 2 (n-1), onde qr é a quantidade de raios

gerados e n o número de iterações desejado. Simplificando a expressão: qr = 2n

qc = 4 * 2(n-1), onde qr é a quantidade de chamadas recursivas geradas e n o número de iterações do raio.

Simplificando a expressão: qc = 22 * 2(n-1) = 2(n - 1 + 2) = 2(n+1)

O desempenho do algoritmos cai em progressão geométrica Depende do número de iterações que configuradas.

Page 30: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Conclusão O ray tracing é uma boa opção quando se deseja

gerar imagens que computem a iluminação global obtendo-se efeitos como reflexão, transparência e sombras bem definidas, porém o algoritmo apresenta um custo computacional alto.

Adaptações ao algoritmo, mais a constante evolução do hardware são fatores que atenuam o custo computacional da técnica maior expansão do uso do algoritmo.

Ao optarmos pela técnica em questão, devemos considerar o resultado final esperado e o custo para determinar se a solução é adequada.

Page 31: PSI5789 - Conceitos Avançados de Síntese de Imagens Marcio Lobo Netto Ray Tracing Técnica e Implementação Alice Shimada Bacic 3 o período de 2002

Bibliografia [1] “Introduction to Computer Graphics”; James D. Foley;

Andries van Dan; Steven K. Feiner; John F. Hughes; Richard L. Phillips; Addison-Wesley Publishing Company; May 1997.

[2] “3D Computer Graphics”; Alan Watt; Addison-Wesley; 3o edition; 2000.

[3] “Design and Implementation of an Interactive Ray Tracer”; Maria E. Jump; University of Maryland; September 1998; http://www.cs.umd.edu/~mount/Indep/MJump/report.html.

[4] ”1997 Sophomore College Ray Tracing Site”; Charity Lu; Alex Roetter; Amy Schultz; http://cse.stanford.edu/class/sophomore-college/projects-97/ray-tracing/index.html.

[5] “Pratical Ray Tracing in C”; Craig A. Lindley; Wiley; 1992.