You are on page 1of 10

Otimizao do Processo de Gerao de Malhas Triangulares a partir de Polgonos Prof. Dr.

Andr Luiz Battaiola Departamento de Computao / UFSCar Rod. Washington Luiz, km 235 - So Carlos - SP - 13565-905 andre@dc.ufscar.br Projeto AVVIC Projeto ProTem-CNPq / Processo Institucional Nmero 680.063/95.1 Abstract: Triangle meshes represent a simple and an efficient form to describe 3D surfaces and many graphics libraries have functions to draw these meshes. Thus, as in terms of storage as in terms of performance of the exhibition process, it is important that these meshes are compact as much as possible. An efficient method to optimize these meshes is described in this paper. Resumo: Malhas triangulares representam uma forma simples e eficiente de se descrever superfcies 3D e vrias bibliotecas grficas contm funes para a exibio destas malhas. Tanto em termos de armazenamento quanto em termos de performance do processo de exibio importante que estas malhas sejam a mais compacta possvel. Este artigo descreve um mtodo eficiente de otimizao destas malhas em relao a estes requisitos. Palavras Chaves: Computao Grfica, Visualizao Cientfica e Volumtrica. 1. Introduo

O projeto AVVIC (Ambiente Virtual de Visualizao Interativa Compartilhada) preve o uso conjugado de sistemas de visualizao cientfica e de realidade virtual, de forma a possibilitar que as melhores caractersticas de cada um sejam aproveitadas em funo do modo de uso. Por exemplo, os sistemas de visualizao cientfica permitem de maneira mais apropriada a gerao de grficos cientficos complexos com alta qualidade de exibio, enquanto os sistemas de realidade virtual permitem a navegao virtual. O uso conjugado destes dois sistemas envolve a troca de objetos entre eles e a sua consequente manipulao. Neste texto, o objeto analisado a isosuperfcie, superfcie que cruza uma grade tridimensional em pontos cujos valores so iguais a um valor especfico denominado isovalor (fig. 1). Em visualizao cientfica comum o uso de isosuperfcies para a gerao de grficos complexos relacionados as reas de medicina, de fsica, de meteorologia, etc. Outro ponto a ser considerado em relao as duas reas um processo eficiente de animao. Neste caso, a taxa mnima de animao aceita a de 8 quadros por segundo. Dois procedimentos simples normalmente seguidos para o aumento da velocidade de animao armazenar a descricao dos objetos em memria e evitar repetidas inicializaes (overhead) de funes de exibio. O escopo deste estudo analisar um mtodo que permita montar, armazenar e animar isosuperfcies. 2Representao das Isosuperfcies

A partir de uma grade tridimensional de pontos, algoritmos como o dos cubos marchantes [LOREN87], [BATT92], interpolam uma malha poligonal ou triangular que representa uma isosuperfcie (figs. 1 e 2). No caso dos cubos marchantes, uma configurao prvia calculada para

