34
Plano de Aulas Estruturas de aceleração Descarte contra volume de visão Descarte por oclusão Grafo de cena: OpenSceneGraph Traçado de raios em tempo real Paulo Ivson psantos at tecgraf.puc-rio.br

Plano de Aulas Estruturas de aceleração Descarte contra volume de visão Descarte por oclusão Grafo de cena: OpenSceneGraph Traçado de raios em

Embed Size (px)

Citation preview

Page 1: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Plano de Aulas Estruturas de aceleração Descarte contra volume de visão Descarte por oclusão Grafo de cena: OpenSceneGraph Traçado de raios em tempo real

Paulo Ivson psantos at tecgraf.puc-rio.br

Page 2: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Estruturas de Aceleração para Visualização

Paulo Ivsonpsantos at tecgraf.puc-rio.br08-10-08

Page 3: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Sumário Motivação Volumes Envolventes Estruturas de Aceleração

Page 4: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Motivação

Por que técnicas de aceleração?

Page 5: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Motivação

Isosuperfície de Richtmyer-Meshkov: 100 milhões de triângulos

Estátua de São Matheus escaneada a laser: 372 milhões de triângulos

Page 6: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Motivação

Boeing 777, modelo CAD: 350 milhões de triângulos

P-43: 30 milhões de triângulosP-40: 13 milhões de triângulos

Page 7: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Motivação Desafios

Aplicação interativa (i.e. >10fps) CPU

Ordem de complexidade de algoritmos GPU

Quantidade de memória Capacidade de processamento Taxa de transferência

Page 8: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Motivação Técnicas de Aceleração

Reduzir complexidade de algoritmos Reduzir volume de dados a ser processado pela

placa gráfica Sem prejudicar a qualidade final da imagem

Page 9: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Técnicas mais comuns Descarte por visibilidade

Volume de visão Oclusão

Substituição de geometria Impostores Primitivas paramétricas Voxels

Nível de detalhe (LOD) Discreto Contínuo Adaptativo

Page 10: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Necessidades básicas Volumes envolventes

Simplificar operações sobre geometrias Estruturas de aceleração

Índice espacial Agrupar geometrias próximas

Page 11: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Volumes Envolventes

Tratar geometrias de forma simplificada

Page 12: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Volumes Envolventes

Melhor ajuste Maior complexidade geométrica Maior tempo de construção

Page 13: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Volumes Envolventes Mais comuns

Esfera Caixa alinhada com os eixos (AABB) Caixa orientada (OBB)

Page 14: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

AABB

Construção O(n) Para cada vértice

Armazenar mín. e máx. para coordenadas x, y e z

Ajuste nem sempre bom

Page 15: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Esfera Construção O(n)

Obter AABB Centro ← centro da AABB Raio ← distância entre centro e

vértice da caixa

Ajuste geralmente ruim Rápida de construir Algoritmos eficientes baseados

em distância

Page 16: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

OBB

Representação Centro Base ortonormal Metade das 3 extensões

Bom ajuste≡

Boa orientação

Page 17: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

OBB Clássica Média

M = 1/n * SUM( all vertices ) Matriz de covariância

Análise estatística da distribuição dos vértices em torno da média

C[i][j] = 1/n * SUM( vm[i] * vm[j] ) m = média vm = v – m

Autovetores ortonormais → base da OBB

Complexidade O(n)

Page 18: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

OBB Clássica - Problemas Covariância nem sempre produz bom ajuste

Vértices internos podem prejudicar orientação

Page 19: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Estruturas de Aceleração

Finalmente!

Page 20: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Estruturas de Aceleração Objetivos

Agrupar geometrias para simplificar operações e reduzir complexidade de algoritmos

Aplicações Determinar visibilidade de várias geometrias (descarte por

visibilidade) Dado ponto no espaco saber geometrias próximas (seleção,

traçado de raios) Dada geometria, saber outras próximas (detecção de colisão,

vizinhos próximos)

Page 21: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Estruturas de Aceleração Mais comuns

Grade regular Octree BSP-Tree Kd-Tree OBB-Tree

Page 22: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Grade Regular

Subdivisão espacial Regular Não-adaptativa

Células de tamanho uniforme Largura, altura e profundidade

Não precisam ser iguais entre si São iguais para todas as células

Aplicações principais Busca por vizinhos próximos Traçado de raios

Page 23: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Construção

1. Encontrar AABB da cena2. Determinar número de células

3. Para cada geometria Determinar quais células ela ocupa

Complexidade O(n)

3VkNdxNx 3

VkNdyNy 3

VkNdzNz

Page 24: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Determinar células ocupadas Dado ponto no espaço, qual célula ele ocupa?

1. Obter AABB da geometria2. Determinar cellStart, cellEnd3. Calcular interseção exata de cada célula com

a geometria

Page 25: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Octree Estritamente 8-ária

Todo nó possui zero ou oito filhos Subdivisão regular

Alinhada com eixos Na mediana espacial

Desvantagens Regularidade Orientação fixa dos planos

Aplicações principais Detecção de colisão Descarte por visibilidade

Page 26: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Construção

1. Testar critério de parada• Número mínimo de geometrias• Profundidade máxima da árvore

2. Classificar geometrias em cada octante• Comparar com centro do nó• Usar volumes envolventes• Duplicar referências

3. Chamadas recursivas para cada nó filho• Árvore incompleta: não guarda filhos vazios

Complexidade O(n lg n)

Page 27: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

kd-Tree Estritamente binária Um plano de corte por nó

Alinhado com um dos eixos coordenados Posicionado arbitrariamente

Distribuição irregular de geometrias Adapta-se melhor do que Octree

Aplicações principais Busca por vizinhos próximos Traçado de raios

Page 28: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Peculiaridades

Armazenando pontos

Page 29: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Construção1. Testar critério de parada2. Encontrar “melhor” plano de corte

Eixo: alternado, maior extensão da caixa do nó Posição: mediana espacial, heurística

3. Classificar geometrias em cada lado do plano4. Chamadas recursivas para cada nó filho

Complexidade O(n lg n) Depende da heurística para encontrar plano de

corte

Page 30: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

OBB-Tree Estritamente binária Um plano de corte por nó

Posicionado na média dos centros dos objetos Ao longo do maior eixo da OBB

Aplicação principal Detecção de colisão

Page 31: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Construção

1. Testar critério de parada2. Calcular plano de corte

Eixo: maior extensão da caixa do nó Posição: média dos centros dos objetos

3. Classificar geometrias em cada lado do plano4. Chamadas recursivas para cada nó filho

Complexidade O(n lg n) Depende do algoritmo de construção da OBB

Page 32: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

BSP-Tree Estritamente binária Um plano de corte por nó

Orientação arbitrária Posição arbitrária

Flexibilidade na construção Escolha de um “bom” plano de corte

Aplicação principal Remover superfícies ocultas (HSV)

Page 33: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Construção

1. Testar critério de parada2. Calcular plano de corte

Eleger um polígono, heurística

3. Classificar geometrias em cada lado do plano• Partir geometrias que atravessem o plano de corte

4. Chamadas recursivas para cada nó filho

Complexidade O(n lg n)

Page 34: Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em

Próximas aulas Como usar estas estruturas para melhorar

desempenho de visualização Descarte contra volume de visão Descarte por oclusão Grafo de cena: OpenSceneGraph

Traçado de raios em tempo real