estruturas de dados espaciais mc-930 mo-603. ray-casting fontes de luz enviam fótons em todas as...

33
Estruturas de Dados Espaciais MC-930 MO-603

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Estruturas de Dados Espaciais

MC-930

MO-603

Page 2: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Ray-casting

• Fontes de luz enviam fótons em todas as direções• Modelar fótons como partículas que saem dos

objetos para a cena• Cada fóton tem comprimento de onda e energia

(cor e intensidade)• Quando fótons batem num objeto, alguma energia

é absorvida, alguma é refletida e alguma é transmitida (refratada)

Page 3: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Ray Casting

• Se modelarmos as “batidas e reflexões” dos raios nos objetos, podemos gerar imagens para cada raio

• Técnica: seguir cada fóton da fonte de luz até que:– toda sua energia seja absorvida;

– ele saia do universo conhecido;

– ele bata na imagem (plano de projeção) e sua contribuição é adicionada ao píxel apropriado

Page 4: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Forward Ray-tracing

• Raios são caminhos percorridos pelos fótons (ray-tracing)

• Forward Ray-tracing segue o fóton na mesma direção em que a luz viaja (da fonte de luz)

• Grande problema:– Apenas uma pequena fração de raios chegam na

imagem (jogar fora maioria)

• Cenário ideal:– Gostaria de saber magicamente quais raios contribuem

eventualmente para a imagem e traçar apenas esses

Page 5: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Backward Ray-tracing

• Solução é iniciar da imagem e traçar raio para trás (ao contrário)

• Backward Ray-tracing:– Começa da imagem e segue raio até que ele

encontre a fonte de luz ou saia do universo

• Algumas pessoas acreditavam que a visão humana funcionava desta maneira

Page 6: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Idéias Básicas

• Cada pixel recebe luz de apenas uma direção (definida pelo ponto focal/observador e pelo ponto no plano imagem)

• Cada fóton contribuindo para a cor desse pixel deve vir dessa direção (observador-centro de cada pixel)

• Siga o raio saindo da imagem– Se encontrou fonte de luz – done!– Se encontrou nada – done!– Se bateu numa superfície – veja de onde vem a iluminação naquela

superfície e calcule a contribuição (ou pode ser recursivo)

• Ao final, resultado igual ao forward ray-tracing, mas calcula apenas raios que contribuem para a imagem

Page 7: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Backward Ray-tracing

Page 8: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Ray casting• This version of ray tracing is often called ray casting:• loop y

• loop x

• shoot ray from eye point through pixel (x,y) into scene

• intersect with all surfaces, find first one the ray hits

• shade that point to compute pixel (x,y)’s color

• (perhaps simulating shadows)

• A ray is p+td: p is ray origin, d the direction– t=0 at origin of ray, t>0 in positive direction of ray

– typically assume ||d||=1

– p and d are typically computed in world space

• This is easily generalized to give recursive ray tracing...

Page 9: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Ray-tracing recursivo

• Quatro tipos de raios:– Eye rays: orgina-se no olho (ponto focal)– Shadow rays: da superfície apontando na

direção da fonte de luz– Reflection rays: do ponto na superfície

apontando na direção do raio refletido– Transmission rays: do ponto na superfície na

direção do raio refratado

• Trace todos esses recursivamente

Page 10: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Ray-tracing recursivo

N

Page 11: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Otimizando Ray-tracing

• Traçar poucos raios– Mais relevante para ray-tracing recursivo

• Otimizar cada teste de interseção– otimizar código raio-triângulo, raio-esfera– compilar com otimizador

• Melhor estratégia:– fazer menos testes de interseção

Page 12: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Comparativo: deteção de obstáculos

• Progredir envolve não bater nos obstáculos da cena

• Complexidade: a cada passo da câmera, fazer um teste de interseção com todos os objetos da cena

• Um objeto representado com 10.000 triângulos = 10.000 testes de interseção raio-plano.

Page 13: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Estruturas de Dados Espaciais

• Estruturas de dados para armazenar informação geométrica de forma eficiente– Detecção de colisão (vai bater?)– Busca de localizações (correio mais próximo?)– Simulações químicas– Renderização (ray-casting, ray-tracing)

• Principais: bounding-volume hierarquico, grids, Octrees, BSP-trees

Page 14: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Bounding Volumes• Noção simples: embrulhe coisas complexas com

uma envoltória mais simples– Exemplo: caixa envolvendo objeto complexo– Raio não bate no objeto complexo sem bater na caixa– Adiciona algum cálculo, mas compensa– Mais comuns: caixa e esfera

Page 15: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Hierarquical Bounding Volume

• Estrutura em forma de árvore– Lista de bounding-volumes (esferas, caixas etc), onde

cada BV contém uma lista de sub-volumes

– Exemplo, corpo humano, caixa principal com listas• Cabeça com sub-listas Nariz, Orelhas, Face, Cabelo

• Corpo com sub-listas:– Braço direito com sublistas Braço, Antebraço, mão, 5 dedos

– Braço esquerdo com sublistas Braço, Antebraço, mão, 5 dedos

– Perna direita com sublistas Coxa, Canela, Pé, 5 dedos

– Perna esquerda com sublistas Coxa, Canela, Pé, 5 dedos

Page 16: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Teste de interseção

Page 17: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Grids

• Array 3-D de células (voxels) particiona o espaço– Cada célula aponta para uma lista de todas as

superfícies que intersectam aquela célula

Page 18: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Teste de interseção

Page 19: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Mais sobre Grids

• Grids are a poor choice when the world is nonhomogeneous (clumpy)– e.g. a teapot in a stadium: many polygons clustered in a small space

• How many cells to use?– too few Þ many objects per cell Þ slow

– too many Þ many empty cells to step through Þ slow

• Grids work well when you can arrange that each cell lists a few (ten, say) objects

• Better strategy for some scenes: nested grids

Page 20: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Octrees

Page 21: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

K-d Trees and BSP Trees

Page 22: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Building a BSP Tree

the subdivisionof space it implies

a BSP treeusing 2 as root

2

3 1

1

2

3a b c d

a

b

cd

viewpoint

Page 23: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Building the Tree 2

1

2a

2b3

3

2a 2b

1

viewpoint

Using line 3 for the root requires a split

Page 24: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Which Structure is Best for Ray Tracing?

Page 25: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Fim Estruturas de Dados Espaciais

Page 26: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Building a Good Tree - the tricky part

Page 27: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Uses for Binary Space Partitioning (BSP) Trees

Page 28: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Painter’s Algorithm with BSP trees

Page 29: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Drawing a BSP Tree

front_to_back(tree, viewpt) { if (tree == null) return; if (positive_side_of(root(tree), viewpt)) { front_to_back(positive_branch(tree, viewpt); display_polygon(root(tree)); front_to_back(negative_branch(tree, viewpt); } else { …draw negative branch first…} }

Page 30: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Drawing Back to Front

1

2a

2b3

3

2a 2b

1

viewpoint

Hidden surface removal

Page 31: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Clipping BSP Trees

Page 32: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Clipping BSP Trees

Page 33: Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as direções Modelar fótons como partículas que saem dos

Clipping Using Spatial Data Structures