os cubos da grade em funo do valor 0 ou 1 associado aos oito vrtices de cada cubo. O valor 0 significa ponto dentro da curva, dado que o valor deste ponto da grade menor do que o isovalor. O valor 1 significa o oposto. Dado que cada cubo tem oito vrtices e que associado o valor 0 ou 1 a cada um deles, cada configurao de cubo identificada por um nmero entre 0 a 255. Isosuperfcies podem ser descritas atravs de malhas triangulares. Estas malhas so de grande interesse porque podem ser descritas de uma forma bastante eficiente [FLORI87], [FOLEY90]. No caso do exemplo na figura 2, 1, 2, 3, 4 e 5 so ndices dos vrtices dos tringulos, cujas coordenadas so conhecidas. A lista 1-2-3-4-5 indica que o tringulo A definido pelos vrtices 1-2-3, o B pelos vrtices 2-3-4, o C pelos vrtices 3-4-5, e assim sucessivamente no caso desta lista ser maior. Para efeitos de animao de uma sequncia de isosuperfcies relacionadas a diferentes instantes de tempo, interessante armazen-las sequencialmente em memria (fig. 4). Cada superfcie composta de um vetor de ndice de formao dos tringulos, dos vetores das coordenadas dos vrtices e dos vetores das normais (fig. 5). Cada normal associada ao vrtice correspondente ao seu ndice e elas so requeridas durante o processo de renderizao. Quanto menor as malhas menos espao elas ocupam e consequentemente mais malhas podem ser armazenadas em memria. Quanto menor o nmero de malhas desconexas, menos vezes chamada a rotina de exibio da biblioteca grfica e, assim, menor o impacto do tempo requerido pelo processo de inicializao destas rotinas. Alm dos requisitos de eficiencia do processo de exibio da malha, h outro relacionado com tempo gasto no processo de montagem da malha a partir dos polgonos determinados para cada cubo da grade. Isto implica que h um compromisso entre o tamanho da malha e o tempo gasto na sua montagem. O mtodo descrito consegue balancear satisfatoriamente este compromisso. Na otimizao do processo de montagem das malhas considerou-se alguns mecanismos especiais de descrio das malhas triangulares que podem estar ou no presentes em diferentes bibliotecas grficas. No mtodo de otimizao descrito, estes mecanismos esto incorporados, mas podem ser desabilitados no caso da biblioteca grfica em questo no permit-los. Estes mecanismos esto descritos no tem 3. A idia do mtodo descrito no tem 4 e medidas de sua eficincia no tem 5. Concluses esto no tem 6 e a referncia bibliogrfica no tem 7.

Pontos internos superfcie Pontos externos superfcie

Fgura 1: Grade tridimensional e a interpolao de parte da superfcie.

2 B A 1
0x19 0x1B

C 3 5

Figura 3: Malha de Tringulos

Fgura 2: Polgonos que interpolam parte da curva

3.

Mecanismos Especiais das Bibliotecas Grficas

Os dois mecanismos especiais utilizados no mtodo so a duplicao de tringulo e a linha de conexo (fig. 6). O primeiro mecanismo mais facil de ser suportado pelas bibliotecas grficas, sendo o segundo usualmente menos aceito. Um simples teste permite verificar se a biblioteca passvel de uso suporta estes mecanismos, sendo que bibliotecas como a XFDI [STELL90], a GL [GL90] e a OpenGL [OGL93a], [OGL93b], aceitam ambos. Note-se que o teste deve ser feito a partir da superfcie renderizada. A utilidade do primeiro mecanismo permitir que se mude de direes durante o percurso pela malha. Assim, caso a malha de tringulos do objeto da figura 1 seja descrita pelos ndices 1-3-2-4-3-5, o tringulo B referenciado duas vezes, ou seja, 3-24 e 2-4-3, o que permite que se mude a direo de percurso e se defina o objeto atravs de uma nica malha. Certamente, o objeto analisado no necessita deste recurso, pois pode ser definido atravs da malha 1-2-3-4-5. A descrio anterior s foi utilizada para exemplificar o uso do mecanismo. O segundo mecanismo serve simplesmente para conectar malhas distintas no espao, o que possibilita a descrio de uma superfcie atravs de uma nica malha. No caso de uma superfcie plana descrita atravs de retngulos, a figura 7a apresenta a forma de descrio da malha desta superfcie usando o primeiro mecanismo e a 7b a forma de descrio utilizando o segundo mecanismo. Note-se que, caso no seja possvel o uso do mecanismo da linha de conexo, a definio da superfcie segundo o esquema da figura 7a origina apenas uma malha, enquanto a definio pelo esquema da figura 7b origina trs malhas. Como o interesse analisar o uso destes mecanismos, ser suposto que possvel o uso deste dois mecanismos. Assim, tem-se que as malhas das superfcies da fgura 7 so dadas por: 7a: 1-5-2-6-3-7-4-8-7-12-11-16-15-11-14-10-13-9-10-5-6-10-7-11 7b: 1-5-2-6-3-7-4-8-8-5-5-9-6-10-7-11-8-12-12-9-9-13-10-14-11-15-12-16 Por este exemplo deduz-se que para o caso do mecanismo da mudana de direo (fig. 7a), o nmero de vrtices da malha para uma superfcie plana de dimenso 4x4 24. Para o caso de uma malha genrica nx x ny, o nmero de vrtices da malha determinado considerando-se inicialmente a descrio dos quadrilteros (clulas) da borda do plano. Assim, tomando-se como base o percurso sobre os quadrilteros da borda do plano na figura 7a e considerando-se que nx 4 e ny 4, tem-se:

