Ricardo Guerra Marroquim Geração de malhas utilizando subdivisão adaptativa e método de compressão baseado em um modelo físico Ricardo Guerra Marroquim ricardo@lcg.ufrj.br LCG – COPPE - UFRJ 30/05/2003
Apresentação Motivação Objetivo Representação dos Polígonos Função Distância Malhas Adaptativas 4-8 Classificação dos Triângulos Buracos Sistema Modelo Físico
Motivação Os metodos tradicionais de triangulação não são capazes de tratar de maneira adequada modelos com bordas complexas, tais como modelos geológicos. Triangulações como a de Delaunay, por exemplo, resulta em triângulos com ângulos muito pequenos nestas regiões. Estes ângulos podem gerar problemas, como por exemplo de precisão.
Motivação
Motivação TDR Triangulação de Delaunay GPR
Objetivo 1) Gerar uma malha 2D adaptativa de qualidade para modelos com bordas complexas e falhas Triângulos bem formados Refinamento nas bordas 2) Gerar um modelo 3D com as mesmas características
Superfícies Arquivo .plg Lista de vértices Lista de faces -8.915414700e+00 +1.661592000e+00 +0.000000000e+00 1 -8.884706400e+00 +1.553865300e+00 +0.000000000e+00 2 -8.727057100e+00 +1.439630600e+00 +0.000000000e+00 3 ... +4.836496500e+00 +4.728590500e+00 +0.000000000e+00 300 +4.553531600e+00 +4.667572900e+00 +0.000000000e+00 301 +4.378507400e+00 +4.556913100e+00 +0.000000000e+00 302 +4.381311600e+00 +4.451062500e+00 +0.000000000e+00 303 11 303 302 301 300 299 298 297 296 295 294 293 16 292 291 290 289 288 287 286 285 284 283 282 281 280 279 278 277 23 276 275 274 273 272 271 270 269 268 267 266 265 264 263 262 261 260 259 258 257 256 255 254 Arquivo .plg Lista de vértices Lista de faces
Superfícies
Armazenamento dos Polígonos Um polígono é representado por duas estruturas. Vetor de pontos Árvore binária de segmentos Nó da árvore : identificação do primeiro e último ponto do nó, ponteiros para filho da esquerda e da direita. A 1 2 3 4 5 6 7 8 B C D E ...
Navegação no polígono Renderização : somente vetor de pontos Função distância : utiliza também a árvore para navegação na estrutura 1 2 3 4 5 6 7 8 A B C D E F G
Função Distância Cálculo da distância de um ponto ao polígono: Percorre a árvore calculando a distância do ponto ao segmento formado pelos pontos início e fim do nó. Guarda os nós percorridos em uma Heap ordenada pela distância. 1 2 3 4 5 6 7 8 A p B C D E F G H I J K L M N O I D A H E B C
Função Distância A distância utilizada para a comparação da inserção na Heap não é feita somente com a distância do ponto ao segmento. A distância será a diferença da distância do ponto com a maior distância dentro do nó A maior distância do nó é a distância do ponto mais longe do segmento formado pelo primeiro e último vertex do nó. 1 2 3 4 5 6 7 8 p dmax dpt d = dpt - dmax
Malhas 4-8 Vantagens: Malhas triangulares e quadrangulares ao mesmo tempo. Triângulos retângulos e isósceles. Refinamento em dois passos; mais precisão.
Refinamento da Malha Quad Mesh 4-8 Mesh
Refinamento 4-8
4-8 Adaptativa Mais refinamento onde for preciso Áreas com menos detalhes -> triângulo pequenos Áreas com mais detalhes -> triângulos maiores Para refinar algumas arestas é preciso as vezes refinar blocos vizinhos para garantir uma topologia consistente
4-8 Adaptativa
Refinamento Adaptativo
Classificação dos Triângulos Para realizar a projeção é preciso classificar os triângulos da malha como interiores, exteriores ou intersectando a borda da superfície. Intersectando a Borda 1 vertex fora e 2 dentro ou 2 vértices fora e 1 dentro Exterior 3 vértices fora Interior 3 vértices dentro
Classificação Para saber se um vertex está fora ou dentro é preciso ter uma função de distância com sinal. O sinal é calculado por um produto vetorial da coordenada z utilizando o vetor distância e o segmento mais próximo do vertex. a b s s x a > 0 s x b < 0 s x a = (sx * ay) - (sy * ax) s x b = (sx * by) - (sy * bx)
Classificação Problema! Vertex do triângulo está mais próximo de um vertex do polígono e os segmentos mais próximos formam um ângulo interno menor do que 90º. a s s x a > 0 b s x b > 0 p q
Classificação Solução: Inserir um ponto no interior do triângulo formado pelos segmentos mais próximos. O ponto no interior do triângulo terá a classificação oposta ao ponto do lado de fora. a s s x c < 0 c p b q r Se o ponto r estiver dentro do polígono os pontos p e q estarão fora e vice-versa.
Buracos na Superfície Para tratar buracos na superfície é preciso criar uma estrutura para cada polígono diferente e classificá-los como sendo internos ou externos. Borda Interna Borda Externa
Buracos Algoritmo força-bruta: Para cada face: Classifica um ponto da face em relação as outras faces. Se o ponto escolhido é externo a todas as outras faces esta é uma borda externa, se não esta é uma borda interna. Por enquanto só trata uma região externa com várias regiões internas. Para tratar várias regiões externas é preciso criar uma hierarquia de faces usando uma árvore por exemplo.
Problemas O sistema ainda depende de uma orientação fixa para as faces. No momento só trata circulação horária.
Problemas Os vértices do arquivo plg são transformados para coordenadas entre 0 e 1. Esta mudança na escala pode trazer problemas na resolução. A resolução da malha de subdivisão está com um limite, a partir de um certo nível de refinamento a subdivisão não altera mais.
Sistema
Próximos Passos Projeção dos vértices dos triângulos na borda: Comprimir a malha de subdivisão gerada para encaixar dentro dos limites da superfície Só a projeção pode resultar em triângulos com ângulos muito pequenos.
Massa - mola Uma idéia é utilizar um sistema de molas para comprimir a malha. Uma mola será colocada em cada aresta dos triângulos. Os vértices dos triângulos de interseção serão empurrados na direção da borda. O sistema de molas fará com que os outros vértices também sejam deslocados. Com um valor correto para o coeficiente de elasticidade os triângulos não serão muito achatados o que formaria ângulos muito pequenos. Outras idéias a serem pesquisadas: Elementos Finitos Compressão baseada em otimização