plano de aulas estruturas de aceleração descarte contra volume de visão descarte por oclusão ...
TRANSCRIPT
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
Estruturas de Aceleração para Visualização
Paulo Ivsonpsantos at tecgraf.puc-rio.br08-10-08
Sumário Motivação Volumes Envolventes Estruturas de Aceleração
Motivação
Por que técnicas de aceleração?
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
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
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
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
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
Necessidades básicas Volumes envolventes
Simplificar operações sobre geometrias Estruturas de aceleração
Índice espacial Agrupar geometrias próximas
Volumes Envolventes
Tratar geometrias de forma simplificada
Volumes Envolventes
Melhor ajuste Maior complexidade geométrica Maior tempo de construção
Volumes Envolventes Mais comuns
Esfera Caixa alinhada com os eixos (AABB) Caixa orientada (OBB)
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
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
OBB
Representação Centro Base ortonormal Metade das 3 extensões
Bom ajuste≡
Boa orientação
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)
OBB Clássica - Problemas Covariância nem sempre produz bom ajuste
Vértices internos podem prejudicar orientação
Estruturas de Aceleração
Finalmente!
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)
Estruturas de Aceleração Mais comuns
Grade regular Octree BSP-Tree Kd-Tree OBB-Tree
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
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
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
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
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)
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
Peculiaridades
Armazenando pontos
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
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
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
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)
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)
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