NVct_md(nx,ny) = (2*nx) + 1 + (2*(ny-2)) + 1 + (2*(nx-2)) + 1 + (2*(ny-3)) = 4nx + 4ny - 11


Superf.1 Superf.2 ............. Superf.n t1 t2 ............. tn

Figura 4: Distribuio das isosuperfcies na memria.

Superf.k

v2

v5

T2 T1

Indices 5 10 8 8 ... ... ...

v1

v3

6 21 ... ... ...

Vrtices
x1 y1 z1 x2 y2 z2 x3 y3 z3

Normais
nx1 nx2 nx3 ny1 ny2 ny3 nz1 nz2 nz3

Figura 5: Composio de cada isosuperfcie.


6

5 2 B A 1 3 4

Figura 6: Linha de Conexo


13 14 15 16 13 14 15 16

10

11

12

10

11

12

Figura 7a: Figura 7b: Malha com mudana de direao (7a) e sem (7b)

Ressalte-se que NVct_md(nx,ny) o nmero de vrtices da malha que descreve os quadrilteros da borda do plano na grade de dimenso nx x ny usando o mecanismo da mudana de direo. No caso da grade ser quadrada, com dimenso n x n, tem-se: NVct_md(n) = 8n - 11 = 2*(4n-8) + 5 = 1 + 2*(NQct(n) + 2) NQct(n) o nmero total de quadrilteros que formam a borda externa do plano. Considerando-se que no caso de uma borda interna, o ponto inicial j foi contado na borda anterior, tem-se: NVct_md(m) = 2*(NQct(m) + 2) Assim, o nmero total de vrtices da malha, NTVmd(n), no caso do uso do mecanismo de mudana de direo dado por: NTVmd(n) = 1 + NVct(n) + NVct(n-2) + ... + NTV(k)

sendo NTV(k) o nmero total de vrtices da malha mais interna da grade, considerandose que o ponto inicial desta malha foi computado no nmero de vrtices da malha da borda imediatamente externa a esta. O valor de k igual a 2 no caso de n ser par e igual a 3 no caso de n ser impar. Calculando-se a malha para n igual a 2 e 3 tem-se: NTVmd(3) = 11 NTVmd(2) = 3 = 2*(NQct(3) + 2) - 1 = 2*(NQct(2) + 2) - 3

NQct(m) o nmero dos quadrilteros de contorno de uma grade quadrada de dimenso n x n. NTQ(n) o nmero total de quadrilteros desta grade. Logo no caso de n ser par, tem-se: NTVmd(n) 3 = 2*( NQct(n) + NQct(n-2) + ... + NQct(2) + 2 + 2 + ... + 2) - 2 = 2*NTQ(n) + (n/2)*4 - 2 = 2*(n-1)2 + 2*n - 2 = 2*(n-1)*(n-1) + 2(n-1) = 2*(n-1)[(n-1) + 1] = 2*n*(n-1) No caso de n ser impar, tem-se: NTVmd(n) = NVct(n) + NVct(n-2) + ... + NTV(3) = NVct(n) + NVct(n-2) + ... + NTV(2) = 1 + 2*(NQct(n) + 2) + 2*(NQct(n-2) + 2) + ... + 2*(NQct(2) + 2) -

= 1 + 2*(NQct(n) + 2) + 2*(NQct(n-2) + 2) + ... + 2*(NQct(3) + 2) 1 = 2*[NQct(n) + NQct(n-2) + ... + NQct(3) + 2 + 2 + ... + 2] = 2*[NTQ(n) + ((n-1)/2)*2] = 2*[(n-1)2 + (n-1)] = 2*n*(n-1) Assim: NTVmd(n) = 2*n*(n-1) n inteiro e n 2

