Um Algoritmo para a Visualização de um Terreno com Objetos Flávio Szenberg Orientador: Marcelo Gattass Co-orientador: Paulo Cezar Pinto Carvalho
Roteiro Motivação e objetivo da tese Trabalhos relacionados Algoritmo de Horizonte Flutuante Estendido Exemplos Conclusões e trabalhos futuros
Motivação
Modelo Matemático Mapa de Alturas Gráfico de uma função de duas variáveis F: Ω R 2 ( x, y) R z
Modelo Matemático (cont.) Mapas de alturas representam apenas a geometria dos terrenos. Para fins de visualização, é necessário associar a cada ponto do terreno informações relativas à sua cor (por( exemplo, componentes RGB) Mapa de cores
Representação computacional Discretização Regular Irregular
Discretização Regular Estrutura já embutida na descrição da grade. Fornece descrição volumétrica. Tipicamente envolve grande volume de dados. Formato mais comum.
Exemplo mapa de alturas mapa de cores
Objetivo da tese Um algoritmo eficiente de visualização interativa de terrenos com objetos.
Visualização interativa Tempo para geração de imagem da ordem de 0,1 seg. Aplicações Jogos; Simuladores de vôo; Sistemas Geográficos de Informações. Interatividade vs.. qualidade da imagem.
Algoritmos de Visualização Devem ser adequados à representação utilizada. Para discretização regular: baseados em objeto (por( ex.: Z-Buffer Buffer); baseados em imagem (por( ex.: ray casting).
Visualização com discretização regular usando Z-Buffer Exige uma representação dos voxels: a. pontos no topo; b. segmentos de retas; c. planos de topo; d. Triangulação dos topos; e. seção perpendicular vertical; f. faces do cubo Alto número de objetos a serem projetados. Fácil integração com objetos.
Imagens e tempos a b PC - 1,6 s SGI - 1,2 s PC - 2,3 s SGI - 2,2 s
Imagens e tempos (cont.) c d PC - 3,5 s SGI - 2,0 s PC - 2,9 s SGI - 1,7 s
Imagens e tempos (cont.) e f PC - 4,2 s SGI - 2,1 s PC - 14,2 s SGI - 6,2 s
Visualização interativa com discretização regular Representação regular favorece visualização via ray casting. Algoritmo genérico para gerar imagem mxm de um terreno nxn: : complexidade O(m 2 n). Para terrenos, com câmera vertical Algoritmo de horizonte flutuante: complexidade O(( ((m+n)m).).
Trabalhos Relacionados Cohen-Or Or,, D. et al. A Real-Time Photo- Realistic Visual Flythrough. Cohen,, D. et al. Photorealistic Terrain Imaging and Flight Simulation. Graf,, K. Ch.. et al. Perspective Terrain Visualization - A Fusion of Remote Sensing, GIS, and Computer Graphics.
Algoritmo de Horizonte Flutuante Raios correspondentes a uma mesma coluna da imagem estão contidos em um plano vertical. Processamento sincronizado da coluna da imagem e das colunas de voxels correspondentes: Se um raio não intersecta uma dada coluna de voxels,, nenhum raio subseqüente o faz. Complexidade O(m+n) por coluna da imagem.
z m y m Posição Particular da Câmera A visibilidade dos pixels de uma coluna da tela é determinada apenas pelos voxels que são interceptados pelo plano que contém o eye e a coluna em questão. x m
Visibilidade das Colunas do Terreno por Horizonte Flutuante obs d pr Plano de Visão A altura relativa a um pixel da tela varia ao longo do raio. Vista de lado h obs m 0 1 incl O valor inicial é o que corresponde ao pixel mais baixo da tela. z 0 0 1 2 i z = h obs - incl raio k m = incl / d pr Faça i variar de 1 até o fim do mapa z = z - m Enquanto (h i > z) faça pinta o pixel (k, j) atualiza m atualiza z
Terrenos com objetos Objetos: edificações, linhas de transmissão, etc. Uma alternativa: Representar objetos volumetricamente e adicioná-los ao terreno (Cohen( et al.). Desvantagens: Pode não ser a representação natural para os objetos; Requer objetos que sejam representáveis pelos mapas de alturas e cores.
Terrenos com objetos (cont.) Solução proposta Integração com sistemas gráficos usuais (OpenGL, por exemplo); Usar horizonte flutuante para produzir textura e profundidade relativas ao terreno (carregar color buffer e depth buffer); Processar objetos, atualizando os buffers produzidos no passo anterior.
Solução Proposta - Esquema Mapa de Altura Mapa de Cores Horizonte Flutuante Buffer de Cor Buffer de Profundidade OpenGL Objetos Resultado: Terreno + Objetos
Câmera Frustum de visão y e h l Plano de projeção t z e w b r Ponto de Referência x e z e=-n z e= -f
l nc i Câmera (cont.) l w r Vista de lado t visão y e θ 1 z e visão h z e x e Vista de Cima 1 b l = tan θ 2 r = tan θ 2 θ 2 tan incl b = 2 w θ 2 tan t = 2 w ( incl + h) n = 1 f = ( fatia_ máxima)
-z i -z e (visão) Cálculo de Profundidade Vista de cima x e i=n raio i Neste trabalho: n = 1 f = num. de fatias i=n+1 i=n+2 i prof i = f f f i n n
Imagens obtidas (Dados do terreno gerado pelo VistaPro)
Imagens obtidas (cont.) (Visualização de São José dos Campos)
Imagens obtidas (cont.) (Visualização de um terreno xadrez)
Resultados obtidos Ponto Fixo (Pentium 166, SGI Indigo2, imagem 320x200, terreno 512x512) Terreno com objetos Terreno sem objetos PC SGI PC SGI Passos no Algoritmo t(s) t(%) t(s) t(%) t(s) t(%) t(s) t(%) Horizonte Flutuante 0,05 23 0,18 51 0,04 50 0,13 76 Carga de Z-Buffer 0,11 50 0,11 31 - - - - Carga do Buffer de cores 0,04 18 0,04 12 0,04 50 0,04 24 Objetos 0,02 9 0,02 6 - - - - Tempo total 0,22 100 0,35 100 0,08 100 0,17 100 Quadros/seg. 4,6 3,0 14,1 5,9 Z-Buffer < 1 quadro por segundo
Resultados obtidos (cont.) Ponto Flutuante (Pentium 166, SGI Indigo2, imagem 320x200, terreno 512x512) Terreno com objetos Terreno sem objetos PC SGI PC SGI Passos no Algoritmo t(s) t(%) t(s) t(%) t(s) t(%) t(s) t(%) Horizonte Flutuante 0,11 39 0,22 57 0,10 71 0,21 84 Carga de Z-Buffer 0,11 39 0,11 28 - - - - Carga do Buffer de cores 0,04 15 0,04 10 0,04 29 0,04 16 Objetos 0,02 9 0,02 5 - - - - Tempo total 0,28 100 0,39 100 0,14 100 0,25 100 Quadros/seg. 3,7 2,8 7,2 4,2
Aperfeiçoamentos Aumento do número de fatias (maior amostragem) visão Vista de cima região contínua na projeção com uma só cor região vazia entre fatias
Aperfeiçoamentos (cont.) Resultado do aumento do número de fatias (2x) visão Vista de cima
Aperfeiçoamentos (cont.) Divisão dos Voxels Voxel[i][j] j+1 j+1 v j i i+1 j i i+1 inf v =p 1 x inf[i][j] + p2 x inf[i+1][j] + p3 x inf[i+1][j+1] + p4 x inf[i][j+1]
Imagens obtidas com aperfeiçoamentos 9 x fatias 0,78 q/s Aperfeiçoamento: maior amostragem
Imagens obtidas com aperfeiçoamentos (cont.) 8x8 sub-voxel 1,23 q/s Aperfeiçoamento: sub-voxel
Imagens obtidas com aperfeiçoamentos (cont.) 9 x fatias 8x8 sub-voxel 0,20 q/s Aperfeiçoamento: híbrido (maior amostragem + sub-voxel)
Imagens obtidas com aperfeiçoamentos (cont.) 9 x fatias 0,91 q/s Aperfeiçoamento: maior amostragem
Imagens obtidas com aperfeiçoamentos (cont.) 9 x fatias 8x8 sub-voxel 0,23 q/s Aperfeiçoamento: híbrido (maior amostragem + sub-voxel)
Imagens obtidas com aperfeiçoamentos (cont.) Aperfeiçoamento: maior amostragem
Imagens obtidas com aperfeiçoamentos (cont.)
Imagens obtidas com aperfeiçoamentos (cont.) (somente terreno - capa do SIBGRAPI 97)
Conclusões Uso de técnica específica para terrenos; Cálculo de profundidades não influiu na perfórmance; Problema com a função gldrawpixels; Utilização de notação de ponto fixo para melhor eficiência.
Trabalhos futuros Iluminação do terreno; Multi-resolução; Maior liberdade da câmera.