340 likes | 430 Views
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 Ivson psantos at tecgraf.puc-rio.br
E N D
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 Ivson psantos at tecgraf.puc-rio.br 08-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ângulos P-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
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 Grade Regular
Construção • Encontrar AABB da cena • Determinar número de células • Para cada geometria • Determinar quais células ela ocupa • Complexidade O(n)
Determinar células ocupadas • Dado ponto no espaço, qual célula ele ocupa? • Obter AABB da geometria • Determinar cellStart, cellEnd • 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 • Testar critério de parada • Número mínimo de geometrias • Profundidade máxima da árvore • Classificar geometrias em cada octante • Comparar com centro do nó • Usar volumes envolventes • Duplicar referências • 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ção • Testar critério de parada • Encontrar “melhor” plano de corte • Eixo: alternado, maior extensão da caixa do nó • Posição: mediana espacial, heurística • Classificar geometrias em cada lado do plano • 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 • Testar critério de parada • Calcular plano de corte • Eixo: maior extensão da caixa do nó • Posição: média dos centros dos objetos • Classificar geometrias em cada lado do plano • 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 • Testar critério de parada • Calcular plano de corte • Eleger um polígono, heurística • Classificar geometrias em cada lado do plano • Partir geometrias que atravessem o plano de corte • 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