Note-se que para n = 4, tem-se uma malha com 24 vrtices, como exemplificado acima. Para n = 50, tem-se uma malha com 4900 vrtices (tab. 1). Para o caso de uso de linhas de conexo (fig. 7b), o nmero total de vrtices da malha (NTVlc(nx,ny)) do plano em uma grade de dimenso nx x ny, dado por: NTVlc(nx,ny) = (nx-1)*nv_faixa_h + nv_lin_conex Sendo nv_faixa_h o nmero de vrtices necessrios para se definir os quadrilteros de uma faixa horizontal da grade e nv_lin_conex o nmero de vrtices extras necessrios para se compor a linha de conexo. Logo, para nx e ny 3, tem-se: NTVlc(nx,ny) = (ny-1)*2*nx + (ny-2)*2 = 2*(nx*ny - nx + ny - 2) Se nx igual a ny, tem-se: NTVlc(n) = 2*(n2-2) = 2*(n -1) - 2 = 2*(n+1)*(n-1) - 2 Assim, o nmero de vrtices da malha do plano na grade 4x4 (fig. 7b) 28. Para o caso de uma grade 50x50, o nmero de vrtices 4996. Com base nestas frmulas, tem-se que: NTVmd(n) / NTVlc(n) = [2*n*(n-1)] / [2*(n+1)*(n-1) - 2] Para n tem-se: NTVmd(n) / NTVlc(n) = 1 Logo, quanto maior a dimenso da grade, mais prximo o nmero de vrtices obtido pelo mtodo da mudana de direo fica do nmero de vrtices obtido pelo mtodo da linha de conexo. No entanto, o uso do mtodo da mudana evita quebrar desnecessariamente a malha, o que principalmente significativo quando o mecanismo da linha de conexo no pode ser utilizado. Alm disto, a idia utilizar os dois
2

n3

mecanismos simultaneamente. No tem 5 so feitas outras consideraes sobre a eficincia do processo em relao ao nmero de vrtices da malha. 4. Descrio do Mtodo

A operao do algoritmo exige como dado de entrada a correlao entre vrtices e polgonos, assim a tabela Pol_f_Vert, onde se tem a descrio dos polgonos em funo dos vrtices suficiente. No entanto, para otimizar a performance do algoritmo, a tabela Vert_f_Pol, que relaciona vrtices em funo de polgonos, utilizada para uma busca rpida dos polgonos que ainda no foram selecionados e tambm de seus vrtices. Note-se que o algoritmo dos cubos marchantes, por exemplo, pode gerar estas tabelas. Como tanto a velocidade de processamento quanto o tamanho da malha so requisitos para o mtodo de gerao das malhas, o uso de mscaras permite que, de forma simples, se satisfaa estes dois requisitos. A figura 8 ilustra o esquema de aplicao das mscaras. Por exemplo, considere-se que o percorrimento da malha tenha parado na aresta 3-4 do quadriltero, ou seja, a malha est definida como ---1-2-3-4, e se deseja conectar a ela o hexgono. Neste caso, se aplica uma mscara sobre o hexgono, de tal forma que se define de imediato o caminho 4-5-6-7-8. Isto possibilita que se adicione a malha quatro tringulos de imediato e, consequentemente, se aumente a performance do processo de sua gerao. No caso de incio de malha, a mscara pode ser utilizada para aumentar a chance de continuidade de percurso. Considerando-se os polgonos da figura 9, nota-se que vrias malhas so passveis de definio e, em particular, as malhas: 1-2-3-4-5-6-7 e 2-1-4-3-6-57. No entanto, como h um outro polgono conectado a aresta 7-8, a segunda definio no permite que se continue crescendo a malha atravs desta aresta. Para resolver este problema de forma eficiente basta apenas se examinar a aresta do segundo polgono que contm uma conexo e aplicar a mscara de forma inversa, conforme indicado pelas setas na figura 9.

