Sistemas Dinâmicos com Campo de Direções Parcialmente Conhecido
Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as...
Transcript of Estruturas de Dados Espaciais MC-930 MO-603. Ray-casting Fontes de luz enviam fótons em todas as...
![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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/1.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/2.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/3.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/4.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/5.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/6.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/7.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/8.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/9.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/10.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/11.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/12.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/13.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/14.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/15.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/16.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/17.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/18.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/19.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/20.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/21.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/22.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/23.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/24.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/25.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/26.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/27.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/28.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/29.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/30.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/31.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/32.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062512/552fc0fe497959413d8bb5a6/html5/thumbnails/33.jpg)
Clipping Using Spatial Data Structures