6 2

4 7 3 1 5

Figura 8: Esquema de Aplicao da Mscara

Se o segundo polgono, pentgono na figura 9, conter vrias arestas conectadas a outros polgonos, o algoritmo escolhe uma delas, sem se preocupar com a posterior continuidade da malha. Caso verificaes posteriores ocorressem, o tempo de processamento iria aumentar e, como mencionado a seguir, o algoritmo estabelecido conseguiu um bom compromisso entre tamanho de malha e tempo de processamento. O uso da mscara neste processo implica em sua definio a priori. Para tanto, devese definir os polgonos a serem processados para uma aplicao em especfico, por

exemplo, o algoritmo dos cubos marchantes trabalha com polgonos de 3, 4, 5 e 6 lados. Posteriormente, para cada polgono, fixa-se um vrtice e se mapeia as 2 alternativas de percurso. Por exemplo, no caso do pentgono da figura 8, fixando-se o vrtice 3, tem-se as seguintes opes de percurso: 3-4-5-6-7 e 3-5-4-7-6. 5. Medidas de Eficincia do Mtodo

A eficincia do mtodo foi considerada em termos da dimenso da malha gerada e do tempo gasto na sua gerao, o que implica no balanceamento destes dois parmetros. A dimenso da malha pode ser diminuida quando se inicia a sua gerao pelo vrtice com o menor nmero de polgonos associados, dado que os outros vrtices apresentaro um maior nmero de alternativas de movimentao. Observe-se que no caso do plano (fig. 7), a escolha do vrtice 5 ao invs do 1, por exemplo, gera a sequncia 5-1-6-2-7-38-4 para a faixa inferior do plano. A partir do vrtice 4 no possvel se continuar a movimentao e uma linha de conexo tem que ser inserida para que se inicie o trajeto a partir da faixa imediatemante superior.
5 7 3 1 6 8

4 2

Figura 9: Aplicao da mscara na gerao da malha

Para se precisar o impacto na performance do algoritmo da busca do vrtice associado ao menor nmero de polgonos, foi medido o tempo de gerao da malha para uma grade que contm um plano (tab. 1) e para outra que contm trs esferas que se interceptam no espao (tab. 2). Os testes foram feitos com grades de trs diferentes dimenses. Note-se que em termos de complexidade, a malha associada a grade das esferas se aproxima bastante das malhas relacionadas a superfcies reais, como, por exemplo, isosuperfcies de presso, umidade, temperatura, etc. O tempo de execuo do algoritmo no foi explicitado em termos absolutos nas tabelas porque este valor pode variar de mquina para mquina e porque tambm se considerou que o ponto a ser enfatizado a relao entre os tempos com e sem busca do vrtice com o menor nmero de polgonos. Ressalte-se, porm, que em estaes de trabalho de porte mdio, o algoritmo permite gerar a malha das esferas com dimenso 50x50x50 em tempo menor do que 1 segundo. Pelas duas tabelas pode-se notar que a dimenso da grade aumenta muito pouco percentualmente quando no se faz a busca do vrtice com o menor nmero de polgonos, 2% a mais no caso do plano da grade 50x50x50, no entanto, o tempo de

execuo do algoritmo com a busca deste vrtice aumenta significativamente, em torno de 4 vezes para o plano na mesma grade. O aumento no tempo devido a busca do vrtice livre em uma das tabelas de dados associada ao mtodo. Para se achar o vrtice com o menor nmero de polgonos associados deve se pesquisar a tabela Pol_f_Vert (polgonos em funo de vrtices) a cada comeo de um novo percurso. Quanto maior o nmero de vrtices maior o tempo gasto na pesquisa desta tabela. Duas razes so significativas para se ter grades com tamanho muito prximo quando se utiliza ou no a busca do vrtice com o menor nmero de polgonos. Primeiramente, porque quando se alcana um vrtice que no permite continuar caminhando pelos polgonos pode-se utilizar o recurso da linha de conexo, o qual tem um pequeno impacto em termos de nmero de vrtices na dimenso total da malha. Em segundo lugar, como citado no tem 4, o algoritmo utiliza o mecanismo das mscaras (aplicao inversa) para inicialmente decidir de forma eficiente qual o melhor caminho a seguir, o que, em geral, apresenta um bom resultado em termos de tamanho para as malhas geradas. Devido a estes fatos, na implementao corrente do algoritmo em uso no utiliza a busca do vrtice com menor nmero de polgonos, no entanto, este recurso pode ser facilmente habilitado.
Tabela 1 - PLANO Dimenso da Malha Dif_Relat. Dif_Relat. (Dimenso) (Tempo) Com Busca Sem Busca (CB/SB) (CB/SB) 20x20x20 760 796 0,95 2,66 50x50x50 4900 4996 0,98 3,86 70x70x70 9660 9796 0,98 4,10 Grade Tabela 2 - ESFERAS Dimenso da Malha Dif_Relat. Dif_Relat. (Dimenso) (Tempo) Com Busca Sem Busca (CB/SB) (CB/SB) 20x20x20 3583 3647 0,98 1,30 50x50x50 25831 26001 0,99 1,89 70x70x70 51871 52060 0,99 2,39 Grade

6.

Concluses

De acordo com o que foi exposto anteriormente, considerou-se que o objetivo de se elaborar um mtodo eficiente para a gerao de malhas triangulares a partir de um conjunto de polgonos foi atingido satisfatoriamente. A saida do montador da malha triangular pode ser utilizado diretamente em bibliotecas grficas como a XFDI, GL e OpenGL, e possivelmente algumas outras. Note-se que como muitos pacotes grficos esto sendo desenvolvidos sobre a OpenGL, este mtodo pode ser til para outras aplicaes. De acordo com testes preliminares realizados, constatou-se que a biblioteca VRML 1.0 no opera a contento com o mecanismos anteriormente citados, o que faz com que seja necessrio extrair os tringulos da malha e fazer para a exibio deles separadamente. No entanto, o fato da malha estar armazenada compactadamente em

memria favorece algum ganho na eficincia do processo de animao. Alm do que a superfcie pode ser facilmente exportada para um sistema de visualizao. Em relao ao World ToolKit [WTK96], estudos ainda no foram realizados para precisar a possibilidade ou no do uso deste mtodo. O mtodo descrito foi incorporado no gerador de isosuperfcies foi utilizado de forma integrada a um algoritmo dos cubos marchantes na gerao de grficos meteorolgicos. A figura 10 exibe uma isosuperfcie de temperatura.

Figura 10: Isosuperfcie gerada atravs do mtodo exposto.

7.

Referncias

A. L. Battaiola, Implementao de um Algoritmo Vetorizado para a Gerao de Superfcies Tridimensionais, Anais do SIBGRAPI V (1992), 145-154. [FLORI87] L. D. Floriani, Surface Representations Based On Triangular Grids, Springer-Verlag, 1987. [FOLEY90] J. Foley, A. van Dam, S. Feiner, J. Hughes, Computer Graphics Principles and Practice, Addison Wesley, 1990, pag. 473-477, 871. [GL90] Silicon Graphics Corporation, Graphics Library Programming Guide, vol. I, II, 1990. [LOREN87] W. E. Lorensen, H. E. Cline, Marching Cubes: A High Resolution 3D Surface Construction Algorithm, Computer Graphics, vol.21, num.4, julho de 1987. [MATS96] S. N. Matsuba, B. Roehl, Using VRML, Que Corporation, 1996. [OGL93a] J. L. Neider, T. R. Davis, M. Woo, OpenGL Programming Guide, Addison Wesley, 1993. [OGL93b] J. L. Neider, T. R. Davis, M. Woo, OpenGL Reference Guide, Addison Wesley, 1993. [STELL90] Stellar Computer Inc, XFDI Users and Programming Guide, 1990. [WTK96] World ToolKit Reference Manual, Sense8 Corporation, 1996.

[BATT92]

You might also like