ambiente interactivo de visualização para apoio à decisão...
TRANSCRIPT
UNIVERSIDADE NOVA DE LISBOA
FACULDADE DE CIÊNCIAS E TECNOLOGIA
DEPARTAMENTO DE INFORMÁTICA
Ambiente interactivo de visualização para apoio à
decisão em modelos de gestão florestal
André Osório e Cruz de Azeredo Falcão
Dissertação apresentada na Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa para obtenção do grau de Mestre em Engenharia Informática
Orientador: Prof. Doutor Manuel João Toscano Próspero dos Santos
Lisboa
2004
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
2
AGRADECIMENTOS
Não é possível deixar passar esta oportunidade sem agradecer às pessoas e entidades
responsáveis que tornaram este trabalho possível.
Em primeiro lugar, ao meu orientador, o Professor Manuel Próspero dos Santos que me
motivou com críticas e observações sempre pertinentes e contribuiu para que esta tese se
tornasse uma realidade.
Em segundo lugar à minha ex-colega Marlene Marques pela paciência com que esteve comigo
a dissecar as fragilidades geométricas do ArcView.
Também aos colegas do ISA, José Guilherme Borges, José Tomé, Margarida Tomé, Sofia
Cerasoli, Maria da Conceição Caldeira, Miguel Bugalho, Paula Soares, Helena Martins, Rui
Pedro Ribeiro e Vanda Oliveira, que viram e experimentaram os "Landscapers", dizendo-me
que não estavam tão maus quanto eu julgava.
Agradeço também à Fundação para a Ciência e a Tecnologia que, através da minha bolsa de
Pós-Doutoramento (SFRH/BPD/7135/2001), garantiu a disponibilidade para a realização
deste trabalho e pelo projecto Sapiens (ref.36332/2000), que providenciou a que os dados de
base estivessem disponíveis. Também ao Engenheiro José Manuel Rosendo da Direcção
Regional de Agricultura do Algarve, que me disponibilizou a informação fotointerpretada e a
altimetria do Algarve no âmbito da realização do PROF (Medida 8.1 do Programa AGRO -
Projecto 299).
Finalmente, à Inês e ao Gonçalo, que suportaram as noitadas e fins de semanas de trabalho,
enquanto isto não ficou pronto.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
3
Resumo
Esta dissertação discute a possibilidade da inclusão de preferências dos utilizadores em
procedimentos de gestão e avaliação de cenários de gestão florestal. O problema não é trivial
uma vez que a complexidade geométrica de cenas naturais é muito elevada. Para abordar este
tópico, foram implementadas e desenvolvidas um conjunto de técnicas computacionais, que
envolvem desde a preparação dos dados iniciais, até aos procedimentos de desenho da
geometria. Desta forma, são descritas as operações que possibilitam a transformação da
informação proveniente de um sistema de informação, referindo detalhadamente os
algoritmos utilizados para a decomposição geométrica das coberturas geográficas.
Seguidamente são demonstradas as arquitecturas de dois protótipos desenvolvidos que
permitem a navegação, em tempo de execução, sobre os cenários escolhidos. Uma primeira
versão foi estruturada para funcionar sobre áreas de média dimensão, garantindo, no entanto,
a presença de pontos de referenciação geográfica. A segunda versão do protótipo permite uma
navegação sobre áreas florestais com dimensão arbitrária, que no caso de teste se estendem
até cerca de 95,000 ha, usando um frustum de 2.0 km. Conseguiu-se uma representação
correcta de paisagens reais com desempenhos sustentados de mais de 30 imagens por segundo
desenhando mais de 1 milhão de vértices por cena.
Palavras chave: computação gráfica; representação de paisagens; desenho de vegetação;
gestão de recursos naturais; avaliação de contingentes
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
4
Abstract
This dissertation discusses the possibility of including user preferences in participative
decision procedures of forest management scenarios. The problem is not trivial as the
geometric complexity of natural scenes is very high. To address this issue, a number of
computational techniques has been developed and implemented. Initially, a detailed overview
of forest data pre-processing procedures is described, focusing on terrain geometric
decomposition algorithms. Then, two different approaches to address the rendering problem
of vegetation-covered terrain are described. Both prototypes provide basic landscape
navigation tools for any forest management scenario defined. The first version has been
structured to work over medium-sized landscapes, guaranteeing the presence of geographical
reference points. The second approach provides more visually pleasing results, allowing for
view frustums of 2.0 km long, over real world landscapes that can extend arbitrarily. The
current prototype was tested over a 95,000 ha area. With this second prototype landscapes
were found to be accurately represented with sustained frame rates above 30 frames per
second, rendering over 1 million vertices per frame.
Key words: computer graphics; landscape rendering; vegetation rendering; natural resources
management; contingent valuation
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
5
ÍNDICE
1. INTRODUÇÃO................................................................................................................9
1.1. VISUALIZAÇÃO INTERACTIVA DE PAISAGENS FLORESTAIS..............................................9 1.2. O PROCESSO DE TOMADA DE DECISÃO EM GESTÃO FLORESTAL..................................... 10
1.2.1. Visão geral de um SAD em gestão de recursos florestais..................................... 11 1.2.2. Sistema de gestão de Informação ........................................................................ 11 1.2.3. Simulação........................................................................................................... 12 1.2.4. Modelação da gestão .......................................................................................... 13 1.2.5. Integração do Visualizador no SAD.................................................................... 14
1.3. O PROBLEMA COMPUTACIONAL.................................................................................. 14 1.5. ORGANIZAÇÃO DO TRABALHO .................................................................................... 15
2. PROCESSAMENTO DA INFORMAÇÃO.................................................................. 17
2.1. INFORMAÇÃO FLORESTAL........................................................................................... 17 2.2. REPRESENTAÇÃO GEOMÉTRICA DAS ÁRVORES............................................................. 18
2.2.1. Métodos de representação geométrica ................................................................ 18 2.2.2. Texturação da geometria .................................................................................... 20 2.2.3. Modelação das árvores....................................................................................... 21
2.3. REPRESENTAÇÃO TEXTURAL DO TERRENO................................................................... 21 2.3.1. Tratamento da fotografia aérea .......................................................................... 23 2.3.2. Texturas individuais de sol.................................................................................. 24
2.3. GEOMETRIA DA INFORMAÇÃO GEOGRÁFICA................................................................ 24 2.3.1. Decomposição da informação em células............................................................ 25 2.3.2. Representação e leitura da informação geográfica vectorial............................... 26 2.3.3. Intersecção de polígonos .................................................................................... 27 2.3.4. Interpolação altimétrica dos vértices .................................................................. 28 2.3.5. Triangulação ...................................................................................................... 29
2.3.5.1. O problema computacional........................................................................... 29 2.3.5.2. Estrutura de dados........................................................................................ 31 2.3.5.3. Triangulação de polígonos simples............................................................... 32 2.3.5.4. Polígonos simples com ilhas......................................................................... 37 2.3.5.5. Triangulação de polígonos monotónicos....................................................... 40 2.3.5.6. Considerações finais sobre a metodologia seguida........................................ 40
2.3.6. Intersecção de triângulos com as Células de visibilidade.................................... 40 2.3.7. Cálculo das Normais .......................................................................................... 44
3. FERRAMENTAS DESENVOLVIDAS......................................................................... 47
3.1. FACTORES COMUNS.................................................................................................... 47 3.1.1. Utilização da biblioteca OpenGL........................................................................ 47 3.1.2. Utilização de extensões ao OpenGL 1.2 .............................................................. 49 3.1.3. Representação de geometria ...............................................................................49 3.1.4. Transparências e alpha blending ........................................................................ 51
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
6
3.2. LANDSCAPER 1.0................................................................................................... 54 3.2.1. Representação interna da informação................................................................. 55 3.2.2. Colocação das árvores no terreno ...................................................................... 57 3.2.3. Definição do horizonte visual..............................................................................58 3.2.4. Movimentação no terreno ................................................................................... 60
3.3. LANDSCAPER 2.0................................................................................................... 60 3.3.1. Diferenças face à versão anterior ....................................................................... 61 3.3.2. Representação da informação............................................................................. 62 3.3.3. Carregamento dinâmico do terreno .................................................................... 64 3.3.4. Colocação das árvores ....................................................................................... 65 3.3.5. Definição do horizonte visual..............................................................................67 3.3.6. Interface e Sistema de navegação ....................................................................... 69 3.3.7. Percursos predefinidos e benchmarking.............................................................. 69
4. APLICAÇÃO E RESULTADOS................................................................................... 71
4.1. ÁREAS DE TESTE......................................................................................................... 71 4.1.1. O Cantão das Hortas .......................................................................................... 71
4.1.1.1 Caracterização da área................................................................................... 71 4.1.1.2. Processamento da informação florestal......................................................... 71
4.1.2. Barlavento Algarvio e Monchique....................................................................... 72 4.1.2.1. Caracterização da informação de base .......................................................... 72 4.1.2.2. Processamento da informação florestal......................................................... 73
4.2. IMPLEMENTAÇÃO ....................................................................................................... 73 4.3. APLICAÇÃO DO LANDSCAPER 1.0. ............................................................................... 74
4.3.1. Qualidade visual................................................................................................. 74 4.3.2. Desempenho ....................................................................................................... 78
4.4. APLICAÇÃO DO LANDSCAPER 2.0................................................................................ 79 4.4.1. Qualidade visual................................................................................................. 79 4.4.2. Desempenho ....................................................................................................... 80
5. CONCLUSÕES .............................................................................................................. 85
BIBLIOGRAFIA................................................................................................................ 88
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
7
ÍNDICE DE FIGURAS
Figura 1.1. Integração do visualizador num sistema de apoio à decisão em recursos florestais
identificando os diferentes fluxos de informação e dados exteriores.............................. 12 Figura 2.1. Modelo simplificado de árvore com dois rectângulos entrecruzados ................... 20 Figura 2.2. Detalhe de fotografia aérea (voo da CELPA/CNIG -1995) antes (esquerda) e
depois (direita) da correcção espectrométrica efectuada................................................ 24 Figura 2.3. Tipos de Polígonos ............................................................................................. 30 Figura 2.3. Representação UML da estrutura de dados que define um vértice ....................... 31 Figura 2.4. - Representação da ordenação de vértices para um polígono com uma ilha ......... 32 Figura 2.5. Exemplo de um vértice concâvo situado em Pj.................................................... 35 Figura 2.6. - Exemplo de um caso "patológico" em que o número de vértices côncavos se
aproxima do número total de vértices ........................................................................... 35 Figura 2.7. Exemplo de polígono a triangular ....................................................................... 36 Figura 2.8. Resultado final da triangulação do polígono de teste........................................... 37 Figura 2.9 Processo de fusão de dois anéis por criação de dois vértices auxiliares. a) situação
inicial antes da fusão (VE - vértice pertencente ao anel exterior; VI - Vértice pertencente ao anel interior); b) situação final em que os dois anéis pertencem ao mesmo ciclo....... 39
Figura 2.10 - Decomposição de um polígono com buracos através do algoritmo Triangulação_Com_Ilhas. a) Polígono antes do processo de triangulação; b) Fusão dos buracos com o anel principal; c) resultado da triangulação final.................................... 40
Figura 2.11. Subdivisão de um triângulo por sobreposição a uma grelha ortogonal............... 43 Figura 2.12 Exemplo de subdivisão excessiva de um triângulo pela sua inserção numa grelha
ortogonal. ..................................................................................................................... 43 Figura 2.13. Exemplo do cálculo de normais para um vértice ............................................... 44 Figura 3.1. Alpha blending em OpenGL. Problemas na adequação de valore correctos de
alpha para representação da geometria. (a) glAlphaFunc(GL_GREATER 0.1); b) glAlphaFunc(GL_GREATER 0.9) )............................................................................... 54
Figura 3.2. Diagrama UML da estrutura de dados utilizada no programa Landscaper 1.0 ..... 56 Figura 3.3. Definição e desenho das células visíveis no programa Landscaper 1.0. (TC –
triângulo de cima; TB – Triângulo de baixo..................................................................60 Figura 3.4. Representação em UML das principais estruturas de dados do programa
Landscaper 2 ................................................................................................................ 63 Figura 3.5. Algoritmo de deslocação da região de visibilidade.............................................. 65 Figura 3.6. Triângulo envolvido por um rectângulo de área sub-óptima orientado pelos eixos
cartesianos.................................................................................................................... 66 Figura 4.1. Landscaper 1.0 - Comparação dos cenários A e B no Perímetro Florestal do
Cantão das Hortas, quinze anos após o momento inicial. Visão do "Terreiro das Bruxas", olhando para o povoamento de eucalipto situado a poente ............................................ 76
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
8
Figura 4.2. Landscaper 1.0 - Comparação dos cenários A e B no Perímetro Florestal do Cantão das Hortas, quinze anos após o momento inicial. Visão da encosta Oeste.......... 77
Figura 4.3. Landscaper 2.0 - Orla de um povoamento de pinheiros adultos vista de dentro, podendo ainda observar-se a paisagem florestal distante............................................... 80
Figura 4.4. Landscaper 2.0 - Interior de um povamento esparso de pinheiros, sendo visível ao fundo um povoamento de eucaliptos............................................................................. 81
Figura 4.5. Landscaper 2.0 - Voo em altitude sendo visivel o reticulado da paisagem e geometria das ocupações presentes ............................................................................... 81
Figura 4.6. Landscaper 2.0 - vôo por cima das copas, avistando diferentes tipos de ocupação florestal ........................................................................................................................ 82
ÍNDICE DE QUADROS Quadro 4.1. Desempenho do programa Landscaper 1.0 a várias resoluções .......................... 79 Quadro 4.2. Desempenho da execução do programa Landscaper 2.0 a várias resoluções ...... 82
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
9
1. INTRODUÇÃO
1.1. Visualização interactiva de paisagens florestai s
Ao longo das últimas décadas, a opinião pública tem-se mostrado progressivamente
preocupada com os efeitos visíveis das mudanças ambientais (Luymes 2001, Sheppard 1989).
Verifica-se uma crescente sensibilidade do público para as questões ambientais e
paisagísticas, ao que o crescimento da procura turística nas zonas rurais vêm salientar ainda
mais o valor objectivo da paisagem na economia das populações situadas em zonas florestais
ou próximas delas.
Por outro lado, avanços significativos nas tecnologias de informação nas últimas décadas
permitiram a inclusão de componentes paisagísticos como factores passíveis de influenciar a
forma como se gerem as florestas. Com efeito, a maior capacidade de processar informação,
em particular informação gráfica, em computadores de uso comum permite que seja possível
visualizar o impacte paisagístico de planos de gestão vários anos antes de eles se tornarem
aparentes. Os trabalhos de McGaughey (1997), Orland e Uusitalo (2001) e Danahy (2001)
demonstram que é possível apresentar os efeitos de diferentes estratégias de gestão em
imagens que são prontamente identificáveis pelos utilizadores finais (Luymes 2001). É
possível ainda a comparação dos efeitos paisagísticos de diferentes estratégias de gestão em
diferentes pontos de observação. Um visualizador de paisagens prospectivas é assim mais
uma ferramenta para uso do gestor, podendo ainda facilitar o envolvimento dos utilizadores
finais no processo de tomada de decisão.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
10
O trabalho desenvolvido foca os esforços encetados para estender ainda mais essa capacidade
de visualização ao procurar a representação visual uma paisagem virtual interactiva na qual o
utilizador pode navegar. Esta abordagem pode comunicar assim ao utilizador uma perspectiva
mais abrangente fornecendo uma maior quantidade de informação. O objectivo do sistema
proposto é, pois, permitir ao utilizador percorrer virtualmente a área considerada sob um
determinado plano de gestão proposto. No sistema desenvolvido, além de ser possível
observar a paisagem estaticamente a partir de um ponto de vista predefinido, permite-se ainda
ao utilizador a “deslocação” pela floresta como se se deslocasse a andar, ou realizar um voo
virtual por cima das copas para ter uma ideia global da cobertura florestal num determinado
momento no tempo.
Temos assim definido o primeiro obstáculo. Para definir um visualizador de paisagens
prospectivas é necessário, em primeiro lugar, conhecer em que situação estará a floresta num
determinado momento do tempo. Seguidamente definir o coberto florestal apropriado e
finalmente alimentar essa informação num módulo de visualização. É necessário então um
conjunto de ferramentas prévias que efectuem a gestão da informação existente, permitam
realizar simulações para outros momentos no tempo, definam cenários de gestão compatíveis
com as possibilidades da floresta e finalmente transformem essa informação para entrada
num visualizador. Todos esses passos podem ser compreendidos num sistema de apoio à
decisão para gestão de recursos florestais.
1.2. O processo de tomada de decisão em gestão flor estal
A tomada de decisão em gestão florestal, apresenta diferenças face a outros campos da gestão,
sendo caracterizada por dois aspectos fundamentais:
• Em primeiro lugar, o longo prazo requerido pelo processo (i.e. é vulgar encontrar na
literatura períodos de planeamento de 100, 150 ou 200 anos);
• Em segundo lugar a escassez da informação e o seu elevado grau de incerteza. Com
efeito, no processo de inventário florestal, base do planeamento, apenas uma fracção
das árvores existentes são medidas. A sua medição é feita geralmente a características
biométricas simples, que através de modelos estatísticos são reportados à unidade
básica de planeamento, o povoamento. Entende-se como povoamento uma unidade de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
11
terreno contígua homogénea em composição (espécies presentes), estrutura
(distribuição das espécies) e idade. A incerteza associada à extrapolação para o
momento presente é naturalmente acrescida no processo de projecção para outros
momentos no horizonte de planeamento. A estruturação de um sistema de apoio à
decisão em recursos florestais do tipo normativo deve então contemplar estes dois
aspectos na sua estruturação.
1.2.1. Visão geral de um SAD em gestão de recursos florestais
O visualizador de paisagens florestais enquadra-se no sistema de apoio à decisão (SAD)
descrito na figura 1.1. onde se representa este módulo do SAD tanto nos requisitos da
informação de entrada necessária para o seu correcto funcionamento, como os outputs
resultantes do procedimento de simulação e respectiva integração nos outros módulos do
sistema. Assim, é possível identificar 5 componentes principais nesta arquitectura.
a) Sistema de gestão de bases de dados;
b) Simulador e gerador de alternativas de gestão;
c) Modelos de decisão;
d) Pré-procesador (conversor e processador geométrico);
e) Visualizador.
No diagrama estão representadas as trocas de informação entre os diferentes módulos do
sistema e que se detalham a seguir
1.2.2. Sistema de gestão de Informação
Sistema de gestão de bases de dados e sistema de informação geográfica
O sistema de gestão de informação contém estruturada toda a informação de inventário
relativamente às diferentes áreas de gestão consideradas no sistema. Deve estar associada a
um sistema de informação geográfica que contém, tanto os mapas de ocupação de uso do solo,
como as fotografias aéreas orto-rectificadas e os mapas digitais do terreno.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
12
Repositório deinformação
florestal(Inventário)
Simulador de Alternativasde Gestão
Modelos de Decisão(e.g. Simulated annealing,
SQT,DualPlan)
Definição deRestrições
GIS
Conversor
Informação Visual
Imagens deÁrvores
formato RAWVisualizador 3D
Cobertura florestalMapa Digital do
Terreno
Dados 3D porperíodo
Processadorgeométrico
Figura 1.1. Integração do visualizador num sistema de apoio à decisão em recursos florestais
identificando os diferentes fluxos de informação e dados exteriores
1.2.3. Simulação
O simulador de alternativas de gestão recolhe a informação de inventário proveniente do
Sistema de Gestão de Bases de Dados, bem como dados relevantes originários do sistema de
informação geográfica (SIG) associado. São também componentes do simulador os modelos
de produção a considerar para a as áreas em estudo. Por estes serem extremamente variáveis,
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
13
optou-se por considerá-los como componentes externos do simulador em vez de serem parte
integrante do mesmo. A interagir com o simulador temos também as especificações dos
modelos de silvicultura em que se definem as possíveis operações culturais a aplicar a cada
tipo de ocupação. Esta informação pode ser definida interactivamente através de um interface
gráfico, ou para processamento em batch, sob a forma de um ficheiro. O simulador produz
essencialmente 3 tipos de informação:
a) informação relativa à aplicação geral de cada possível alternativa de gestão a cada
povoamento;
b) características de cada intervenção produtiva ao longo do período de simulação para
cada alternativa de gestão aplicada a cada povoamento;
c) informação proveniente da simulação apenas relevante para o visualizador (Falcão
2002)
1.2.4. Modelação da gestão
As diferentes operações geradas por cada alternativa de gestão são armazenadas nos ficheiros
de saída. Apesar de ser possível guardar informação para cada tipo de produto, optou-se por
salvar a totalidade dos volumes como um só (madeira de serração). A valorização de cada
produto é contudo diferenciada. Esta opção foi tomada por duas razões: Em primeiro lugar, os
modelos de decisão correntemente utilizados só estão preparados para lidar com um produto.
Em segundo lugar, devido à reduzida representatividade de cada uma das espécies na área de
gestão considerada, não se justifica a existência de restrições de fluxo de volumes separadas.
Modelos de decisão
A informação produzida pelo simulador serve de entrada para os modelos de decisão
desenvolvidos (Falcão 2001). Estão definidos módulos de importação das matrizes para
modelos de programação linear, programação inteira e várias heurísticas (e.g. algoritmos
genéticos, pesquisa tabu, algoritmos genéticos, relaxação Lagrangeana) aplicadas a diversos
tipos de problemas de gestão florestal (e.g. maximização do valor actual líquido (MVAL),
MVAL com restrições de sustentabilidade de produção de material lenhoso MVAL com
restrições espaciais (e.g. Falcão e Borges 2002). De acordo com o tipo de problema de gestão,
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
14
assim variam os requisitos de informação necessários. Em qualquer dos casos, a solução
corresponde a uma associação de uma alternativa de gestão a cada povoamento da área em
análise.
1.2.5. Integração do Visualizador no SAD
Pré-processamento
O programa de pré-processamento fornece a informação suficiente para o visualizador, de
acordo com os resultados provenientes dos modelos de decisão. Esta fase é crítica na
preparação dos dados que vão entrar no simulador. Foram desenvolvidos modelos empíricos
que permitem a tradução das variáveis simuladas em dados para árvores individuais. Estes
modelos não fazem parte directamente do pré-processador, podendo ser substituídos quando
existirem equações melhores. Assim, usa como entrada as tabelas produzidas pelos modelos
de decisão bem como a informação geométrica necessária para a representação de árvores
gerada pelo simulador. O programa processa então, para cada povoamento, qual o conjunto de
intervenções culturais que lhe está associado ao longo do horizonte de planeamento, e
combina esses dados com a informação visual proveniente do simulador. São produzidas
assim tantas tabelas quantos os períodos de simulação no horizonte de planeamento escolhido.
Cada tabela contém uma representação das árvores tipo (templates) para cada povoamento
nesse mesmo período
Visualizador
O Visualizador corresponde ao fim da cadeia, sendo possível para o utilizador definir que
período quer visualizar. O programa constrói em tempo real, os povoamentos virtuais, nos
quais é possível “navegar”. Necessita para o seu funcionamento de informação proveniente do
SIG (mapa de ocupação, modelo digital do terreno e eventualmente a orto-imagem da área de
gestão) bem como de modelos digitais de árvores.
1.3. O problema computacional
A concepção e desenvolvimento de uma ferramenta de visualização de paisagens florestais
não está isenta de desafios computacionais. Estes referem-se essencialmente à complexidade
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
15
geométrica inerente a este tipo de cenas. Para tal há dois problemas fundamentais a considerar
na arquitectura de um visualizador de paisagens florestais: O primeiro prende-se com a
capacidade física do equipamento (CPU e hardware gráfico) de representar uma grande
quantidade de polígonos em tempo real. O segundo problema consiste na gestão da memória
RAM disponível. Não é correntemente possível armazenar na memória RAM de um
computador a informação total contida numa paisagem florestal - mesmo com um nível de
detalhe muito reduzido - para a representar em tempo real. Para enquadrar o problema refira-
se uma situação típica de utilização de uma ferramenta como esta: Pretende-se um sistema
capaz de permitir a visualização de uma área com pelo menos 100,000 Ha, com uma
densidade florestal de pelo menos 300 árvores por ha. Isto totaliza 3.0 x 107 árvores, o que
mesmo utilizando uma representação de geometria muito conservadora (dois rectângulos
cruzados) nunca seria inferior a 96 bytes por árvore. Isto totaliza cerca 2.682 GBytes, o que é
incomportável para a esmagadora maioria do hardware existente. Evidentemente que nem
todas as árvores estarão visíveis, podendo estas estar armazenadas em memória não volátil,
sendo carregadas à medida que vão entrando dentro da esfera de visibilidade. Mas mesmo
assim o problema não é de resolução trivial. Se admitirmos um cone de visibilidade com 2.0
km (o que é um valor relativamente conservador), poderemos estar a contar com cerca de
60,000 árvores a representar em cada frame. Considerando a mesma geometria simplificada,
necessitamos de enviar cerca de 480,000 vértices por frame para o pipeline gráfico, o que é
um valor considerável mesmo para o hardware actualmente disponível. De notar ainda que
estes valores são médios; situações com uma densidade de coberto florestal mais intenso
devem ser previstas pois certamente irão ocorrer. Na prática observam-se densidades
geométricas até 4 ou 5 vezes superiores a estes valores de referência. Assim é necessário
encontrar estratégias que permitam sintetizar, agrupar e reduzir a informação existente por
forma a que seja possível a que um sistema como o idealizado possa correr com um
desempenho e qualidade suficientemente bons para poderem funcionar como ferramentas
activas no suporte à decisão em gestão florestal.
1.5. Organização do trabalho
Em primeiro lugar (Capítulo 2) descrevem-se todos os procedimentos de processamento de
informação. Resume-se uma arquitectura de um sistema de apoio à decisão em recursos
naturais e o enquadramento do visualizador no sistema. Detalham-se os procedimentos de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
16
tratamento de informação pictográfica e geométrica para as árvores e para o terreno. Nesta
última parte do processamento da informação, é descrito com algum cuidado o processamento
da informação poligonal que constitui a cobertura de fotointerpretação, nomeadamente os
procedimentos de triangulação da sua geometria. A segunda parte (Capítulo 3) consiste na
descrição detalhada das duas abordagens testadas no desenvolvimento do visualizador. São
descritas as técnicas de representação visual da informação e os mecanismos incorporados
para lidar com a complexidade da geometria. Finalmente (Capítulo 4) descrevem-se os
resultados da aplicação das duas ferramentas para duas situações distintas. A primeira, para o
Perímetro Florestal do Cantão das Hortas na serra da Lousã, uma área com 460 ha de
ocupação florestal e a segunda cobrindo uma parte significativa do barlavento Algarvio e da
Serra de Monchique, abrangendo cerca de 100,000 ha e são examinados os resultados ao nível
do desempenho e qualidade visual das paisagens produzidas
Dada a natureza do trabalho realizado não é possível dar o mesmo nível de detalhe a todas as
fases que envolveram a sua realização. Com efeito, certas partes foram mais críticas do que
outras e apresentam alguma novidade, enquanto outras, apesar de igualmente importantes, são
referidas apenas de passagem. Adoptou-se como critério de relevo a relativa novidade dos
métodos empregues para a resolução de problemas específicos. Como exemplo de secções
detalhadas, temos os procedimentos de triangulação e processamento espacial da geometria
do terreno. Esta fase envolveu o desenvolvimento e implementação de vários algoritmos que
se achou importante serem descritas na íntegra. Áreas que foram abordadas com menos
detalhe citam-se por exemplo os procedimentos de inicialização e representação da
informação geográfica usando o OpenGL/GLUT, uma vez que esta é uma informação de uso
bastante geral não havendo praticamente novidade nenhuma nos procedimentos utilizados.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
17
2. PROCESSAMENTO DA INFORMAÇÃO
2.1. Informação florestal
Idealmente, um visualizador de paisagens florestais teria informação quantitativa de todas as
características do terreno e de todas as árvores existentes. Teria ainda o poder computacional
necessário para mostrar toda essa informação permitindo a interactividade do sistema.
Contudo, a natureza da informação florestal, pela sua grande quantidade e diversidade não
permite chegar directamente a esse objectivo. Logo no processo de recolha de informação de
campo (inventário florestal) apenas uma pequena proporção das árvores é medida,
recolhendo-se apenas, na maioria dos casos, o diâmetro à altura do peito, medindo-se a altura
apenas em certas árvores. A informação disponível é geralmente muito reduzida para poder
representar uma paisagem florestal sem se recorrer a alguma generalização. O problema é
ainda agravado pelo facto do objectivo final do trabalho ser a previsão de como será a
ocupação florestal no futuro, de acordo com um determinado plano de gestão. Uma vez que a
informação é mais difícil de obter, sendo conseguida com um maior nível de incerteza
derivada do uso de modelos estatísticos de crescimento das espécies florestais. Isto porque
este tipo de modelos são geralmente modelos de povoamento. Estes simulam a evolução de
variáveis agregadas como a altura dominante, a área basal e o número de árvores. Estas
variáveis, se bem que úteis para a gestão, são de utilidade limitada para um simulador em que
é necessário identificar e representar com o maior realismo possível todas as árvores. Assim, a
tradução da informação agregada, proveniente da aplicação de modelos de crescimento com
base em variáveis do povoamento, para árvores tipo susceptíveis de uma identificação
espacial, foi o primeiro problema a resolver. Para tal utilizou-se a metodologia detalhada em
Falcão (2002) e Falcão (2003). A essência do método proposto consiste em recriar com uma
base estatística as árvores tipo dos povoamentos. Por exemplo, para conhecer a altura das
árvores a representar, usa-se como valor máximo a altura dominante (altura das 100 árvores
mais grossas por hectare em um povoamento florestal) e aplica-se uma exponencial negativa
como função de probabilidade. Para a determinação do diâmetro das copas, relaciona-se o
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
18
grau de ocupação (percentagem de área de solo coberta usando uma projecção directa das
copas das árvores sobre o solo) com o número de árvores. Assim, por exemplo, sabendo que
um povoamento tem um grau de ocupação de 90 % e 650 árvores por ha, o valor central da
área de copa é cerca de 13.8 m2, o que corresponde a um raio de copa de 2.1 m. A este valor
aplica-se uma distribuição simétrica (normal ou triangular) para procurar derivar árvores tipo
deste povoamento. Desconhecemos, no momento presente, outros estudos que permitam
recriar povoamentos com base em variáveis agregadas de povoamento. Caso estes modelos
existam, poderão naturalmente ser incorporados no sistema de pré-processamento.
2.2. Representação geométrica das árvores
2.2.1. Métodos de representação geométrica
Devido à sua forma irregular e com diferentes componentes separáveis e facilmente
identificáveis (tronco, ramos, folhas, etc.), a representação geométrica de árvores não é de
resolução fácil (Meyer 2001). Assim, uma representação geométrica simples, sem envolver
um grande detalhe, pode facilmente chegar aos 2,000 polígonos. Certos programas que fazem
modelação detalhada de árvores podem facilmente representar estruturas com 200,000
polígonos. A utilização de um nível de detalhe dessa grandeza, numa ferramenta de
visualização interactiva só é justificável para áreas relativamente reduzidas, ou mesmo
quando se queira representar realisticamente uma árvore.
Meyer (2001) desenvolveu um método de representação de árvores onde conseguia incorporar
diferentes níveis de detalhe e informação relativa ao ensombramento para diferentes
condições de iluminação. Contudo, o desempenho conseguido apenas justifica essa
abordagem para áreas pequenas. Este autor refere que, com o hardware disponível, conseguiu
7-20 imagens por segundo representando um terreno com cerca de 1000 árvores. Se bem que
os resultados gráficos obtidos tenham uma qualidade muito elevada, não são prontamente
utilizáveis no âmbito do corrente trabalho. A meta proposta de horizontes visuais de 2 km
pode proporcionar uma área visível de 200 ha, o que corresponderá em média a 400,000
árvores em áreas com uma florestação intensa. Desta forma, pensaram-se como métodos de
representação as formas mais simples possíveis. De todas a mais simples é a utilização de um
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
19
billboard (rectangular ou triangular), texturado com a imagem de uma árvore, usando um
canal alpha para garantir a transparência. Conseguir-se-ia um efeito realista eliminando a
sensação de bidimensionalidade, rodando cada billboard de forma a estar sempre de frente
para o observador. Esta técnica tem, apesar da aparente simplicidade, dois problemas. Em
primeiro lugar, quando o observador se situe num lugar elevado, vai aparentar que as árvores
estão “deitadas”, o que destrói a ilusão criada. A opção de fazer apenas uma rotação do
ângulo azimutal, colmata essa dificuldade mas torna demasiado aparente a
bidimensionalidade da representação. O segundo inconveniente no uso desta metodologia é a
obrigação da rotação individual de cada árvore, o que coloca uma sobrecarga considerável no
processamento da geometria.
Deste modo, foi escolhida para este trabalho, uma abordagem clássica para objectos com
simetria num dos eixos. São assim usados dois rectângulos entrecruzados (figura 2.1.) aos
quais é, à semelhança dos billboards, aplicada uma textura com um canal alpha, para garantir
a transparência. O resultado é, na generalidade dos casos, satisfatório, havendo naturalmente
situações em que a excessiva simplificação geométrica é aparente. Por exemplo, quando o
observador está demasiado próximo das árvores, como no interior de um povoamento, é
numerosas vezes evidente o delineamento da geometria. Quando, por outro lado, o
observador se encontra quase na vertical, é muito aparente a representação escolhida, sendo
por vezes notório o aparecimento da projecção horizontal da representação escolhida sob a
forma de “cruzes”, mostrando que as copas não têm profundidade. Apesar destes
inconvenientes, considerou-se que esta abordagem seria a mais favorável, sendo os benefícios
ganhos comparativamente superiores aos inconvenientes suportados.
As árvores tipo de cada povoamento ficam representadas na memória do computador, sendo
cada elemento composto por 3 atributos, de acordo com o exposto anteriormente: a) altura; b)
diâmetro da copa; c) espécie. A altura e o diâmetro da copa definem a forma da árvore e
dependem das características do povoamento em que estão inseridas. A espécie é utilizada no
programa para seleccionar a textura que lhe é aplicada. De notar que é possível ter mais do
que uma textura (leia-se forma de árvore) para cada espécie.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
20
Figura 2.1. Modelo simplificado de árvore com dois rectângulos entrecruzados
2.2.2. Texturação da geometria
Numa primeira fase do trabalho procurou-se obter informação factual das imagens no campo.
Para isso procedeu-se a uma recolha fotográfica dos diferentes tipos de árvores existentes.
Este esforço não teve grande sucesso devido a vários factores. Em primeiro lugar pretendiam-
se imagens de árvores inseridas em povoamentos. Estas são particularmente difíceis de
fotografar, dado que é complicado ter ângulo de visão que permita enquadrá-las sem que
fiquem obstruídas por outras. O segundo aspecto é o problema dos erros de paralaxe, difíceis
de eliminar sem equipamento especializado. O terceiro factor envolve as condições de
iluminação deficiente na altura da captura das imagens. É particularmente difícil, a não ser
com iluminação artificial, fotografar uma árvore captando toda a sua gama cromática. Os
problemas são ainda significativamente agravados no caso de fotografias contra o
horizonte/céu, em que a iluminação difusa ultrapassa largamente a luminosidade reflectida
pelo tronco e folhas. Este efeito faz com que as fotografias fiquem excessivamente escuras ou
percam resolução cromática no processo de tratamento.
Desta forma, recorreu-se, na realização do primeiro protótipo, à utilização de desenhos de
árvores que retinham as principais características das espécies encontradas na área de estudo.
Essas imagens foram digitalizadas, tratadas e processadas para serem incluídas no
visualizador. Assim, na primeira versão do visualizador ficaram presentes as seguintes
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
21
espécies: Eucalyptus globulus Labill, Pinus pinaster Ait, Castanea Sativa L.,Quercus robur
L., Quercus rubra L., Betula pubescens L. Verificou-se que imagens artificiais podem
funcionar, dado que a percepção do utilizador não foca geralmente uma árvore em particular
mas sim o povoamento e o seu enquadramento na paisagem em que se insere. As imagens
artificiais usadas são suficientemente simples para não distrair o observador com algum
defeito particular, conseguindo, apesar de tudo, comunicar as características estéticas mais
importantes da espécie
2.2.3. Modelação das árvores
É então apenas necessário uma imagem por espécie devido ao esquema de representação
geométrica escolhido. Na primeira fase da realização deste trabalho utilizaram-se imagens do
domínio público recolhidas da Internet ou provenientes de ilustrações de livros (e.g.
Humphries et al 2001). Contudo, a necessidade de obter modelos pictográficos com maior
qualidade levou à utilização do pacote comercial OnyxTree (www.onyxtree.com). Este
software permite a modelação de árvores por meio das suas características biométricas. Além
de conter uma biblioteca extensa de árvores já previamente parametrizadas, permite a sua
fácil adaptação para quaisquer tipos de condições. No nosso caso utilizaram-se os módulos
OnyxTree Broadleaf e OnyxTree Conifer. A criação de imagens para utilizar no visualizador
fica facilitada dada a possibilidade de exportação de imagens directamente com o canal de
transparência incorporado.
2.3. Representação textural do terreno
A representação do terreno e das suas características fisiográficas é também um problema
importante a considerar. A informação referente à altimetria está geralmente disponível e é de
fácil acesso. É necessária ainda informação com a delimitação dos povoamentos sobre o
terreno, frequentemente realizada por fotointerpretação ou marcação directa por GPS. Estas
duas componentes são fundamentais para o desenvolvimento de um visualizador.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
22
Um terceiro aspecto que não deve ser descurado é a informação relativa às características
humanas que pertencem às áreas a visualizar. Estas garantem o reconhecimento da área pelos
utilizadores finais do sistema e um sistema básico de orientação. Este tipo de informação não
é frequentemente representada no SIG subjacente, não passando consequentemente para o
visualizador (além de que são muitas vezes inalteráveis ao logo do tempo). Funcionam assim
como verdadeiros pontos de referência. Outra questão directamente relacionada com esta é o
problema da representação do solo. Se é possível colocar árvores sobre polígonos que indicam
os tipos de cobertura sobre o terreno com a altimetria apropriada, como representar a
superfície sobre a qual as árvores estão colocadas?
Uma abordagem possível para a resolução destas duas questões é a utilização da fotografia
aérea mapeada sobre o modelo digital do terreno (DTM). Esta solução permite a manutenção
de grande parte da componente humana da paisagem, como estradas, caminhos ou povoações
(dependendo da escala a que tiverem sido realizadas), garantindo ainda uma aparência realista
para a superfície do terreno. A utilização de imagens provenientes de detecção remota pode,
apesar de tudo, colocar alguns problemas. Em primeiro lugar problemas de desempenho, dado
este tipo de imagens serem geralmente demasiado grandes para permitirem uma representação
rápida e eficiente num sistema de visualização em tempo real. Esse facto obriga a que as
imagens sejam reduzidas com natural perda de detalhe. Outro problema é o facto das
fotografias aéreas ou imagens de satélite a utilizar reflectirem apenas o terreno visto de cima.
Se essa característica pode não ter grande impacto, quando se pretenda uma análise da
paisagem florestal no momento presente, a sua utilização para momentos futuros em que se
estejam a analisar paisagens prospectivas, pode produzir alguns resultados pouco realistas.
Por exemplo, uma situação possível é a existência de um povoamento cortado na sua
totalidade (e portanto sem qualquer árvore) mas que ao invés do utilizador ter a percepção do
solo nu, vê projectado no terreno copas frondosas de um povoamento que já não existe.
Uma outra abordagem que procura colmatar esses problemas tem como objectivo a recriação
da superfície do terreno com base na informação recolhida no processo de fotointerpretação.
Ao invés de sobrepor imagens que reflectem o terreno num determinado período no tempo,
definem-se texturas tipo que são aplicadas ao modelo digital do terreno de acordo com as
características do coberto. Esta metodologia tem como vantagem óbvia ser possível
representar o solo nu quando não existam árvores, permitindo ainda a existência de um muito
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
23
maior detalhe na representação do solo. Tem também geralmente uma presença em memória
muito mais reduzida, uma vez que, ao invés de grandes imagens para cobrir o terreno todo, é
suficiente a existência de pequenos fragmentos que sejam representativos de um determinado
tipo de solo ou coberto herbáceo. Tem, no entanto, dois grandes inconvenientes. Em primeiro
lugar obriga a um processamento muito mais detalhado da geometria que caracteriza o terreno
e a sua ocupação, uma vez que é conveniente que uma textura circunde completamente cada
povoamento ou tipo de ocupação. Em segundo lugar, obriga a que as características humanas
da paisagem que podem servir como pontos de orientação estejam correctamente identificadas
no SIG, o que geralmente não acontece. O emprego deste método sem essa identificação é
possível, mas os utilizadores têm mais dificuldade em situar a informação visual que lhes é
fornecida aquando da utilização do sistema.
No desenvolvimento dos sistemas descritos neste trabalho testaram-se as duas metodologias.
Na primeira abordagem representou-se a superfície do terreno conforme vista de cima, por
intermédio do uso de uma fotografia aérea. Na segunda versão do programa utilizou-se o
segundo método apresentado os diferentes tipos de solo e coberto como diferentes texturas
sobrepostos posteriormente sobre o modelo altimétrico do terreno.
2.3.1. Tratamento da fotografia aérea
No momento presente utilizaram-se as fotografias aéreas do voo de 1995 realizado pela
CELPA/CNIG, recolhidas usando filme de infravermelhos. Este tipo de película ignora o
canal azul, mas apanha informação na banda dos infravermelhos, que são invisíveis ao olho
humano. Estas imagens, apesar de ser ideais para a fotointerpretação de cobertos vegetais,
tornam a informação correspondente de difícil percepção pelos utilizadores do sistema. Foi
assim aplicada uma correcção espectral nas imagens, eliminando o canal infravermelho,
substituindo o canal verde pelo canal azul e o canal vermelho pelo canal verde. Dado o facto
de, na generalidade das fotografias, o canal azul estar geralmente muito correlacionado com o
verde. Utilizou-se a seguinte técnica para sintetizar artificial o primeiro. Fez-se uma cópia do
canal Verde que foi posteriormente escurecida e incluída como canal Azul. Apesar das
imagens resultantes serem na verdade representações em falsa-cor (têm apenas 2 canais
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
24
distintos) os resultados são suficientemente realistas quando comparados com as imagens
originais (Figura 2.2.)
Figura 2.2. Detalhe de fotografia aérea (voo da CELPA/CNIG -1995) antes (esquerda) e
depois (direita) da correcção espectrométrica efectuada
2.3.2. Texturas individuais de sol
A utilização de texturas individuais para cada tipo de solo ou ocupação foi utilizada na
segunda versão do visualizador. Essencialmente recolheram-se e processaram-se imagens de
solo nu, sem qualquer tipo de cobertura acima dos 30 cm, para preservar a ilusão da vegetação
rasteira. As texturas utilizadas tem uma resolução de 256 x 256, o que corresponde a um pixel
por cada 11.7 cm, ou seja 0.0137 m2, o que, sem ter uma grande precisão na observação no
interior de um povoamento, é suficientemente precisa para dar ao utilizador uma ilusão de
realidade. Esta escala é também compatível com a escala utilizada para a representação das
árvores.
2.3. Geometria da Informação geográfica
De acordo com o tipo de representação de terreno escolhida assim é necessário realizar a
decomposição da geometria da informação geográfica. A utilização da fotografia aérea usada
na primeira versão do programa não obriga a um grande detalhe da decomposição do espaço,
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
25
tendo-se optado pela transformação da altimetria em uma grelha de pontos com uma malha
fixa. A segunda versão do programa utilizou uma representação detalhada da geometria da
cobertura geográfica, para a utilização de texturas individuais de solo, o que obrigou a um
maior detalhe no processamento espacial. Deste modo, o tratamento da altimetria foi realizado
juntamente com a decomposição espacial da cobertura produzida pela fotointerpretação. Este
processamento revelou-se de alguma complexidade e é descrito com algum detalhe, dada a
morosidade dos procedimentos efectuados. Assim, após a leitura da informação vectorial
proveniente do sistema de informação geográfica (ArcGIS/ArcView), os passos efectuados
foram:
a) triangulação dos polígonos que constituem a cobertura;
b) interpolação com o DTM para determinação da altimetria de cada vértice;
c) divisão dos triângulos produzidos de acordo com células de visibilidade;
d) tratamento da informação resultante para cálculo das normais de cada vértice.
Nas secções seguintes são detalhados os procedimentos que condicionaram o processamento
da informação espacial usada nas duas abordagens seguidas. Em primeiro lugar detalha-se o
método de decomposição da informação espacial em células e as razões da sua utilização.
Posteriormente ilustram-se as diferentes fases enumeradas referentes à decomposição
geométrica da cobertura de fotointerpretação, referindo desde os algoritmos de triangulação à
metodologia utilizada para o processamento das normais.
2.3.1. Decomposição da informação em células
A representação de terreno com modelos digitais usa tradicionalmente uma grelha de
altitudes. A cada vértice da grelha corresponde um valor de altimetria. Este tipo de
representação permite a utilização de níveis de detalhe variáveis como foi descrito por vários
autores (e.g., Lindstrom et al. (1986), Röttger et al. (1998)). O método proposto por Velho e
Gomes (2000) é uma abordagem também promissora, interpretando a grelha do terreno como
uma malha regular 4-8 de resolução variável. Este tipo de estrutura permite a utilização de
operações de nível de detalhe, que permitem reduzir a complexidade geométrica de
superfícies extensas. Contudo, todos estes métodos se baseiam na premissa que o objectivo é
a minimização da submissão do número de polígonos que constituem a grelha a representar.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
26
No caso presente, esse não é claramente o factor mais importante. O número de árvores
presentes na cena é uma a duas ordens de magnitude superior ao número de polígonos que
constituem a superfície onde estão inseridas. Seriam necessários algoritmos que incluíssem
componentes externas à grelha de terreno na utilização de níveis de detalhe variáveis. No
momento presente não conhecemos algoritmos que permitam a resolução deste problema a
executar em tempo real.
O problema é tanto mais complexo quanto o facto de não ser facilmente detectável qual o
nível de detalhe que é possível usar para a determinação do número de polígonos necessários.
Algoritmos baseados em distância não funcionam directamente, como podemos verificar
numa situação hipotética. Assim, por exemplo, é concebível que não sejam visíveis as árvores
do interior de um povoamento quando observado a uma determinada distância. No entanto, se
o mesmo estiver a ser observado por outra perspectiva que não a horizontal, ou se este estiver
num declive acentuado, as árvores no seu interior são discerníveis, sendo fundamentais na
composição da paisagem.
2.3.2. Representação e leitura da informação geográ fica vectorial
A utilização de células é uma redução para primitivas simples da complexidade inerente da
diversidade espacial. Uma outra possibilidade é usar a informação poligonal proveniente do
sistema de informação geográfica directamente na representação tridimensional do terreno.
Essa alternativa é exequível, sendo contudo necessário executar vários passos prévios. Em
primeiro lugar, não é possível representar directamente um polígono simples no hardware. É
necessário inicialmente realizar uma decomposição triangular para então posteriormente
efectuar essa representação. Em segundo lugar, numa cobertura típica de um SIG, os vértices
que constituem os polígonos não têm associados a si valores de altimetria. Deste modo, para a
utilização deste tipo de informação são necessários vários passos iniciais de pré-
processamento.
O sistema ArcGIS/ArcView (ESRI) utiliza um formato proprietário para armazenar a
estrutura vectorial das coberturas geográficas. Tem contudo a possibilidade de exportar para
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
27
um formato aberto (Shape), desenvolvido pela própria ESRI (1997), suficientemente genérico
para poder receber um largo espectro de tipos de dados geográficos. Apesar de abrangente,
este formato não conserva a topologia dos polígonos e, é de tal forma flexível, que comporta a
possibilidade de armazenar informação estruturalmente incorrecta, muitas vezes é gerada pelo
próprio sistema.
Para a leitura da informação geográfica proveniente deste SIG, foi programado um módulo
que lê e decompõe nas suas componentes essenciais a informação contida nestes ficheiros.
Essa informação é posteriormente tratada, interpolada e decomposta em triângulos, por
módulos subsequentes do sistema que são descritos nas secções seguintes.
2.3.3. Intersecção de polígonos
A intersecção dos polígonos que definem a ocupação do terreno com a malha correspondente
à altimetria é um processo fundamental no tratamento preliminar da informação geográfica.
Isto porque, se é possível determinar as altitudes de cada ponto que constitui cada polígono, é
necessário também introduzir a informação referente ao interior desses mesmos polígonos. de
Berg et al (2000) refere um procedimento simples de intersecção de polígonos que funciona
em O(n.log n), em que n representa o número de arestas presente nas duas coberturas a
sobrepor. Este algoritmo não foi contudo implementado directamente uma vez que o software
de processamento de informação geográfica ArcView o realizava de uma forma eficiente.
De acordo com ESRI (1997), um polígono no formato Shape é descrito por diversas partes, ou
anéis. A ideia subjacente é permitir a existência com polígonos com buracos ou ilhas. Os
buracos diferenciam-se dos limites externos pela orientação dos vértices que os constituem.
Um polígono externo tem os pontos definidos no sentido horário, e uma ilha tem os seus
pontos enumerados no sentido inverso. Não há na especificação nenhum mecanismo que
garanta que um polígono só possa ser definido por um e um só anel externo e n-1 anéis
internos. Este facto propicia a que vários procedimentos do ArcView (nomeadamente a
intersecção de polígonos) conduzam ao aparecimento de polígonos com vários anéis externos
totalmente disjuntos. Esta anomalia, se não correctamente solucionada, cria numerosos
problemas de vária ordem no processamento de informação geográfica, uma vez que são
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
28
considerados como o mesmo polígono áreas distintas, por vezes muito distantes entre si.
Devido à irregularidade topológica destes “polígonos”, os algoritmos de triangulação
desenvolvidos também não funcionam, sendo necessária a sua correcção.
O resultado da intersecção das duas coberturas e respectiva resolução dos problemas
topológicos criados, produz o conjunto de ficheiros sobre o qual se vai realizar todo o pré-
processamento da informação, externamente ao SIG.
2.3.4. Interpolação altimétrica dos vértices
A operação de interpolação tem de ser efectuada por um módulo do programa de pré-
processamento e não podem ser utilizadas as ferramentas específicas de que o sistema
ArcGIS/ArcView dispõe. Com efeito, verificou-se que, para situações geométricas complexas
(como é o caso da área de teste B), o ArcView não consegue realizar a interpolação
altimétrica. De qualquer modo, o procedimento de interpolação altimétrica dos vértices com a
grelha de altimetrias é um processo simples de interpolação linear a duas dimensões que pode
ser resolvido usando o seguinte conjunto de equações:
zz
za PP
PzR
01
0
−−
= , zz
zb PP
PzR
02
0
−−
= (1)
( )xxaxa PPRPX .0.1.0 −+= , ( )xxbxb PPRPX .0.2.0 −+= (2)
( )yyaya PPRPY .0.1.0 −+= , ( )yybyb PPRPY .0.2.0 −+= (3)
( )( )( )ab
abaa XX
YYXxYy
−−−
+= (4)
em que:
(x, z) são as coordenadas no plano horizontal do ponto a interpolar
P0, P1 e P2 correspondem aos vértices do triângulo em que o ponto está inserido
y corresponde ao valor final interpolado do ponto (x, z)
Estas expressões foram posteriormente usadas nos programas de visualização para determinar
as posições das árvores sobre o terreno. No caso da interpolação de vértices da cobertura de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
29
fotointerpretação, os pontos P0, P1 e P2 correspondem a vértices da grelha com as altimetrias e
situam-se a distâncias fixas e predefinidas, o que permite simplificar largamente as equações
usadas.
2.3.5. Triangulação
2.3.5.1. O problema computacional
Tendo determinado as altitudes de todos os pontos que constituem a malha do terreno
procede-se á triangulação dos polígonos resultantes. Esta operação reveste-se de particular
complexidade e requer uma abordagem mais aprofundada. Com efeito, a triangulação de
polígonos é um dos algoritmos fundamentais em geometria computacional (de Berg et al
2000), tendo uma grande variedade de aplicações. Distinguem-se na literatura vários tipos de
polígonos que podem ser caracterizados da seguinte forma:
Polígonos complexos - são entidades geométricas constituídas por um conjunto de pontos, em
que cada ponto se une a dois outros. Este tipo de polígonos pode ser auto intersectado
(Figura 2.3.a)
Polígonos simples - Semelhantes aos polígonos complexos, contudo nenhuma aresta
intersecta qualquer outra que pertença ao mesmo polígono (Figura 2.3.b)
Polígonos simples com buracos (ilhas) - Semelhantes aos polígonos simples, mas podem ser
constituídos por mais do que uma cadeia de vértices (Figura 2.3.c).
Polígonos monotónicos. São polígonos simples sem buracos, com a particularidade de que,
para uma determinada direcção definida por uma recta, esta (ou qualquer recta que lhe
seja paralela), não intersecta o polígono em mais do que dois pontos em mais do que
dois pontos. No exemplo (Figura 2.3.d), o poligono é monotónico em x: qualquer recta
perpendicular ao eixo das abcissas intersecta o polígono em apenas dois pontos.
Polígonos convexos - Polígonos monotónicos com a característica de ser possível unir dois
pontos quaisquer no interior ou periferia do mesmo sem intersectar qualquer aresta do
perímetro. Pela sua própria definição, estes polígonos são trianguláveis com um
algoritmo trivial, uma vez que de qualquer vértice é possível definir um triângulo com
qualquer outro vértice (Figura 2.3.e).
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
30
a) b) c)
d) e) Figura 2.3. Tipos de Polígonos
Garey et al. (1978) foram os primeiros a romper a limitação dos algoritmos tradicionais que
permitiam triangulações em O(n2), propondo o primeiro algoritmo a correr em O(n.log n),
através de um algoritmo de decomposição em polígonos monotónicos simples. Tor e
Middletich (1984) usam um métodos derivado de superfícies convexas que também corre em
O(n.log n). Tarjan e Van Wyck (1988) desenvolveram um métodos que usa estruturas de
dados complexas e um procedimento elaborado mas que tem uma complexidade de O(n. log
log n). Essa meta foi também alcançada por Kirkpatrick et al. (1990), que desenvolveu um
algoritmo que, apesar de usar uma estrutura de dados muito simples, se reveste de alguma
complexidade na sua implementação. Toussaint (1991) desenvolveu um algoritmo que
triangula polígonos simples e corre em tempo O(n(1+t0)) em que t0 é uma medida da
complexidade da triangulação do polígono: representa o número de triângulos que não
partilham quaisquer arestas com o polígono original. Este algoritmo, apesar de para muitos
casos correr em tempo linear, para casos difíceis aproxima-se de O(n2). Seidel (1991)
desenvolveu um método de decomposição trapezoidal, de complexidade O(n.log n). É um dos
métodos mais robustos de triangulação de polígonos simples, e dos que tem conhecido maior
número de implementações. Chazelle (1990) provou que polígonos simples podem ser
triangulados com um algoritmo de complexidade linear, no entanto a sua implementação não
é trivial, servindo essencialmente como exemplo académico. Narkhede e Manocha (1995)
implementaram o algoritmo de Seidel, tornando-o mais eficiente e incorporando métodos
capazes de lidarem com ilhas. Held (2001) desenvolveu um conjunto de heurísticas que
permitem triangular vários tipos de polígonos, inclusivamente polígonos complexos, com
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
31
intersecções e sobreposições. É um dos algoritmos com maior robustez, face à qualidade da
informação, podendo lidar com uma grande variedade de situações topológicas.
Apesar da existência de todos estes algoritmos, nenhum se mostrou particularmente elegante
ou fácil de implementar, apesar de vários métodos advogarem essa simplicidade. Os
algoritmos implementados disponíveis usavam, na sua esmagadora maioria, o método
proposto por Seidel (1991) ou variações do mesmo (e.g. Narkhede e Manocha (1995)). Estes
algoritmos são geralmente divididos em duas fases. Em primeiro lugar, decompõem um
polígono simples em polígonos monotónicos e posteriormente realizam a triangulação destas
componentes. Esta segunda fase pode ser realizada em O(n) por uma variedade de métodos
(e.g, de Berg et al 2000). A parte geralmente mais complexa é o processo de divisão em sub-
componentes monotónicas, onde a generalidade dos autores refere complexidades de O(n.log
n). A falta de um algoritmo simples realizável numa só fase foi a base que impulsionou o
desenvolvimento que se detalha a seguir.
2.3.5.2. Estrutura de dados
A estrutura de dados utilizada para todos os procedimentos de triangulação descritos foi uma
lista com dupla ligação (Doubly linked list). Este tipo de estruturas é corrente em
processamento de informação geométrica (e.g. de Berg et al. 2000). Cada elemento deste tipo
de listas corresponde a um vértice, contendo as suas coordenadas espaciais e ainda dois
apontadores, um para o vértice que antecede o vértice na cadeia que define o polígono
(Vert_ant), e outro para o vértice que o sucede (vert_seg) (figura 2.3.).
+Coord_x : float+Coord_Y : float+Coord_Z : float+Vert_ant : Vertex+Vert_seg : Vertex
Vertex
Figura 2.3. Representação UML da estrutura de dados que define um vértice
O último vértice na lista aponta para o primeiro para manter a cadeia fechada. Para facilitar o
processamento geométrico, as cadeias poligonais, representadas desta forma, são geralmente
orientadas no sentido horário. Ou seja, se um observador imaginário estivesse num ponto
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
32
qualquer da cadeia e seguisse em direcção ao vértice seguinte (v_seg) o interior do polígono
estaria sempre situado do seu lado direito. A única excepção a esta regra é a presença de
buracos no interior dos polígonos. Estes são representados também por cadeias duplamente
ligadas, mas estão então orientadas no sentido anti-horário. Esta particularidade propicia que
o interior do polígono se situe sempre à direita, independentemente do anel que o define
(Figura 2.4.).
Figura 2.4. - Representação da ordenação de vértices para um polígono com uma ilha
2.3.5.3. Triangulação de polígonos simples
Na abordagem deste problema desenvolveu-se um algoritmo que é uma adaptação do método
descrito por de Berg et al. (2000) Este procedimento permite triangular todos os polígonos
simples que não apresentem buracos. Pode também obviamente ser utilizado para polígonos
monotónicos. No entanto, quando esteja à partida determinado que o polígono em questão é
monotónico a maior complexidade deste algoritmo não o torna adequado.
Algoritmo Triangulação
1. Criar uma pilha sem nenhum elemento
2. Ordenar todos os vértices de acordo com a sua coordenada no eixo dos Xs
3. Iniciando pelo vértice mais à esquerda (V), inserir o vértice anterior na pilha (Va),
inserindo em seguida V
4. Determinar o próximo vértice, que corresponde ao vértice seguinte do elemento
colocado no topo da pilha (V = Vs). Se não houver mais vértices para processar,
termina o programa
5. Verificar se é possível fazer um triângulo entre este elemento e os dois últimos
elementos da pilha
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
33
6. Pode não ser possível devido ao ângulo formado. Se isso sucede, acrescenta-se V à
pilha e regressa-se a 3
7. Se o ângulo formado é possível, verificar se algum dos vértices ainda não inserido se
encontra no interior do triângulo considerado. Se sim, acrescenta V À pilha e continua
em 3.
8. Se o ângulo formado é possível e não há pontos dentro do triângulo, Fazer um
triângulo com os dois últimos elementos a entrar na pilha e remover da mesma o
elemento que está no topo. Continua em 4.
O passo crítico neste algoritmo é o ponto 7, onde se verifica se é possível fazer um triângulo
com os dois elementos do topo da pilha e o novo vértice ainda não inserido. Há 3 situações
que podem acontecer:
a) a pilha contém apenas um elemento.
Se por acaso a remoção de elementos na pilha condicionou a que apenas o primeiro vértice
que entrou esteja presente na lista, então o programa segue o curso normal e o vértice em teste
é inserido na lista. Este tipo de situações é muito comum no decorrer do processo, sendo esta
a única condição verificada no caso de triangulações de polígonos convexos. A sua
complexidade é naturalmente O(1), não tendo impacte no desempenho do algoritmo
b) o triângulo formado sai fora do polígono.
Este tipo de teste é também de verificação simples, sendo apenas necessário o cálculo da
seguinte equação:
( )( ) ( )( )111111 −+−−+− −−−−−= iiiiiiii yyxxxxyyr (5)
Uma vez que, por definição, os segmentos que constituem o polígono estão orientados no
sentido dos ponteiros do relógio, mantendo o interior do polígono à direita, esta quantidade
indica se o segmento que une vi-1 a vi+1 se situa para dentro (r >0 ) ou para fora do polígono
(r<0). Este procedimento é naturalmente de complexidade uniforme.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
34
c) Existe pelo menos um vértice do polígono que, caso esse triângulo fosse formado, se
situaria no seu interior
Esta é a situação mais difícil de resolver, pois é necessário detectar se há algum vértice ainda
não removido do polígono que se situe no seu interior. O teste em si é relativamente simples
de efectuar, sendo suficiente determinar as seguintes grandezas:
( )( ) ( )( )1211211 yyxxxxyyr −−−−−= (6)
( )( ) ( )( )2322322 yyxxxxyyr −−−−−= (7)
( )( ) ( )( )3133133 yyxxxxyyr −−−−−= (8)
Devido à orientação requerida na orientação dos vértices do polígono, se, para qualquer das
quantidades r1, r2 ou r3 o valor for positivo, então o ponto está fora do triângulo. Se, pelo
contrário, todos os valores são negativos, então esse vértice está dentro do triângulo formado
pelos vértices v1, v2 e v3.
O factor que aumenta a complexidade do algoritmo é o facto de, em última análise, ser
necessário testar todos os pontos que ainda não foram eliminados pelo algoritmo. Uma
abordagem de força bruta é trivialmente implementável, bastando para isso testar todos os
vértices ainda no polígono, verificando se há algum que se situe no interior do triângulo em
teste. A complexidade deste algoritmo seria assim de O(n), o que tornaria a complexidade do
algoritmo total potencialmente de O(n2), que seria claramente inferior à grande maioria dos
algoritmos alternativos. Duas estratégias são possíveis para minimizar o tempo de procura. A
primeira baseia-se na constatação do seguinte facto: um vértice que esteja potencialmente no
interior de um triângulo possível, tem que ser côncavo. Denominam-se vértices côncavos
aqueles cujo triângulo realizado entre os seus vértices anterior e seguinte se situa no exterior
do polígono (figura 2.5.). O número de vértices côncavos num polígono, pode variar desde 0
até n-1, contudo na maioria dos casos este tipo de vértices não ocorre com tanta frequência. A
detecção de vértices côncavos é um processo que se faz em O(n), com recurso à equação
referida no ponto b). Para minimizar o tempo de procura, um algoritmo de procura binária
efectuado sobre uma lista ordenada pelas coordenadas, permitirá reduzir o espaço de procura
para log(k) (com k= nº de vértices côncavos). Naturalmente que é possível a ocorrência de
situações patológicas (figura 2.6.) em que o tempo de procura é directamente proporcional ao
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
35
número de vértices. Contudo essas situações só ocorrem para um número relativamente
reduzido de vértices. Esse maior número de testes que é efectuado para um vértice é
posteriormente compensado por muito menos testes a realizar nos vértices subsequentes, o
que torna a complexidade real do algoritmo menor do que o esperado. A utilização dos
vértices de concavidade permite ainda uma ramificação trivial do algoritmo. Assim, se esse
número for zero, o polígono é convexo e pode ser triangulado em O(n) pelos algoritmos
conhecidos (de Berg 2000)
Figura 2.5. Exemplo de um vértice concâvo situado em Pj
Este algoritmo não procura gerar triângulos com ângulos mínimos reduzidos, sendo
inclusivamente comuns as situações em que sucedem triângulos degenerados. No entanto, as
decomposições geradas tendem naturalmente a formar leques (triangle fans) que são um dos
tipos de primitivas geométricas mais eficientes para representar por APIs gráficas como o
OpenGL (Woo et al 1999) ou o Direct3D (Kovach, 2000).
Figura 2.6. - Exemplo de um caso "patológico" em que o número de vértices côncavos se
aproxima do número total de vértices
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
36
Figura 2.7. Exemplo de polígono a triangular
O algoritmo descrito pode ser ilustrado com recurso a um exemplo simples (Figura 2.7.). O
primeiro elemento a entrar na pilha é V1 ao que se segue V2. O elemento seguinte a V2 é V3,
que permite a realização de um triângulo com V1 e V2, dado o ângulo ser possível e não
existir nenhum vértice do polígono no interior do triângulo realizado entre estes 3 vértices.
Uma vez que este triângulo é possível, retira-se o topo da pilha (V2), escreve-se o primeiro
triângulo (V1,V2 e V3) e une-se V1 a V3. A entrada de V4, não permite a realização de um
triângulo entre este vértice e o par (V1,V3), pelo que se acrescenta à pilha e testa-se o vértice
seguinte (V5). Este também não consegue fazer um triângulo com V4 e V3, pelo que também
se acrescenta à pilha. Nesta fase do algoritmo, a pilha contém os vértices [V1, V3, V4 e V5]. O
próximo elemento a testar é V6, que permite fazer um triângulo (V4, V5, V6), com eliminação
do vértice V5. Seguidamente V6 testa a presença de mais um triângulo com o próximo
elemento da pilha (V3), que mais uma vez é possível, o que resulta na sua eliminação e
definição de mais um triângulo (V3, V4, V6). Uma vez que não é possível definir mais nenhum
triângulo com este vértice, V7 é testado e produz o triângulo (V1, V6, V7), com eliminação de
V6. V8 não permite a definição de nenhum triângulo pelo que entra na pilha. O teste de V9
permite a definição dos dois últimos triângulos (V7, V8, V9) e (V1, V7 e V9) com a eliminação
dos vértices V8 e V7, respectivamente. O resultado final (Figura 2.8.) ilustra o resultado final
da triangulação realizada
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
37
Figura 2.8. Resultado final da triangulação do polígono de teste
2.3.5.4. Polígonos simples com ilhas
A ocorrência de polígonos com buracos ou ilhas em sistemas de informação geográfica é
relativamente frequente e o algoritmo geral de triangulação deve contemplar esses casos.
Contudo, devido à obrigação de, neste algoritmo, o aparecimento de um novo vértice ter que
estar ligado ao último vértice que entrou no sistema, não é possível a sua aplicação directa. É,
apesar de tudo, possível definir uma modificação simples que permite que qualquer polígono
com ilhas seja decomposto nos triângulos que o constituem. O procedimento básico consiste
na realização do processo de triangulação anteriormente descrito para o anel exterior do
polígono, contando com os vértices dos anéis interiores na verificação do passo 7. Após a
conclusão desta fase efectua-se a junção dos anéis interiores ao polígono principal. É portanto
necessário introduzir um passo extra que permita ligar um vértice que pertença a qualquer dos
anéis interiores a um outro que pertença ao anel principal. O algoritmo usa um artifício que
não aumenta o número de vértices real, mas assim aparece para o programa. A ideia
subjacente é a união dos anéis interiores ao anel exterior pela criação de dois vértices
auxiliares situados nos pontos de ligação (Figura 2.9). Apesar de desenvolvido
independentemente, este algoritmo foi aplicado com o mesmo objectivo por Held (2001).
Existe uma razão matemática que explica a necessidade de inclusão de novos vértices.
Teoricamente um polígono com n vértices sem buracos é triangulável em n-2 componentes
(de Berg et al. 2000), contudo, a presença de buracos faz com que o número de triângulos seja
2.2 −+= mnt (9)
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
38
em que m corresponde ao número de buracos e n ao número total de vértices no polígono
(soma dos anéis interiores e exterior). Para m = 0 - caso de polígonos sem buracos - esta
expressão colapsa na anterior. Desta forma, ao adicionar dois novos vértices para cada anel
anexado à fronteira exterior do polígono, o polígono resultante tem n + 2.m vértices que se
decompõem em 2.2 −+ mn triângulos, conforme esperado.
O algoritmo desenvolvido pode ser então descrito nos seguintes passos:
Algoritmo Triangulação_Com_Ilhas
1. Usando o algoritmo Triangulação, triangular todos os anéis que compôem o
polígono, por forma a eliminar todos os vértices que não são afectados pela existência
de ilhas
2. Para cada anel anterior verificar qual o vértice que se situa mais à esquerda, e ordenar
os anéis de acordo com esse valor
3. Para o vértice (VI) mais à esquerda de cada anel interior, procurar um vértice (VE) no
anel principal que possa ser unido a este de acordo com o seguinte procedimento:
a. Criar VEN e VIN nas mesmas posições de VE e VI, respectivamente
b. VINant = VIant; VINseg = VEN
c. VIant = VE;
d. VENant = VIN; VENseg= VEseg
e. VEseg = VI
4. Triangular o polígono formado e repetir o ponto 3 até não haver mais anéis para
processar.
Na figura 2.10 ilustra-se o procedimento de triangulação de um polígono com 2 buracos.
Inicialmente VE é um vértice que pertence ao anel exterior e VI pertence a um anel interior
(Figura 2.9a). Após o passo 3, são criados 2 novos vértices (VEN e VIN) nas mesmas
posições de VE e VI, mas que contudo aparecem na figura 2.9.b com um deslocamento para
manter a claridade na exposição. Seguidamente são atribuídas as ligações entre os novos
vértices entre si e a estrutura que os envolve
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
39
VEN VIN
VE
VI
a) b) Figura 2.9 Processo de fusão de dois anéis por criação de dois vértices auxiliares. a)
situação inicial antes da fusão (VE - vértice pertencente ao anel exterior; VI - Vértice
pertencente ao anel interior); b) situação final em que os dois anéis pertencem ao mesmo
ciclo
A parte crítica deste algoritmo é o ponto 3, onde se tem que encontrar um vértice (VE) do anel
principal que seja possível unir ao vértice situado mais à esquerda (VI) dos anéis interiores.
Uma vez que o anel exterior envolve todos os anéis interiores, escolhendo o vértice mais à
esquerda (ou à direita - o objectivo é encontrar o ponto mais extremo dos anéis que
constituem os buracos), é garantido que tem de haver um vértice exterior que se ligue a este
sem quaisquer intersecções. Contudo a procura deste vértice e detecção de possíveis
intersecções, pode requerer uma busca extensiva que depende directamente do número de
vértices no polígono. Este processo, com uma estrutura de dados adequada, pode ser
conseguido em O(n.log n), contudo a complexidade requerida para essa abordagem não
justifica os ganhos em desempenho para a dimensão dos polígonos considerados. Deste modo
usou-se uma procura sistemática que, no pior caso, corre em tempo O(n2), tendo contudo na
grande parte das situações encontradas uma complexidade próxima de O(n). Na figura 2.10
demostram-se os resultados da triangulação de um polígono com dois anéis interiores. Na
figura 2.10a, ilustra-se o polígono com os anéis separados. Seguidamente (Fig. 2.10b) ilustra-
se o resultado da fusão dos anéis interiores com o anel principal. Finalmente (Fig. 2.10c),
mostra-se o resultado final da triangulação realizada O anel exterior tem 8 vértices e os
interiores têm 3 e 5. Pela aplicação da expressão (9), o número total de triângulos esperados é
de 18 ((8 + 3 + 5) + 2 x 2 - 2), que se confirma pelos resultados obtidos.
VE VI
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
40
a) b) c) Figura 2.10 - Decomposição de um polígono com buracos através do algoritmo
Triangulação_Com_Ilhas. a) Polígono antes do processo de triangulação; b) Fusão dos
buracos com o anel principal; c) resultado da triangulação final
2.3.5.5. Triangulação de polígonos monotónicos
Se for conhecido que o polígono é monotónico é possível triangular qualquer poligono em
O(n)(e.g. Seidel 1991, de Berg 2000). Como foi referido, o algoritmo descrito acima para
polígonos simples pode ser modificado para triangulação de polígonos monotónicos
removendo simplesmente o passo 7. de Berg (2000) mostrou que a complexidade deste
algoritmo é de O(n)
2.3.5.6. Considerações finais sobre a metodologia seguida
O algoritmo desenvolvido para triangulação de polígonos simples sem buracos é de extrema
simplicidade, podendo ser implementado com muito poucas linhas de código. O tempo
esperado de execução é de O(n.log n) o que o coloca a par com as implementações mais
utilizadas. Contudo o procedimento utilizado para lidar com buracos não tem a mesma
elegância do programa principal exigindo um tratamento especial. Isto contrasta com o
algoritmo mais implementado de decomposição trapezoidal (Seidel 1991, Narkhede e
Manocha 1995, de Berg et al. 2000) onde o mesmo procedimento pode lidar com buracos sem
nenhum acrescento ao algoritmo.
2.3.6. Intersecção de triângulos com as Células de visibilidade
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
41
Os triângulos gerados pela triangulação dos polígonos podem por vezes ser maiores que as
células de visibilidade que constituem a paisagem a visualizar (secção 3.3.1.). Quando sucede
esta situação é fundamental realizar a decomposição desses triângulos por forma a que cada
parte fique no interior de cada célula de visibilidade intersectada. Na maioria dos casos, é um
processo trivial, pois os triângulos são suficientemente pequenos para estarem contidos num
só mosaico. Podem contudo ocorrer casos complexos em que um triângulo intersecte 2 ou
mais mosaicos. Nestes casos, a solução natural consiste em subdividir o triângulo em causa
em 2 ou mais triângulos por forma a que cada um destes componentes caiba inteiramente
numa só célula. O processo apesar de simples pode originar situações complexas de solução
não trivial. Desenvolveu-se portanto um algoritmo que permite resolver de uma forma
genérica este tipo de situações. Consiste numa solução recursiva simples, mas que dá bons
resultados para intersecções com poucos mosaicos. O procedimento seguido pode ser descrito
nos seguintes passos:
Algoritmo Intersecta
1. Verificar se o triângulo (P0, P1, P2) intersecta alguma aresta do mosaico. Se não, sai do
procedimento
2. Caso exista uma ou mais intersecções, selecciona-se uma das arestas do triângulo (e.g.
P0P1) que intersecte uma das arestas do mosaico e determina-se o ponto de
intersecção (Pi)
3. Repete-se recursivamente o algoritmo para os triângulos (P0, Pi, P2) e (P2, Pi, P1)
A determinação da intersecção de um segmento de recta com uma das rectas que compõem a
grelha pode ser determinado usando o método seguinte. Seja a recta que contém o segmento
tipificada por 0=++ CByAx e a recta que contém o segmento que queremos verificar da
grelha definida por 0''' =++ CyBxA , o ponto de intersecção desta duas componentes é dado
por:
BAAB
ACCAy
''
''
−−= ,
A
Cyx
−= (10)
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
42
Para determinar se o ponto calculado pertence ao segmento [(x1, y1), (x2, y2)], é suficiente
calcular o valor r:
12
1
xx
xxr
−−=
(11)
Se este valor estiver entre [0, 1] então existe uma intersecção da recta da grelha com o
segmento considerado.
O primeiro passo do algoritmo Intersecta não é inteiramente linear dado que, devido a erros
de arredondamento originados pela pouca precisão da unidade de vírgula flutuante, por vezes
vértices coincidentes com uma aresta do mosaico são classificados como estando fora. É
necessário assim introduzir no algoritmo mecanismos que permitam ajustar a precisão desse
procedimento. No caso presente, assumiu-se uma orla de 5 cm à volta de cada célula. Caso
um ponto esteja fora até este valor, é considerado como ainda pertencendo ao mosaico.
Pode-se exemplificar o funcionamento do algoritmo no caso simples da Figura 2.11. O
triângulo P0, P1, P2 intersecta a grelha em dois pontos. O algoritmo verifica que P0 e P1 estão
em células diferentes e determina o ponto de intersecção (Pi1). Com este ponto definem-se 2
novos triângulos: (P0, Pi1, P2) e (Pi1, P1, P2), que se submetem de novo ao algoritmo. O
primeiro triângulo está totalmente no interior de uma célula e não é mais modificado. Para o
segundo triângulo gerado verifica-se que o segmento P1P2 intersecta a grelha (em Pi2), sendo
de novo subdividido nos triângulos (Pi1, P1, Pi2) e (Pi1, Pi2, P2), Verifica-se então que cada um
destes está contido numa só célula e o processo é interrompido, tendo sido gerados 3
triângulos ((P0, Pi1, P2), (Pi1, P1, Pi2) e (Pi1, Pi2, P2)), nenhum dos quais intersectando qualquer
aresta da grelha das células de visibilidade.
Como foi referido, este algoritmo funciona razoavelmente bem para triângulos com poucas
intersecções no mosaico envolvente. Devido à natureza da informação espacial, na maior
parte das paisagens consideradas no âmbito deste trabalho, este algoritmo pode ser aplicado
com resultados seguros. Apesar de tudo, casos patológicos de triângulos muito grandes podem
ocorrer (por exemplo, em zonas planas com pouca diversidade no coberto vegetal). Nestes
casos, o algoritmo dá resultados correctos, contudo resulta em mais triângulos do que seria
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
43
necessário (Fig. 2.12). Para estas situações, seria desejável utilizar outros métodos de
decomposição espacial como, por exemplo, os mecanismos de intersecção de polígonos
descritos por de Berg (2000)
Figura 2.11. Subdivisão de um triângulo por sobreposição a uma grelha ortogonal
Figura 2.12 Exemplo de subdivisão excessiva de um triângulo pela sua inserção numa grelha
ortogonal.
Esta primeira fase enumera todos os triângulos que constituem a paisagem identificando-os
ao nível da sua ocupação e da localização nas células de paisagem. Apesar desta formatação
dos dados poder ser directamente introduzida no módulo de visualização optou-se por realizar
um segundo pré-processamento para melhor estruturar a informação e facilitar a leitura pelo
programa principal. Assim, a segunda fase servirá, em primeiro lugar, para agrupar os
triângulos nas respectivas células de visibilidade e, em segundo lugar, para a computação das
normais dos pontos que constituem a malha do terreno. A determinação das normais permite a
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
44
utilização de métodos de sombreamento (Foley e van Dam 1997) que conferem uma
aparência arredondada ao terreno fazendo-o parecer mais natural. No entanto, a decomposição
geométrica realizada, com separação total de triângulos sem identificação de pontos comuns
obriga a uma operação subsequente nos procedimentos de pré-processamento de informação
geométrica.
2.3.7. Cálculo das Normais
No procedimento anterior, devido ao processamento individual dos polígonos que constituem
a cobertura do SIG, é efectuada uma listagem simples dos triângulos que os constituem,
sendo determinada a célula de visibilidade a que pertencem. Para a determinação das normais
de cada ponto é contudo necessário uma abordagem holística, uma vez que o cálculo das
normais de um vértice corresponde à média das normais dos polígonos nos quais está
inserido. Assim, é fundamental conhecer todos os triângulos que são constituídos por cada
ponto da malha. Deste modo, o primeiro passo nesta fase do pré-processamento é a
identificação dos pontos únicos que a constituem, dado que vários triângulos podem partilhar
um ou mais pontos. O procedimento usado coloca os pontos de cada triângulo numa tabela de
dispersão, e associa uma lista de triângulos a cada ponto. Posteriormente as normais de cada
ponto são calculadas pela média das normais dos triângulos que partilham esse mesmo ponto.
(Figura 2.13)
Figura 2.13. Exemplo do cálculo de normais para um vértice
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
45
O processo de cálculo de normais é baseado na aplicação do produto externo. Esta operação
geométrica, produz um vector normal a um plano usando dois vectores que pertencem a esse
mesmo plano. Num triângulo, quaisquer dois vectores são coplanares pois partilham pelo
menos um vértice. Para um dado triângulo há sempre duas normais possíveis com a mesma
direcção, mas com sentidos inversos, que são geradas dependendo da orientação dos vértices
que os constituem. Dada a natureza da superfície modelada (um mapa digital do terreno),
interessa calcular uma normal com uma componente y positiva. A regra da mão direita
(Lengyel 2001) permite determinar a priori a orientação do vector normal calculado. Assim
se os dedos da mão estiverem orientados no sentido de um dos vectores e a palma estiver a
apontar na direcção do outro vector, o sentido do vector produzido pelo produto externo é
dado pela posição do polegar. Uma forma de garantir que esta regra é sempre cumprida é
seleccionar, como ponto de intersecção dos dois vectores, o ponto que está mais à direita e
garantir que os vértices se encontram orientados no sentido dos ponteiros do relógio.
Não há mecanismo nenhum no processo de triangulação descrito na secção 2.3.5. que garanta
que o triângulo gerado fique orientado. O procedimento que se descreve a seguir é um
algoritmo trivial que, usando como variáveis de entrada um conjunto de 3 pontos que
constituem um triângulo no espaço, faz sair os mesmos 3 pontos orientados no sentido dos
ponteiros do relógio, sendo o primeiro ponto, aquele que está situado mais à direita (valor
maior na coordenada x).
Algoritmo OrientaTriangulo
1. Seleccionar o ponto mais à direita (P0), não atribuindo qualquer ordem aos outros dois
pontos (P1 e P2) que constituem o triângulo. V12 corresponde ao vector que tem como
extremos P1 e P2 estando orientado nesse sentido
2. Através da Equação (5) verificar se o ponto P0 se encontra à direita (<0) ou à esquerda
(>0) do vector V12.
3. Se P0 está à direita de V12, trocar P1 com P2 (P1=P2 e P2=P1)
4. P0, P1 e P2 representam um triângulo orientado no sentido dos ponteiros do relógio
Tendo os triângulos orientados, garante-se que a aplicação do produto externo a cada ponto
tem uma componente y positiva e a normal associada ao triângulo está correctamente
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
46
calculada. O facto do vértice do triângulo situado mais à direita ser o primeiro valor de saída
deste procedimento facilita a aplicação do produto externo.
Apesar do OpenGL aceitar valores não normalizados para os vectores normais, para
minimizar erros de arredondamento num processamento posterior, optou-se por fazer a
normalização directamente nesta fase do pré-processamento. Esta decisão é ainda beneficiada
pelo facto da linguagem Python, utilizada durante todo o pré-processamento da informação,
tratar nativamente todos os números de vírgula flutuante em dupla precisão (64 bits). Essa
precisão é perdida deliberadamente na criação do ficheiro final com a geometria do terreno,
em primeiro lugar devido ao maior espaço necessário para armazenar essa informação (seriam
necessários 64 bytes por cada ponto). Em segundo lugar devido ao muito maior tempo de
processamento de valores de dupla precisão. Se a velocidade do computador que processa a
informação geográfica não é relevante, pois é um processo realizado apenas uma vez, todo o
código referente ao visualizador deve ser extremamente optimizado para se poder manter um
frame rate confortável para o utilizador, mesmo nas situações mais difíceis. Uma terceira
razão para não manter a precisão dos números de vírgula flutuante em 32 bits é a própria
natureza do OpenGL, que para diversos procedimentos obriga à utilização deste valor de
precisão numérica.
A leitura da informação resultante, já pelo módulo de visualização, é um procedimento
eficiente devido ao pré-processamento realizado que agrupa em estruturas separadas a
informação relativa aos vértices (incluindo as normais) e a relativa aos triângulos (contendo
para cada um os IDs dos polígonos a que pertenciam). A informação espacial, uma vez
calculada, não necessita de ser mais modificada, podendo ser utilizada para a análise de várias
situações de gestão, admitindo que a geometria do uso do solo não é alterada ao longo do
período de simulação.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
47
3. FERRAMENTAS DESENVOLVIDAS
3.1. Factores comuns
A representação tridimensional de paisagens florestais é um problema computacional
complexo dada a ocorrência de cenas com uma grande complexidade geométrica, devido à
presença de um grande número de objectos (árvores) em situações em que é difícil a
utilização de algoritmos para simplificação da geometria. Abordagens tradicionais de redução
do número de polígonos a desenhar em cada imagem falham na representação de espaços
florestais, sendo neste momento um problema ainda sem resolução conhecida. As duas
abordagens descritas nesta secção focam duas estratégias possíveis para resolver o problema
em questão. A primeira (Landscaper 1.0), manifestou algumas insuficiências que a segunda
versão (Landscaper 2.0) procurou colmatar, perdendo-se, apesar de tudo, algumas das
características iniciais, que podem ter interesse para potenciais utilizadores do sistema.
3.1.1. Utilização da biblioteca OpenGL
Para tentar retirar o máximo partido dos recursos computacionais existentes, ambas as
ferramentas desenvolvidas foram desenvolvidas em C/C++, utilizando para aceder ao
hardware gráfico a biblioteca OpenGL. O sistema gráfico OpenGL é um interface de software
para o hardware gráfico (Woo et al 1999). GL significa “Graphics Library”, procurando este
sistema ser uma biblioteca de funções gráficas que permitem representar imagens e
geometrias de objectos tridimensionais. O OpenGL foi desenhado para ser um interface
independente do hardware utilizado, para poder ser utilizado em várias plataformas. O seu
desenho interno é o de uma máquina de estados finitos. Ao definir a geometria, esta é
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
48
representada no ecrã de acordo com o estado de diferentes parâmetros que se mantêm activos
até serem alterados no decorrer do programa.
O OpenGL é uma biblioteca de funções de um nível relativamente baixo, por isso foram
adicionados outras bibliotecas utilitárias que simplificam o acesso a outras componentes do
sistema. De particular interesses para este trabalho foi a utilização do OpenGL Utility kit
(GLUT). Este é um conjunto de funções acessórias independente da plataforma, desenhado
para esconder as complexidades dos diferentes sistemas de janelas (Woo et al. 1999, Kilgard
1986). Esta biblioteca permite lidar com grande parte dos problemas associados ao interface
com o utilizador, fornecendo um conjunto de funções que facilitam o acesso a problemas de
mais baixo nível, geridos habitualmente pelo sistema operativo. Deste modo, o GLUT efectua
um controlo das mensagens e eventos que são enviados para o programa, dando ao
programador um ambiente uniforme, permitindo que o desenvolvimento se centre nas
questões essenciais do processamento gráfico e não em questões acessórias, como lidar com o
movimento do rato, acções no teclado ou o tratamento de mensagens várias do sistema
operativo.
Nas duas versões do programa o procedimento básico de inicialização e decorrer do programa
foi semelhante, podendo se resumir nos seguintes passos. Em primeiro lugar é inicializada a
biblioteca GLUT, que por sua vez acciona todos os mecanismos para que o OpenGL fique
operacional. Seguidamente é definida a janela de trabalho e é inicializada a geometria que irá
ser representada tridimensionalmente pelo sistema. São definidas quais as funções que
permitem o interface com o utilizador por intermédio do uso do rato e do teclado e
eventualmente do joystick. Definem-se ainda quais as funções que processarão o desenho da
geometria (display) e os procedimentos a executar caso a janela seja redimensionada. É ainda
definido o que fazer quando o programa não está a responder a eventos (idle). Finalmente,
coloca-se o programa entra num ciclo sem fim, passando o controle aos procedimentos
enumerados. No decorrer do programa é naturalmente sobre a rotina de display que ocorre a
maior pressão, sendo esta rotina crucial no desempenho do programa dado ser nesta fase que é
processada toda a geometria presente em cada cena.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
49
3.1.2. Utilização de extensões ao OpenGL 1.2
O OpenGL foi desenhado de forma a permitir extensões às funcionalidades básicas que fazem
parte do núcleo da API. Essas extensões podem ser particulares a um determinado fabricante
de hardware, ou fazerem parte de recomendações da Architecture Review Board - ARB -
(Woo et al. 1999) para inclusão no núcleo de futuras versões da API. Essas extensões não são
directamente acessíveis ao programador, sendo necessário um procedimento de inicialização
especial. Em primeiro lugar é necessário verificar se a extensão pretendida está disponível na
plataforma para a qual se compila o programa. Esta procura realiza-se através da função
glGetString(GL_EXTENSIONS), que devolve uma listagem em texto de todas as extensões
disponíveis. Caso a extensão exista é então necessário criar, dentro da aplicação, uma variável
que funciona como um apontador para uma função, e posteriormente inicializar essa função
por meio da função XglGetProcAddress(char *). Desta forma a função fica a apontar para
o procedimento definido no driver OpenGL específico do hardware gráfico utilizado.
3.1.3. Representação de geometria
O OpenGL tem 4 formas de representação da geometria:
a) Primitivas directas;
b) Vertex arrays;
c) Display lists;
d) Vertex Buffer Objects.
a) Primitivas directas.
As primitivas directas são a forma mais flexível de submeter qualquer informação geométrica
à API. Essencialmente, através de funções distintas, são submetidas as coordenadas dos
vértices, as normais respectivas e as coordenadas das texturas associadas. Devido ao overhead
resultante de toda esta chamada de funções, este método é geralmente o mais lento de todos.
b) Vertex arrays
Os vertex arrays foi a forma utilizada pelo OpenGL para resolver dois problemas. Em
primeiro lugar diminuir a redundância no processamento geométrico, e o número de funções
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
50
chamadas na utilização de primitivas directas. Por exemplo, para processar um cubo, cada
vértice pertence a 3 quadriláteros, este teria assim de ser introduzido 3 vezes no pipeline
gráfico. Por outro lado, a representação gráfica de uma geometria fixa, obriga a que pelo
menos tantas funções sejam chamadas quantos os pontos que constituem essa forma. O uso de
vertex arrays simplifica esse processo permitindo que esse conjunto de vértices seja
processado com uma só chamada de uma função (Woo et al 1999).
A utilização de vertex arrays obriga a uma maior estruturação no processo de tratamento de
informação, forçando a organização dos elementos que constituem a geometria num conjunto
de vectores (arrays) que permitem a definição das componentes básicas de uma cena de uma
forma sequencial. Apesar de terem um procedimento de inicialização mais complexo, esta
forma de submeter geometria é muito mais eficiente que o uso de primitivas directas .
Marselas (2000), por exemplo, relata ganhos de performance de cerca de 350 %.
c) Display lists
As display lists (DLs) são geralmente o método mais eficiente para a representação de
geometrias densas ou complexas. Este método baseia-se na compilação pelo OpenGL das
primitivas submetidas à API. O resultado dessa compilação é acedido através de um índice.
Para representar todo um conjunto de primitivas basta então chamar uma só função. Este tipo
de representação é extremamente eficiente a nível de desempenho. Tem contudo alguns
problemas. Em primeiro lugar, só funciona para geometrias estáticas. Uma vez compilada, a
DL não pode ser modificada. Em segundo lugar, é relativamente pouco eficiente no uso da
memória. Finalmente, apesar de ter um overhead geralmente menor que o uso de primitivas
directas, o uso de DLs justifica-se apenas quando o número de vértices que a constituem for
razoavelmente grande. Para DLs com poucos vértices, os recursos consumidos pelo OpenGL
para submeter a geometria ao pipeline gráfico são comparativamente superiores aos ganhos
em desempenho resultantes da sua aplicação.
d)Vertex Buffer Objects
Os Vertex Buffer Objects (VBOs) são uma nova componente do OpenGL que foi adicionada
para as especificações do OpenGL 1.5., tendo sido normalizada pela ARB em Fevereiro de
2003. Os VBOs são vertex arrays definidos para se conseguir um alto desempenho de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
51
desenho. Estas estruturas permitem que vários tipos de dados, nomeadamente arrays de
vértices, sejam guardados directamente na memória RAM do hardware gráfico, melhorando
assim as transferências de informação entre os diferentes componentes do sistema (ARB
2003).
Os VBOs funcionam, na sua essência, de forma semelhante à de vertex arrays, contudo
oferecem um muito melhor desempenho, apesar de geralmente necessitarem de maior
capacidade de memória na RAM do acelerador gráfico utilizado. Caso essa memória não
esteja disponível, o OpenGL tenta reservar espaço de memória na memória AGP que está
mapeada na RAM principal do computador. Essa área de memória pode beneficiar das
velocidades de transferência associadas ao Bus AGP, que no caso da especificação AGP 8x
pode atingir os 2GB/s (Chen et al. 2002).
Verificou-se, através de testes individuais, que os VBOs têm aproximadamente o mesmo
desempenho conseguido pelas DLs, contudo estas têm uma presença em memória muito mais
significativa, o que em situações de grande complexidade geométrica coloca problemas de
desempenho devido aos recursos necessários para gerir uma maior quantidade de informação.
3.1.4. Transparências e alpha blending
A representação de texturas com transparências ou translucências (transparências parciais)
obriga a um maior grau de complexidade na utilização de texturas. Assim, uma textura não
pode envolver apenas uma representação cromática do objecto a que pertence, usando 3
canais de cor (RGB). É necessário que contenha um outro que quantifica a opacidade dessa
mesma textura e do objecto a que a textura pertence. Esse canal, designado alpha, é
quantificado geralmente de 0 a 1, sendo o valor 1 a opacidade total e o valor 0 indicativo de
total transparência. As imagens ficam deste modo definidas com 4 canais (RGBA), ocupando
32 bits por pixel.
O problema da utilização de texturas com transparências resulta do facto do algoritmo
geralmente utilizado para determinação da geometria visível (z-buffer), não se adequar
directamente à presença de transparências. O z-buffer permite desenhar cenas
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
52
geometricamente muito complexas independentemente da ordem pela qual são submetidos os
polígonos, uma vez que são apenas desenhados os pixels mais próximos do ponto de
observação. O problema com a utilização de canais alpha com transparência total (A=0) deve-
se ao facto de, apesar da textura referir que a transparência é total, a coordenada z do pixel é
armazenada da mesma forma no z-buffer, o valor da cor a aplicar não é no entanto alterado,
mantendo-se a cor do fundo ou do polígono que se situa imediatamente atrás. Os problemas
surgem quando se desenha um novo polígono que se apresente por trás do polígono
transparente. Uma vez que o valor do z-buffer nesse pixel é o do polígono transparente, que se
situa mais próximo do que o novo polígono a desenhar, a sua cor não é alterada, resultando
uma representação errónea da cena. Dado que a utilização de um z-buffer é extremamente
eficiente e optimizada pelo hardware, a alternativa é encontrar algoritmos que permitam a
utilização deste algoritmo com primitivas transparentes.
Conforme foi descrito na secção 2.2.1., a metodologia utilizada para a representação
geométrica de árvores foi a utilização de dois rectângulos texturados que se entrecruzariam.
Esta metodologia obriga à utilização de técnicas de representação gráfica capazes de lidar
com problemas de transparência. Não é um assunto trivial, havendo várias abordagens
possíveis. Contudo, com as capacidades computacionais actualmente disponíveis, qualquer
um dos métodos referidos apresenta inconvenientes.
A estratégia mais simples para abordar este problema baseia-se no desenho dos polígonos
transparentes ou semitransparentes depois dos polígonos opacos. Esta abordagem é eficiente e
geralmente fácil de implementar. Podem, contudo, ocorrer diversos tipos de problemas devido
à ordem de desenho dos polígonos. Com efeito, em polígonos que contenham partes opacas e
transparentes (como é o caso das árvores no presente trabalho, se não há uma ordenação
prévia dos polígonos e posterior desenho de trás para a frente podem suceder situações
bizarras que confundem o utilizador. A ordenação de polígonos também não é por si um
problema fácil, pois é frequente um polígono poder estar simultaneamente à frente e atrás de
outro (Abrash 1997).
Uma segunda metodologia consiste na desactivação da escrita no Z-buffer para polígonos
translúcidos ou transparentes. Esta técnica é defendida por vários autores (e.g. Nagy 2000). A
ideia base baseia-se no facto de, se um polígono translúcido não escrever no Z-buffer, então
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
53
outros polígonos subsequentes que forem escritos por trás não são ocludidos por este. Esta
técnica pode dar bons resultados, não tendo os problemas de qualidade de imagem associado
às técnicas anteriores. Há contudo dois sérios inconvenientes à sua utilização. O primeiro é
que ela só funciona correctamente se os polígonos forem ordenados e desenhados de trás para
a frente. A ordenação de polígonos em cada frame pode causar uma diminuição considerável
no desempenho do programa. O segundo problema é uma segunda consequência do anterior.
Uma vez que é necessário ordenar os polígonos, não é possível a utilização de Display Lists
ou Vertex Buffer Objects, para representação da geometria (ver secção 3.1.3), dado que a
ordem pela qual estas duas técnicas submetem a geometria ao pipeline gráfico é fixa.
Uma terceira abordagem é a definição de um filtro com base no valor do parâmetro Alpha.
Assim, só há escrita no z-buffer quando os valores do parâmetro Alpha forem superiores a um
limiar pré-definido. O OpenGL permite essa funcionalidade através da função
glAlphaFunc(), que admite como parâmetro um determinado valor de alpha. Esta técnica dá
resultados bons e coerentes para os casos em que os valores de alpha são ou 0 ou 1, sem
valores intermédios. Apesar de aparentemente ser superior aos métodos anteriores, esta
abordagem não é contudo isenta de problemas. Quando é aplicada uma textura a um polígono,
esta não é directamente decalcada. O processo de decalque é definido pelos filtros de textura,
definidos na altura da sua criação. A utilização de filtros lineares ou mipmap (Woo et al.
1999), (e.g. GL_LINEAR_MIPMAP_LINEAR) provoca o aparecimento de valores interpolados de
alpha que não são nem 0 nem 1. A presença de valores muito elevados provoca o
aparecimento de auréolas à volta de objectos ampliados, ao passo que valores muito baixos,
fazem com que as partes mais finas da imagem pareçam desaparecer (figura 3.1.). Na figura
3.1a, é visível a auréola a rodear o tronco e os ramos mais finos das árvores que estão mais
próximas. Com um parâmetro alfa de 0.9 (figura 3.1b), os troncos das árvores mais distantes
desaparecem, criando uma aparência de irrealidade. Nesta figura é possível observar no
horizonte que as copas das árvores mais distantes parecem suspensas e, mesmo em árvores
mais próximas, como no centro da imagem, os troncos quase que desaparecem. A escolha de
valores alpha deveria em princípio ser regulada pela distância, com árvores mais próximas a
receberem valores mais altos e árvores mais distantes a receberem valores mais baixos.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
54
a) b)
Figura 3.1. Alpha blending em OpenGL. Problemas na adequação de valore correctos de
alpha para representação da geometria. (a) glAlphaFunc(GL_GREATER 0.1); b)
glAlphaFunc(GL_GREATER 0.9) )
Uma quarta alternativa consiste na representação da geometria com transparências em duas
passagens, usando várias variáveis de estado do OpenGL (Nagy 2000). Esta abordagem dá
excelentes resultados, não podendo contudo ser aplicada para o presente trabalho devido ao
elevado número de polígonos com transparências existente. Esta técnica, devido ao facto de
efectuar duas passagens por polígono, duplicaria o número de vértices submetidos e reduziria
severamente o desempenho.
3.2. LANDSCAPER 1.0
Na primeira versão do programa, o sistema idealizado estava centrado no cumprimento dos
seguintes objectivos:
a) Sistema escalonável, que pudesse ser estendido a várias centenas de milhares de
hectares com vários milhares de povoamentos.
b) Capacidade de visualizar vários tipos de povoamentos florestais (permitindo a
representação de povoamentos mistos, e irregulares) usando um mínimo de
informação específica para cada tipo de povoamento
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
55
c) Conservação no terreno dos pontos de referência (elementos humanos, como estradas,
caminhos povoações) para melhor situar geograficamente o utilizador do sistema;
d) Possibilitar um horizonte visual variável: um modo steering em que o utilizador se
poderia deslocar livremente na paisagem, tendo contudo um horizonte visual limitado,
e um modo Landscape, em que seria possível ver toda a paisagem, mas com
interactividade reduzida.
Estes pressupostos nortearam o desenvolvimento do sistema Landscaper 1.0 usado para
avaliação da paisagem originada por vários cenários de gestão para o Perímetro Florestal do
Cantão das Hortas. Apesar da área total da fotografia aérea ter cerca de 15.0 km2, a área
específica do Cantão representa apenas cerca de 30.7 % da área total (460.0 ha), o que se
traduzia num número relativamente reduzido de árvores na cena. Admitindo uma densidade
média de 500 árvores por ha, totalizam-se 230,000 árvores presentes na paisagem, em média.
Isto totaliza cerca de 920,000 polígonos na cena, correspondentes a 1,840,000 vértices
individuais, excluindo a grelha regular que contém o DTM (16,641 triângulos). Com esta
densidade geométrica é assim difícil representar com um mínimo de fluidez cada cena. A
descrição do sistema foi a primeira estratégia desenvolvida para responder aos problemas
computacionais inerentes a este tipo de situações.
3.2.1. Representação interna da informação
O sistema de tratamento da informação é suficientemente geral para poder ser utilizado numa
variedade de arquitecturas. Com efeito, o sistema proposto permite a definição de unidades
básicas de povoamentos. A primeira abordagem seguida consistia na reprodução exacta dos
mosaicos representativos dos povoamentos, através de uma divisão da área florestal numa
grelha com a mesma dimensão dos mosaicos. Essa abordagem simplista tinha ainda a
vantagem de permitir uma ligação fácil com o mapa digital do terreno (DTM). Com efeito, a
utilização de um pixel de 30 metros na representação de paisagens é usual e permite uma boa
aderência à realidade.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
56
+CCoverType()+~CCoverType()+Init() : int+DrawTrees(in cc : CellCoords, in stand : CStand*) : bool
+coverType : int+NumTrees : int+Trees : Tree *
CCoverType
+CLandscape()+~CLandscape()+DrawLandscape(in row : int, in col : int)+DrawLandscape2(in r1 : int, in c1 : int, in r2 : int, in c2 : int, in r3 : int, in c3 : int)+ReadLandscape() : bool+CreateLandscapeList() : bool-ReadStartFile(in fileName : string) : bool-ReadStands() : bool-ReadStandMap() : bool-ReadHeightMap() : bool-ReadCoverTypes() : bool-ReadLandTexture() : bool-DrawLandscapeTrees()-MakeTreeList(in texture_id : GLint) : GLint-calc_frustum(in x1 : int, in y1 : int, in x2 : int, in y2 : int, in x3 : int, in y3 : int)-draw_top_triangle(in xtop : int, in ytop : int, in ybottom : int, in xleft : int, in xright : int)-draw_bot_triangle(in ytop : int, in xleft : int, in xright : int, in xbottom : int, in ybottom : int)
+MapSize : int+landTexture : GLuint+init_x : float+init_y : float+HeightMap : float *+Grid : CCell *+n_stands : int+Stands : CStand *-StandFile : string-HMFile : string-CTFile : string-n_covertypes : int-CoverTypes[MAX_CTYPES] : CCoverType *-b_ctypes[MAX_CTYPES] : bool-drawAll : bool
CLandscape
+CStand()+~CStand()+InitTreeTypes()
+Stand_id : int+covertype : int+treeTypes : TreeType *+composition : int+species1 : int+species2 : int+species[2] : Biometrics+n_trees : int+n_treetypes : int
CStand +height : float+crownWidth : float+texture_id : int+list_id : GLint
«struct»TreeType
+dom_height : float+dbh : float
«struct»Biometrics
+coordX : float+coordY : float+speciesType : int+height : float+width : float+texture_id : int
«struct»Tree
Figura 3.2. Diagrama UML da estrutura de dados utilizada no programa Landscaper 1.0
No início do programa é criada uma paisagem (CLandscape) que contém todos os atributos
necessários para a representação visual da paisagem considerada. A informação relativa à
altimetria, por exemplo, está armazenada num vector de elementos de vírgula flutuante, para
optimizar o acesso e a representação na memória.
A classe CStand, que contém a informação relevante para representar os povoamentos
existentes na paisagem, não contém árvores, contém antes informação suficiente para
parametrizar as árvores que o constituem (TreeType). Esta informação é gerada na altura em
que o programa é inicializado. Quando é lida a tabela que contém os dados referentes aos
povoamentos, são apenas retidas:
a) a composição em espécies (que não pode ser mais que dois);
b) o número de árvores;
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
57
c) as características biométricas básicas do povoamento (altura dominante e área basal
(Alves 1982).
Posteriormente, um procedimento inicializa os tipos genéricos de árvores que existem no
povoamento. Estes tipos genéricos (templates) representam árvores básicas, mas sem
coordenadas no terreno. A atribuição de coordenadas é feita através de um procedimento de
mapeamento sobre as coberturas florestais (CCoverType) detalhado adiante (secção 3.2.2). A
cobertura florestal é também um modelo e contém as coordenadas para cada célula de
terreno das árvores que a constituem. Deste modo, as árvores de cada povoamento tipo,
aparecem de forma idêntica para todas as células que o constituem. É nesta classe que está
definido o método DrawTrees que executa todo o procedimento de desenho de árvores no
decorrer do programa. Como será descrito adiante (secção 3.2.2) esta classe foi definida para
ser independente da densidade e das características serais dos povoamentos que lhe
pertencem. Esta estrutura possibilita que um povoamento com 1200 árvores e outro com 500
podem ambos ser representados pela mesma instância da classe.
3.2.2. Colocação das árvores no terreno
Uma vez conhecida a ocupação de cada célula, sabe-se, no caso de células em áreas florestais,
a posição relativa de cada árvore no seu interior. O método utilizado por esta versão do
programa baseia-se numa cópia directa de cada célula de cada povoamento tipo, em cada
unidade visível de terreno. Esta abordagem funcionaria perfeitamente sem modificações em
situações de terreno plano. Para este caso seria suficiente calcular as posições de todos os
vértices que constituem cada árvore uma vez para cada célula tipo e reproduzir o padrão ao
longo da área de trabalho de acordo com o tipo de cobertura do terreno. A existência de uma
topografia irregular põe, apesar de tudo, alguns problema. Para uma área florestal extensa,
guardar as coordenadas de todas as árvores ocuparia uma grande quantidade de memória e
colocaria problemas de desempenho na gestão dessa informação.
A solução encontrada para a representação da geometria, baseia-se na utilização de
povoamentos tipo (CCoverType). Cada povoamento tipo é representado por um conjunto de
árvores situadas numa célula com uma dimensão idêntica à da malha da grelha
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
58
correspondente à grelha que define a topografia do terreno. Para minimizar ainda mais o
impacte desta componente da cena na memória, optou-se por colocar em cada povoamento
tipo o número máximo de árvores. A caracterização de um povoamento indica quantas
árvores existiriam na realidade e então apenas estas são mostradas. A ilusão é garantida, uma
vez que as coordenadas das árvores estão dispostas aleatoriamente pela célula
A colocação das árvores no terreno numa célula visível é executada de acordo com os
seguintes passos: Para o povoamento típico correspondente à célula a desenhar, seleccionam-
se apenas as n primeiras árvores, correspondentes à densidade real do povoamento florestal a
representar. Seguidamente, para cada árvore, determina-se a textura correspondente à espécie
e determinam-se as suas coordenadas no terreno por interpolação das suas coordenadas no
plano, com a célula, usando a altitude dos pontos que constituem os seus vértices. São
posteriormente calculadas as coordenadas dos dois rectângulos que a constituem, com as
dimensões apropriadas, de acordo com as propriedades da árvores correspondente no
povoamento típico. Estas duas componentes podem então finalmente ser submetidas ao
pipeline gráfico, usando primitivas directas do OpenGL ou uma pequena display list
convenientemente dimensionada e transformada.
A textura a aplicar ao terreno (fotografia aérea) é armazenada no hardware gráfico. A
coordenadas da textura são aplicadas de acordo com a posição de cada célula por interpolação
directa.
3.2.3. Definição do horizonte visual
A primeira abordagem usada para minimizar o impacte e a complexidade geométrica da cena
foi desenhar em cada frame apenas as células visíveis. A determinação da visibilidade pode
ser realizada de diversas formas. A solução procurada deveria ser extensível a grandes áreas e
deveria minimizar o número de testes a realizar. O algoritmo utilizado efectua o pré-cálculo
das células que são visíveis, admitindo que o observador está junto ao solo e a rugosidade do
terreno é negligenciável
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
59
Uma vez que a paisagem é constituída por células de dimensão fixa e a posição de um
observador habitual é junto ao solo, uma abordagem possível é a determinação da projecção
do frustum de visão no plano horizontal. e desenhar apenas as células abrangidas por essa
área. Admitindo que a normal à posição do observador é um vector perpendicular ao plano
horizontal (i.e., não admitindo rotações no eixo dos x), essa projecção é um triângulo. A
determinação das células que estão no interior desse plano pode ser realizada eficientemente
por intermédio de uma extensão do algoritmo de Bresenham a triângulos. O algoritmo
seguido, apesar de relativamente complexo, é muito eficiente, não tendo qualquer impacte no
desempenho do programa final.
Algoritmo TrianguloDeVisibilidade
1. Definir a projecção do frustum sobre o plano horizontal;
2. Dividir o triângulo resultante em dois, separando-os por um dos vértices através de
uma recta paralela ao eixo dos és de uma recta paralela ao eixo dos y. Resultam dois
triângulos com o "fundo chato" e outro com o "topo chato" (figura 3.3);
3. Determinar as equações das rectas que definem cada um dos triângulos;
4. Iniciando no triângulo de cima, desenhar as células que estão no seu interior, seguindo
o algoritmo de Bresenham (Bresenham 1965) para determinar os extremos de cada
linha, e seleccionando todas as células na mesma linha situadas entre esses dois
valores, inclusive;
5. Processar o triângulo de baixo, usando o mesmo método.
No exemplo (Figura 3.3.) .demonstra-se o algoritmo referido. Em primeiro lugar, define-se o
frustum de visibilidade sobre o mosaico do terreno (Fig. 3.3.a). Seguidamente, o triângulo
resultante é decomposto nos dois triângulos que o constituem (TC: triângulo de cima; TB:
triângulo de baixo) e desenhado, percorrendo sequencialmente cada uma das células que
constituem cada linha (Fig 3.3.b).
O conjunto de células seleccionadas poderia ser desenhado imediatamente à medida que o
procedimento de selecção vai decorrendo. Contudo, devido à existência de transparências na
representação das árvores, é necessário atrasar o procedimento de representação gráfica da
geometria da cena.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
60
a)
b)
Figura 3.3. Definição e desenho das células visíveis no programa Landscaper 1.0. (TC –
triângulo de cima; TB – Triângulo de baixo
3.2.4. Movimentação no terreno
Esta versão do programa permite todo o movimento do observador na paisagem virtual a
partir do teclado do computador. É possível executar rotações livres no eixo dos Y e dos X,
sendo o movimento executado, por deslocação no eixo dos Z. O programa tem ainda
mecanismos que evitam que o utilizador se “afunde” no terreno. Essencialmente, o
procedimento é executado determinando a célula de terreno correspondente á posição do
observador e interpolando posteriormente o valor de altitude com base dos 4 vértices que
compõem a célula, utilizando as equações (1) a (4). O algoritmo não permite que a posição do
utilizador seja inferior ao valor calculado adicionado de uma constante que representa a altura
do indivíduo (por omissão, 1.70 m).
3.3. LANDSCAPER 2.0
A primeira versão do programa foi desenvolvida procurando em todos os aspectos minimizar
a presença de dados na memória. O seu cenário de aplicação típico corresponde a uma
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
61
situação com uma variada fragmentação paisagística e um elevado número de povoamentos
distintos em que as árvores são relativamente semelhantes umas às outras. Contudo, em várias
situações, o número de povoamentos diferentes não é tão elevado, não se justificando uma tão
grande optimização da ocupação da memória. Foi então pensada uma nova versão do
programa que procurava resolver algumas das características menos bem conseguidas da
versão anterior, ao mesmo tempo que garantiria um uso mais racional do recursos
computacionais disponíveis. Em particular procurou-se tirar o máximo partido das
capacidades de aceleração de processamento de geometria das modernas placas gráficas de
uso comum e fazer um uso mais coerente dos recursos de memória.
Uma área florestal com cerca de 460 ha, como a primeira área de teste (Cantão das Hortas),
dependendo do nível de detalhe desejado, pode ser totalmente contida no hardware de um
computador actual e não oferece problemas de maior. No entanto, se a área crescer até aos
100,000 ha, como na segunda área de teste (Barlavento Algarvio), considerando uma taxa
média de ocupação de 300 árvores por ha, com 8 vértices por árvores, cada um caracterizado
por 3 unidades de vírgula flutuante de 32 bits, seriam necessários 2.682 GBytes apenas para
guardar as coordenadas correspondentes. O problema da gestão de memória de um volume de
dados destes coloca-se também ao nível computacional, uma vez que seria necessário mover
consecutivamente enormes quantidades de dados de uma parte para a outra da memória para
aceder à memória AGP (Chen et al. 2002) e entrar no pipeline gráfico. Dada a natural
fragmentação dos dados, ocorreriam também problemas no acesso aos controladores de DMA
(Direct Memory Access) e inúmeras falhas de cache no decorrer das operações de
visualização. É possível, com o hardware actualmente existente, representar essa quantidade
de informação num computador, contudo seria de prever uma quebra de desempenho difícil
de sustentar sem hardware especializado.
3.3.1. Diferenças face à versão anterior
Toda a arquitectura interna foi redefinida, bem como os requisitos de informação necessários,
se bem que mantendo a estrutura e a compatibilidade com os resultados provenientes do
simulador e dos módulos de modelação da gestão. Como diferença fundamental, refere-se a
utilização da geometria “verdadeira” das ocupações, usando a informação proveniente do
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
62
sistema de informação geográfica. Esta alteração implicou uma modificação profunda nas
estruturas de dados e algoritmos utilizados.
Outra modificação foi a incorporação ab initio de um algoritmo de carregamento dinâmico da
paisagem. Ou seja, a informação do terreno e as árvores que lhe estão associadas devem ser
carregadas dinamicamente. Só estará representada na memória a informação potencialmente
visível que é carregada ou libertada à medida que entra ou sai da superfície de visibilidade
potencial (SVP). A posição das árvores deixa de ser calculada em cada frame, ocorrendo na
altura do carregamento das células que se tornam potencialmente visíveis, o que tem um
impacte importante no desempenho do programa. Ao contrário da versão anterior, esta
permite mais do que duas espécies em cada povoamento. Permite ainda, devido à sua
estrutura interna, uma muito maior variabilidade de dimensões e formas de árvores.
A compartimentação do espaço em células não foi abandonada, mas estas têm um sentido
diferente. Ao invés de representarem unidades do povoamento, como na versão anterior,
representam mosaicos da superfície de visibilidade. Entende-se uma célula como um
quadrado de terreno que pode conter diversos povoamentos ou ocupações. As células nesta
nova abordagem têm uma dimensão geralmente maior que no programa anterior, uma vez que
não são limitadas pela rasterização artificial do espaço. Uma célula é constituída pois pelos
triângulos dos polígonos que intersecta.
3.3.2. Representação da informação
Cada povoamento é representado pelo conjunto das árvores que poderiam estar numa célula
de 900 m2 (30m x 30m), se bem que esta unidade de área seja virtual e, ao contrário da versão
anterior, nunca ser desenhada. Estas árvores são modelos de árvores que são posteriormente
distribuídas aleatoriamente nos elementos constituintes dos povoamentos apropriados.
A representação do terreno utiliza os resultados do processamento geométrico descrito na
secção 2.2. Está assim agrupado em células de visibilidade com uma área de 5.76 ha, o que
corresponde a um quadrado de 240m x 240m. Cada célula (ou mosaico) representa o terreno
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
63
subjacente por meio de duas listas, uma com a informação respeitante aos vértices e outra
com os índices dos vértices que compõem os triângulos a que pertencem (figura 3.4)
+npoints : int+points : Vertex *+nstands : int+cstands : CellStand *+land_vbo_id : GLuint+nspecies : int+ntrees[N_SPECIES] : int+tree_vbo_ids[N_SPECIES] : GLuint+tree_tex_ids[N_SPECIES] : GLuint
«struct»CCell
+stand_id : int+n_tris : int+tris : GLuint *+land_vboe_id : GLuint+land_tex_id : GLuint
«struct»CCellStand
+x : float+y : float+z : float+nx : float+ny : float+nz : float+u : float+v : float
«struct»CVertex
Figura 3.4. Representação em UML das principais estruturas de dados do programa
Landscaper 2
De notar que nesta estrutura não é explicitamente representada a informação respeitante às
árvores. Estas aparecem apenas referidas pelos ID internos do OpenGL referentes à textura e a
um VBO que marca a representação geométrica das árvores da mesma espécie presentes no
mosaico. Este identificador interno serve como um apontador para uma estrutura em memória
invisível para o programador e que é gerida inteiramente pelo OpenGL. Como é detalhado
adiante, as árvores são colocadas no terreno apenas enquanto se encontram dentro da
superfície de visibilidade potencial (SVP) e não têm portanto existência "real". Isto é, se uma
célula tem um conjunto de árvores com posições definidas, ao sair da SVP, ela é eliminada e
as estruturas de dados que contém a sua geometria são também libertadas pelo OpenGL. Se
contudo essa mesma célula volta a entrar na SVP, outras árvores com as mesmas
características do povoamento em que se inserem são colocadas. Deste modo, apenas as
árvores potencialmente visíveis estão armazenadas na memória em cada momento do
processamento geral do programa. Este aspecto fundamental para a arquitectura do programa
é detalhado nas secções seguintes.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
64
3.3.3. Carregamento dinâmico do terreno
O carregamento dinâmico da informação geométrica à medida que vai sendo necessária é um
dos passos críticos no decorrer do programa. É este procedimento que permite a navegação
virtual por cenários arbitrariamente grandes, reduzindo a informação presente na memória
apenas ao estritamente necessário, correspondente às células potencialmente visíveis a partir
de um determinado ponto de observação. Idealmente a superfície representada seria um
círculo, centrado na posição do observador, deste modo, qualquer que fosse o ângulo de
observação, seria possível representar em memória apenas e só as árvores dentro do raio de
visibilidade. Contudo, dado o facto de ser consideravelmente mais fácil e eficiente a utilização
de um quadrado, devido ao facto da paisagem estar decomposta num reticulado de células,
essa foi a forma geométrica utilizada.
Uma abordagem simplista para permitir o carregamento dinâmico da paisagem poderia ser
realizada da seguinte forma: Quando o observador sai de uma célula numa direcção, a fila de
células que está exactamente oposta à direcção para a qual o observador se desloca é apagada
da memória e em seu lugar é carregada uma fila simétrica, que apareceria porém na direcção
do movimento do observador. Este procedimento tem contudo um inconveniente importante.
Uma vez que há um overhead natural no apagamento e carregamento de informação, caso o
utilizador volte para trás, ou regresse à célula (ou fila de células) de onde veio, todo o
procedimento tem de ser repetido, mas na direcção contrária. Mesmo que não haja uma
inversão de sentido de marcha, o facto de na transição de cada célula se realizar todo este
procedimento causa, dependendo da dimensão das células de visibilidade, uma regularidade
nas pausas de carregamento da informação. Estes factos criam aparentes linhas de
descontinuidade no movimento na paisagem, o que torna desagradável o processo de
navegação.
Para colmatar estas falhas potenciais usou-se um buffer definido previamente pelo utilizador
que define o período de avanço do horizonte. Quando o observador passa um determinado
limiar (pos_inicial + buffer), as coordenadas reais do observador no terreno são alteradas de
acordo com a velocidade e direcção do movimento, mas as coordenadas na grelha de
visibilidade são re-centradas. I.e., é carregada uma ou mais filas de mosaicos de paisagem e a
posição actual passa a corresponder ao centro da grelha, ou seja, é adicionado ou subtraído às
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
65
suas coordenadas o valor correspondente à dimensão do buffer criado. Na figura 3.5.
descreve-se graficamente o funcionamento da metodologia proposta. Nesta situação
simplificada, admite-se um buffer com a dimensão de uma célula e um horizonte de
visibilidade (hv) de 2 células. A dimensão da superfície de visibilidade (DSV) é dada por
DSV = 2.(buffer + hv) +1
Para este caso temos que o quadrado da superfície de visibilidade deve ter uma dimensão de 7
x 7. Os números representados na figura correspondem às coordenadas da grelha com a
informação real do terreno. No início do programa, o observador pode-se deslocar livremente
na paisagem, no interior da superfície com as dimensões (buffer + 1) x (buffer + 1) (Figura
3.5.a). Supondo uma deslocação para a direita até às margens do buffer (fim da coluna 10), o
observador é re-colocado no centro, a coluna 6 é removida da superfície de visibilidade e é
carregada a coluna 13 (figura 3.5b). De notar que, durante qualquer deslocação, o horizonte
visível nunca atinge o extremo da superfície de visibilidade.
a) b) Figura 3.5. Algoritmo de deslocação da região de visibilidade
3.3.4. Colocação das árvores
A colocação das árvores no terreno é feita à medida que os mosaicos em que estão inseridas
vão entrando na grelha de visibilidade. É um processo que é executado automaticamente no
decorrer do programa. A primeira dificuldade foi encontrar um algoritmo eficiente que
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
66
permitisse a colocação de árvores em tempo real dentro de um triângulo arbitrário constituinte
do terreno. A solução encontrada passa por calcular um rectângulo envolvente para o qual são
calculadas aleatoriamente posições de pontos, que corresponderão às coordenadas das
árvores. Posteriormente, através do teste descrito pela equação (6), seleccionam-se apenas os
pontos que se encontram no interior do triângulo considerado. O processo seria trivial usando
um rectângulo orientado pelos eixos cartesianos. O cálculo desse triângulo é inclusivamente
bastante simples, podendo ser determinado através dos valores máximos e mínimos das
coordenadas do triângulo no plano. Contudo, situações de grande ineficiência poderiam surgir
(figura 3.6). Para este caso a área não-útil seria desproporcionadamente grande
comparativamente à área do triângulo e poderia levar a uma elevada quebra de desempenho.
Figura 3.6. Triângulo envolvido por um rectângulo de área sub-óptima orientado pelos eixos
cartesianos
A abordagem seguida tem associada a si uma sobredeterminação de coordenadas de árvores
que nunca excede o dobro do número de árvores necessárias. Verificou-se, no entanto, que
este cálculo em excesso não tem relevo no desempenho geral do programa. Deste modo, cada
uma das posições possíveis para as árvores seria determinada de uma forma aleatória sobre o
rectângulo definido. É possível então definir, através de um teste simples, quais os pontos que
pertencem ao triângulo, e posteriormente realizar a interpolação para cálculo da altimetria de
cada árvore apenas para os pontos que se situem no seu interior. Desta forma, em primeiro
lugar determina-se o menor rectângulo que envolve o triângulo considerado (P0, P1, P2). Para
tal verifica-se qual das arestas tem a maior dimensão e calcula-se a recta correspondente
(R=P0 + rV0, em que V0 é o vector correspondente a P1-P0). Esta aresta corresponde a uma das
arestas do rectângulo que a envolve. Seguidamente, determina-se o vector (V1) perpendicular
à recta definida por estes dois pontos (sejam P0 e P1), com o comprimento igual à distância de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
67
P2 a R (Figura 3.7). O ponto P0 e os vectores V0 e V1 definem um rectângulo que envolve o
triângulo considerado. Esta superfície tem uma área igual ao dobro da área do triângulo.
Figura 3.7. Para o triângulo (P0, P1, P2), determinam-se os vectores V0 e V1 que
caracterizam o rectângulo envolvente com menor área possível
A colocação das árvores é então realizada sobre este rectângulo. Conhecendo a sua área
determina-se o número de árvores a inserir. Para cada árvore, calculam-se dois números
aleatórios u e v ∈ [0, 1[. O centro da árvore (C) no rectângulo considerado é assim calculado
pela seguinte expressão:
C = P0 + u.V0 + v.V1 (12)
Através da equação (6) verifica-se se estas coordenadas estão dentro do triângulo considerado
ou não. No fim do processo de cálculo, para as árvores que se determinou estarem dentro do
triângulo determinam-se as suas coordenadas no espaço através de uma interpolação linear
pelas coordenadas dos vértices do triângulo (equações (1) a (4)).
3.3.5. Definição do horizonte visual
O procedimento de definição do horizonte visual é de certa forma mais simples que o da
versão anterior, mas bastante mais eficiente. Baseia-se no cálculo da matriz de observação
para cada frame e posterior comparação de cada célula presente com o rectângulo de
visibilidade. De uma forma é menos eficiente pois obriga ao teste de todas as células
P0
P1
P2
V0
V1
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
68
potencialmente visíveis. Contudo, a extrema simplicidade do teste, associada ao facto do
número de células potencialmente visíveis ser relativamente reduzido, torna o custo
computacional da sua utilização negligenciável.
O cálculo da matriz de observação é feito pela multiplicação das matrizes de projecção e de
model view, que são disponibilizadas pelo OpenGL pela função glGetFloatv(), usando
como argumentos os valores GL_PROJECTION_MATRIX e GL_MODELVIEW_MATRIX, respectiva-
mente. Após a multiplicação, as equações dos planos do frustum de visibilidade podem ser
calculados com base nas seguintes equações (Lengyel 2002):
Plano direito = M4 - M1
Plano esquerdo = M4 + M1
Plano próximo = M4 + M3 (13)
Plano distante = M4 - M3
Plano de cima = M4 - M2
Plano de baixo = M4 + M2
em que Mi, corresponde à linha i da matriz calculada. Estes valores não produzem vectores
normalizados, pelo que têm de ser escalados com base na norma respectiva. As equações dos
planos vêm sob a forma normal de equações de planos:
0=+++ DCzByAx
com A, B, C e D a corresponderem às linhas das transpostas dos vectores produzidos. Lengyel
(2002) refere ainda que estas equações são válidas para todos os tipos de projecções.
Tendo as equações dos planos do frustum definidos, a decisão de desenhar ou não uma célula
de visibilidade é dada por um algoritmo simples. A ideia base da sua execução é verificar se
uma esfera hipotética que envolvesse totalmente cada célula seria visível total ou
parcialmente. Isso consegue-se multiplicando as coordenadas do ponto correspondente ao
centro da esfera (centro geométrico da célula) com os parâmetros das equações de cada um
dos planos. Este produto corresponde à distância a que o ponto está de cada plano. Se o valor
calculado, para qualquer dos planos do frustum, for inferior ao valor do raio da esfera então
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
69
essa célula é potencialmente visível e tem que ser desenhada. A rejeição de desenhar uma
célula tem pois que passar pela verificação de todos os planos.
3.3.6. Interface e Sistema de navegação
A interacção com o programa depois de inicializado faz-se por intermédio do rato e do
teclado, ou opcionalmente através de um joystick. O cursor do rato permite definir o vector de
deslocação que é conseguido por meio de um mecanismo intuitivo de "arrastar e largar" sobre
a janela onde é representada a cena. O teclado permite controlar a velocidade de deslocação.
Através do teclado é possível controlar ainda outras funções como o carregamento ou
gravação de percursos pré-definidos. O joystick inclui os comandos direccionais e de
aceleração, tornando mais intuitivo o processo de navegação.
3.3.7. Percursos predefinidos e benchmarking
Esta implementação do programa inclui opções que permitem ao utilizador a definição de
percursos para posterior visualização e eventual avaliação do desempenho. Existem 3 modos
diferentes de interagir no programa. O primeiro, que se inicia por omissão, é designado de
'modo interactivo', em que o utilizador tem a liberdade total de se deslocar no terreno. Usando
o teclado, pode contudo iniciar o ‘modo de gravação’, no qual todos os movimentos
executados são guardados num ficheiro. De acordo com as especificações actuais, é possível
guardar cerca de 17 minutos de animação (dependendo do hardware utilizado). Uma terceira
opção é o ‘modo de reprodução’. Este modo lê de um ficheiro definido pelo utilizador um
caminho previamente definido e reproduz todos os passos anteriormente gravados. Esta
característica pode servir tanto para comunicar experiências semelhantes aos utilizadores do
sistema como para avaliar as capacidades de um determinado equipamento para executar o
programa.
Estão incluídos no programa mecanismos que permitem avaliar a adequabilidade de um
determinado sistema para o executar. Assim, no modo interactivo é reportado o número de
imagens mostradas por segundo, o número de árvores desenhadas e o número de polígonos de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
70
terreno presentes na cena. No modo de reprodução é indicado o valor médio de todas estas
variáveis no fim da execução do percurso.
Foi implementada ainda uma característica que permite a avaliação expedita de um
determinado sistema. Assim, o utilizador pode, ao inicializar o programa, definir na linha de
comandos que quer correr o programa no 'modo de reprodução' e quantos percursos quer
efectuar, findos os quais, a execução do programa termina. Esta especificidade foi introduzida
devido ao facto de, geralmente na primeira vez que um determinado percurso é executado,
todo o processo de carregar informação e a disponibilizar adequadamente na memória tem um
impacte negativo no seu desempenho. Verificou-se que só ao fim da segunda ou terceira vez
que o mesmo percurso é percorrido é possível retirar valores de desempenho mais seguros.
A utilização de mecanismos de recolha de informação posicional frame a frame, permite
ainda a utilização do programa para realização de filmes estáticos. Este efeito pode ser
conseguido através da recolha de imagens sequenciais que posteriormente poderão ser
convertidas num filme através de um utilitário como o DTA (ftp://ftp.povray.org/pub/povray/
/utilities/dta). Esta possibilidade pode permitir a utilização do output do programa em
máquinas que não tenham as capacidades de aceleração gráfica necessárias para a execução
normal do programa. Uma outra vantagem de um sistema com estas características, poderá ser
a utilização, durante o modo de reprodução, de modelos de árvores com maior resolução,
melhores modelos de iluminação e consequente maior realismo para o utilizador. Essas
imagens poderão ser recolhidas e processadas num filme, perdendo-se contudo a
interactividade natural do programa.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
71
4. APLICAÇÃO E RESULTADOS
4.1. Áreas de teste
4.1.1. O Cantão das Hortas 4.1.1.1 Caracterização da área
A primeira área de estudo compreende o Cantão das Hortas, incluído no Perímetro Florestal
da Lousã. É uma área de 460 hectares sob gestão pública e a sua composição actual reflecte o
cuidado com que foi gerida no passado. Assim, 41.3% da sua área é constituída por
povoamentos mistos de pinheiro bravo e castanheiro, este último aparecendo geralmente num
andar mais baixo. Predominam ainda as áreas de pinheiro bravo puro (53.0 ha). Há ainda
manchas com áreas significativas de várias outras espécies, por exemplo, pinheiro silvestre,
Cupressus spp, Chamaecyparis, Pinheiro negro, Carvalhos alvarinho e americano, entre
outras espécies.
Para esta área constituiu-se uma grelha de 129 x 129 mosaicos, cada qual representando uma
quadrícula de 30 m x 30 m.
4.1.1.2. Processamento da informação florestal
Para a exemplificação do funcionamento do sistema com a informação do Cantão das Hortas,
compararam-se os cenários resultantes da aplicação de dois diferentes modelos de gestão: o
Modelo A, que não entra com quaisquer restrições, o único objectivo é obter o rendimento
actual líquido proveniente da exploração comercial da floresta; Modelo B, que contempla uma
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
72
exploração sustentada em que se retiram no máximo 7000 m3 de material lenhoso todos os
anos. O horizonte de planeamento considerado foi de 30 anos.
Para esta área de gestão seguiram-se todas as fases de processamento de informação florestal
descritas na secção 2.1. Existia inventário florestal que cobria a maior parte dos estratos
identificados pela fotointerpretação. Essa informação foi introduzida no módulo de simulação
que produziu um leque considerável de alternativas de gestão com base em modelos de
silvicultura previamente definidos pelo utilizador. Utilizaram-se as ferramentas de modelação
de gestão definidas em Falcão (2001) e estruturaram-se os planos de gestão para cada um dos
cenários (Falcão 2003).
4.1.2. Barlavento Algarvio e Monchique
4.1.2.1. Caracterização da informação de base
A área correspondente a esta região foi definida com base na fotointerpretação total do
Algarve num estudo que conduziu à estruturação do Plano Regional de Ordenamento
Florestal. Foram assim definidos cerca de 230 estratos distintos. A fotointerpretação foi
realizada com um grande rigor, tendo havido um cuidado extremo na definição dos diferentes
estratos. Este factor, apesar de importante para toda a análise geográfica realizada, fez com
que o número de vértices que definem cada arco seja bastante elevado, o que proporcionou,
pelos processos de triangulação descritos, um número igualmente elevado de triângulos. A
complexidade da malha gerada testou assim, quase ao limite, os algoritmos de processamento
da informação: triangulação, interpolação e clipping.
A área definida é um quadrado com 30,720 metros de lado. A área total é de 94,372 ha. Nesta
superfície foram definidos 38,202 polígonos individuais com uma área média de 2.47 ha. O
número total de triângulos que constituem o terreno é de 708,255. O número de polígonos
definidos é elevado devido ao rigor colocado no processamento da fotointerpretação que usou
um número particularmente grande de vértices na digitalização dos estratos encontrados. A
informação digitalizada não contém os elementos humanos fundamentais para permitir uma
fácil localização das zonas observadas no decorrer do programa
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
73
4.1.2.2. Processamento da informação florestal
Nesta parte do trabalho, o objectivo era não tanto analisar as capacidades do programa na
visualização de paisagens prospectivas, mas antes verificar o seu comportamento para uma
área 2 ordens de magnitude maior. Assim, não houve uma tão grande preocupação em
reflectir a realidade, até porque a informação de inventário era relativamente reduzida. Deste
modo, compuseram-se artificialmente povoamentos típicos florestais com 1, 2 e 3 espécies, e
atribuiu-se, por simulação de Monte-Carlo, características realistas. Esses povoamentos foram
inicialmente apenas calculados para as áreas claramente florestais definidas pela
fotointerpretação, contudo, a ocorrência de áreas densamente florestais era extremamente rara
e portanto difícil para testar o programa em situações de carga intensa. Assim, optou-se por
atribuir ocupação florestal aleatoriamente a cada estrato diferente, independentemente da sua
verdadeira natureza.
Apesar da artificialidade da situação criada, os resultados poderiam corresponder a uma
situação real. O objectivo fundamental com esta nova área era verificar como o programa se
comportaria em situações realistas e de maior complexidade geométrica que o Cantão das
Hortas.
4.2. Implementação
Usou-se como ambiente de trabalho o Visual Studio 6.0 a trabalhar em plataforma Windows
2000, a operar num computador com processador Pentium III com 866 MHz e 256 MB de
RAM. Ao longo do desenvolvimento foi testada uma variedade relativamente pequena de
hardware gráfico (nVIDIA Geforce 256, nVIDIA Geforce 2MX, nVIDIA GeForce 440MX e
ATI Radeon 9700 Pro) com desempenhos crescentes. A fase final de desenvolvimento do
Landscaper 2.0 foi realizada num Portátil equipado com processador Pentium4 a 2.8 GHz
com 512 Mbytes de RAM, Front Side Bus a 800 MHz e chip gráfico ATI M10 com 128 MB
de memória vídeo (equivalente a uma ATI Radeon 9600). O sistema operativo foi o Windows
XP. Este foi o equipamento utilizado nos testes de desempenho de ambas as versões do
programa.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
74
4.3. Aplicação do Landscaper 1.0.
O programa Landscaper 1.0 teve uma utilização no âmbito de um projecto de avaliação de
qualidade de paisagens prospectivas. Foi utilizado não interactivamente na definição de
cenários alternativos e recolha de preferências dos utilizadores.
4.3.1. Qualidade visual
O programa permite ao utilizador deslocar-se virtualmente no terreno com o auxílio das teclas
direccionais do computador. Conforme for referido, dado o volume de informação presente
em cada cena o programa permite dois níveis de visualização. O primeiro, dito 'modo normal'
ou 'modo steering', dá a facilidade descrita do utilizador se deslocar sobre o terreno em tempo
real, mas com um horizonte visual limitado (cerca de 500 metros). O segundo, dito 'modo de
paisagem', não é susceptível de movimentação do ponto de vista, tem contudo um horizonte
visual que se estende por 10 km. Ambos os modos são intercomutáveis através de uma tecla.
O que se recomenda na utilização do sistema é o utilizador usar o 'modo normal' para tentar
captar a informação que um utilizador normal teria a percorrer a pé. Ao encontrar um local
característico e com horizonte visual não encoberto por árvores próximas, o utilizador poderia
seleccionar o 'modo de paisagem' para recolher o máximo de informação possível.
A limitação mais séria do programa é o pequeno horizonte visual possível de observação. A
versão desenvolvida tem, no 'modo steering', um horizonte de apenas 500 metros. Este valor é
suficiente para poder apreciar a paisagem do interior de povoamentos ou para a observação de
uma encosta relativamente próxima. No entanto, para ter uma visão mais holística da
paisagem, horizontes visuais de vários quilómetros são por vezes necessários. O programa
colmata essa deficiência através da utilização do 'modo landscape', em que o horizonte visual
é alargado até um limite definido previamente pelo utilizador. Mas o facto de existirem dois
níveis de detalhe não automáticos faz com que a ilusão da viagem na paisagem virtual seja
quebrada.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
75
O segundo problema mais sentido pelos utilizador é a falta de qualidade da textura do solo. A
fotografia aérea utilizada tem um pixel correspondente a 1 m2 de terreno. A área total
abrangida pela área de estudo corresponde a uma imagem com cerca de 3870x3870 pixels. O
OpenGL (versão1.2) obriga a que a dimensão das texturas utilizadas seja uma potência de 2 e
não exceda os 1024 x1024 pixels. Para evitar a subdivisão da textura principal do solo e
incorrer em mais perdas de desempenho, necessários na gestão de memória para acomodar
cerca de 42.85 Mbytes de informação textural, optou-se por considerar uma resolução
espacial menor, com uma dimensão de pixel de cerca de 11 m2. Esta dimensão de pixel é
suficiente para mostrar as principais características do terreno. Contudo, devido à forma como
o OpenGL interpola as cores na representação da geometria, os contornos representados ficam
diluídos e o terreno mais próximo perde realismo (Figura 4.1.). A observação de regiões mais
afastadas, pelo contrário, mostra um nível de detalhe textural correcto.
Outra característica do sistema que é por vezes notada, destruindo a ilusão da paisagem
gerada, é o aparecimento da cobertura florestal num reticulado anguloso. A divisão artificial
em mosaicos de 30 x 30 m da informação fotointerpretada, com contornos definidos sob um
mapa vectorial, é em certas circunstâncias perceptível, aparecendo formas demasiado
geométricas para corresponder à realidade. Esta característica não foi notada pela maior parte
dos utilizadores, sobretudo devido ao facto do interface básico permitir apenas ao observador
movimentar-se na cena numa posição junto ao solo. A utilização de pontos de observação
mais elevados permite a observação destas deficiências de representação, o que reduz, por
vezes notavelmente, a qualidade das imagens percebidas.
Finalmente, outra questão importante notada por vários utilizadores do sistema é a deficiência
estrutural do algoritmo de visualização. A projecção do frustum de visibilidade no plano
horizontal propicia o aparecimento de várias falhas quando o utilizador se desloca
virtualmente em terreno muito acidentado. Em situações de algum declive em que a projecção
do frustum não se adequa à irregularidade do terreno, as células visíveis não são
correctamente calculadas. e aparecem “buracos” sem nada. São geralmente situações que
aparecem em fracções de segundo mas são logo apercebidas pelo utilizador, criando uma
impressão desfavorável.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
76
A
B
Figura 4.1. Landscaper 1.0 - Comparação dos cenários A e B no Perímetro Florestal do
Cantão das Hortas, quinze anos após o momento inicial. Visão do "Terreiro das Bruxas",
olhando para o povoamento de eucalipto situado a poente
Os resultados da aplicação dos 2 modelos de gestão propostos podem ser capturados em
imagens fixas. Nas figuras 4.1 e 4.2., é possível observar as diferenças verificadas na
paisagem em 2 pontos de vista diferentes 2 anos após o momento presente. Na figura 4.1.,
observam-se os efeitos característicos dos 2 cenários propostos e as alterações provocadas por
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
77
ambos na paisagem. Pode-se verificar que, para o cenário A, a maior parte dos povoamentos
foi cortada nos primeiros períodos, mostrando-se uma paisagem uniforme com muitas
árvores. Em contrapartida no cenário B, ocorre o corte apenas de algumas manchas mostrando
uma paisagem tipicamente fragmentada. Para o segundo ponto de observação, verificam-se
resultados semelhantes. É possível ver que, para o primeiro cenário, o povoamento principal
de resinosas foi cortado, mostrando apenas os castanheiros em primeiro plano.
A
B
Figura 4.2. Landscaper 1.0 - Comparação dos cenários A e B no Perímetro Florestal do
Cantão das Hortas, quinze anos após o momento inicial. Visão da encosta Oeste
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
78
Quinze anos após o início do período de planeamento, observa-se, como no caso do segundo
ponto de observação (Figura 4.2), um extenso e denso povoamento juvenil enquanto aparece
uma paisagem mais heterogénea e recortada para o segundo cenário. No primeiro ponto de
observação (Figura 4.1.) as diferenças são menos visíveis, mas é possível verificar o
aparecimento de regeneração de resinosas no caso do cenário A e apenas uma diminuição da
densidade dos castanheiros no cenário B. Num trabalho anterior (Falcão 2003) são descritas
com mais detalhe as comparações entre estes mesmos cenários e confrontadas as
consequentes diferenças a nível ambiental, recreativo e de risco de ocorrência e propagação
de incêndios.
É visível ainda na figura 4.1 a falta de resolução da textura que cobre o solo, aparentando as
árvores estarem suspensas sobre uma superfície "aquosa", conforme foi descrito por alguns
utilizadores. Esta situação decorre da reduzida resolução da cobertura fotointerpretada que
cobre o terreno. É possível contudo, na mesma imagem, observar um caminho florestal que
aparece na encosta em frente.
4.3.2. Desempenho
Os primeiros testes de desempenho foram realizados na máquina de desenvolvimento,
testando o equipamento gráfico descrito anteriormente. Sendo este hardware de gerações
diferentes, têm desempenhos que variam em mais de uma ordem de magnitude. Contudo
nenhum mostrou maior capacidade para correr o programa. Não se verificaram diferenças
significativas no número de imagens por segundo, que variavam entre as 6 e as 12,
dependendo do grau de arborização e consequente complexidade geométrica. A razão
principal para este facto reside no processo de desenho da geometria. Uma vez que grande
parte do processamento incide sobre a CPU, devido ao facto de se utilizarem primitivas
simples sem qualquer agregação geométrica. Um segundo factor que agrava substantivamente
o peso da CPU no processamento de cada imagem é o cálculo, para cada frame, das posições
das árvores visíveis sobre o terreno. Deste modo, o processador gráfico fica inactivo durante
grande parte do tempo, não sendo minimamente um factor limitante. A utilização de uma
CPU mais rápida, como a da segunda máquina de teste tem contudo um impacte significativo
sobre o desempenho desta versão do programa, permitindo um frame rate superior a 30 fps
(frames per second), tornando inclusivamente possível a utilização do programa em 'modo
Landscape', com um desempenho de 8 fps. No quadro 4.1. é visível o facto da CPU ser o
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
79
factor limitante, uma vez que testando o funcionamento do programa a várias resoluções, as
alterações no desempenho são reduzidas.
Quadro 4.1. Desempenho do programa Landscaper 1.0 a várias resoluções
N.º de árvores desenhadas por segundo (x106)
Imagens por
segundo (fps) Max Min Média
640x480 32.3 2.219 0.864 1.909
800x600 29.2 2.157 0.948 1.785
1024x768 28.7 1.915 0.699 1.477
Na resolução de 640x480, são enviados para o pipeline gráfico cerca de 15,3 milhões de
vértices por segundo sob a forma de primitivas directas, o que na máquina utilizada
corresponde a cerca de 183 ciclos de relógio por cada vértice. A utilização de uma resolução
2.5x maior (1024x768) provoca apenas uma redução de desempenho de 23 %, passando para
os 236 ciclos por vértice processado.
Um factor que propicia os elevados desempenhos desta arquitectura é a sua reduzida presença
em memória. Com efeito, as texturas (fotografia aérea, imagens das árvores) a geometria
associada e a imagem do próprio programa com as estruturas estáticas que lhe estão
associadas, consomem apenas cerca de 9.5 Mbytes. Dado que uma parte da informação é
transportada directamente para a memória de vídeo, a CPU não tem qualquer perda de
eficiência a gerir a memória, resumindo-se a sua actividade a processar a geometria em cada
frame. Dada a forma sintética como a informação dos povoamentos está organizada, é
possível que, para esta área de teste, toda a informação referente às árvores seja armazenada
directamente na memória de cache de nível 2 do processador, o que reduziria ao mínimo a
latência de instruções no acesso directo à memória.
4.4. Aplicação do Landscaper 2.0
4.4.1. Qualidade visual
Como foi referido, esta versão do programa apresenta diferenças significativas face à versão
anterior. Em primeiro lugar, permite uma representação muito mais precisa da geometria da
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
80
ocupação subjacente (Figuras 4.3. a 4.6.). É possível observar todos os detalhes associados a
cada estrato. O programa permite ainda um horizonte visual muito mais extenso que a versão
anterior. Correntemente é possível visualizar, com níveis de desempenho que possibilitam a
navegação em tempo real, paisagens até 2.0 km de distância do ponto de observação. A
cobertura do solo é, por outro lado, menos precisa, tendo-se utilizado, conforme descrito
anteriormente, texturas apropriadas a cada tipo de ocupação, perdendo-se a informação
relativa aos pontos que permitem a orientação dos utilizadores.
Figura 4.3. Landscaper 2.0 - Orla de um povoamento de pinheiros adultos vista de dentro,
podendo ainda observar-se a paisagem florestal distante
4.4.2. Desempenho
Dependendo do hardware utilizado, esta versão do programa tem um desempenho muito
superior ao anterior. Permite o desenho de um número substancialmente superior de árvores,
mantendo um frame rate aceitável em quase todas as situações, levando o hardware gráfico a
aproximar o número máximo teórico do número de polígonos desenhados por segundo.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
81
Figura 4.4. Landscaper 2.0 - Interior de um povamento esparso de pinheiros, sendo visível ao
fundo um povoamento de eucaliptos
Figura 4.5. Landscaper 2.0 - Voo em altitude sendo visivel o reticulado da paisagem e
geometria das ocupações presentes
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
82
Figura 4.6. Landscaper 2.0 - vôo por cima das copas, avistando diferentes tipos de ocupação
florestal
Quadro 4.2. Desempenho da execução do programa Landscaper 2.0 a várias resoluções
Resolução
Imagens (fps)
(s-1)
Árvores
(x106. s-1)
Polígonos de
terreno (x103. s-1)
320 x 240 61.33 7.673 145.2
640 x 480 41.86 5.235 99.07
800 x 600 33.28 4.165 78.78
1024 x 768 23.86 2.985 56.48
Para testar a taxa de preenchimento conseguida, fez-se correr esta versão do programa com
um caminho pré-definido. Os resultados (Quadro 4.2.) mostram que o programa, como se
esperava, é dependente na sua quase totalidade do número de árvores que consegue enviar
através do pipeline gráfico. Com efeito verificou-se que, apesar do frame rate variar
consoante a resolução, o número de árvores desenhadas por frame mantém-se constante
independentemente da dimensão da janela considerada. Conseguiram-se assim cerca de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
83
125,000 árvores por frame, o que corresponde a mais de 1 milhão de vértices submetidos
através do pipeline gráfico por frame desenhada.. Outra característica dos dados apresentados
é que manifestam um comportamento explicável através de uma regressão exponencial.
Assim, para o hardware de referência, verificou-se que o número de imagens por segundo
(fps) pode ser explicado através da seguinte equação, que entra em conta com a resolução (R)
de saída definida em Kbytes:
( )Rbafps log.+=
em que a= 4.205 e b= -0.0014. O coeficiente de determinação (R2) é de 99.48 % o que, apesar
do número reduzido de valores com que a expressão foi ajustada, se nos afigura como
altamente significativo. Verificou-se ainda um desvio máximo de 3 fps face ao valor
estimado, o que é perfeitamente aceitável. É interessante verificar ainda que este tipo de
equações apresenta um valor máximo no caso hipotético do valor do ecrã fosse nulo. Este
valor reflecte o peso do processamento geométrico do sistema, independentemente da
resolução utilizada. O caso presente, mostra uma assimptota na casa das 67 fps.
A utilização da memória RAM do computador é extremamente variável, oscilando com a
intensidade de arborização de uma determinada zona e com o natural desenrolar do programa.
Ao longo da rotina de benchmarking variou entre os 35.0 Mbytes e os 58.5 MBytes. De notar
que esta situação corresponde a uma área de teste com uma arborização particularmente
intensa (cerca de 900 árvores por ha). Para as situações mais comuns no nosso país, o número
de árvores é consideravelmente mais reduzido, sendo de esperar uma presença em memória
significativamente inferior. A presença em memória, apesar de comportável face aos
standards do hardware actual, é significativamente superior à versão anterior do programa,
com uma consequente penalidade no desempenho, que apesar de tudo é compensada pelo
melhor uso dos recursos de processamento gráfico do computador. Contudo, problemas na
implementação das rotinas dos VBOs por parte dos drivers da ATI, colocaram problemas na
utilização intensiva do programa. Foi verificado que, ao tentar explorar a área de teste com
uma velocidade elevada, a implementação do OpenGL pela ATI não consegue libertar a
memória reservada de uma forma suficientemente rápida, causando um acumular de
informação inútil em RAM que se verificou poder atingir os 290 Mbytes. A remoção da
memória reservada é efectuada posteriormente de uma forma ad hoc causando problemas de
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
84
fragmentação da memória gráfica. Isto faz com que, após uma utilização prolongada do
programa, este pode terminar subitamente por não conseguir reservar espaço contíguo para
criar VBOs para células que tenham entrado recentemente na SVP. É provável que esta
limitação de implementação seja rapidamente solucionada, referindo-se aqui, no entanto, os
problemas verificados com os drivers actualmente disponíveis.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
85
5. CONCLUSÕES
No decorrer desta dissertação, abordaram-se vários temas. Referiu-se a importância da
existência de uma ferramenta de visualização de paisagens prospectivas e a sua integração
num sistema de apoio à decisão para ecossistemas florestais. Abordou-se toda a complexidade
do tratamento da informação necessária para o desenvolvimento deste módulo. Em particular,
detalhou-se o conjunto de procedimentos que permitiram, com sucesso, efectuar a
transformação espacial proveniente de um Sistema de Informação Geográfica, para um
formato compatível com o desenho de paisagens em tempo de execução. Descreveu-se com
algum detalhe os procedimentos de triangulação de polígonos simples e polígonos simples
com ilhas, tendo-se desenvolvido um algoritmo eficiente e de implementação trivial.
Para a implementação do sistema desenvolveram-se duas versões distintas que atenderam a
diferentes tipos de requisitos. Uma primeira, Landscaper 1.0, desenvolvida para uma área de
estudo de dimensões reduzidas, utiliza fotografias aéreas orto-rectificadas corrigidas
espectralmente como cobertura do solo. Esta abordagem permitiu manter os pontos de
referência do terreno, facilitando a sua apreciação pelos utilizadores do sistema. Esta versão,
por ser compacta no uso da memória e não obrigar à representação das árvores como
entidades individualizáveis, permite horizontes visuais mais extensos, desde que as texturas
do solo que lhe estão subjacentes esteja no sistema. Esta aparente mais valia vem contudo
com um custo acrescido que é o da remoção da interactividade e consequente
inoperacionalidade da deslocação em tempo real sobre o terreno. A preocupação excessiva
com o impacte em memória do programa levou à tomada de decisões que tiveram um
impacte, em última análise, negativo, no desempenho e qualidade visual do output produzido.
O programa desenvolvido foi, apesar dos problemas inerentes, utilizado com sucesso na
incorporação de critérios paisagísticos para a gestão do perímetro florestal do Cantão das
Hortas na Serra da Lousã. Foram determinados os pontos de maior interesse paisagístico e de
maior impacte visível na comparação de diferentes modelos de gestão florestal. Os resultados
pareceram suficientemente realistas para permitir entrevistas a cerca de 200 pessoas retirando
ilações sociológicas relativas às relações dos habitantes da região com a área em análise
(Madureira et al. in press)
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
86
Para colmatar alguns dos problemas verificados, foi testada uma segunda abordagem e
desenvolvida uma segunda versão do programa. Esta, leva em conta a correcta geometria da
cobertura florestal, conforme descrita no SIG, eliminando a necessidade de fotografias aéreas
orto-corrigidas. A nova versão (Landscaper 2.0) apresenta um desempenho homogéneo e sem
interrupções, mesmo em condições de grande densidade de arborização. Foram levadas quase
ao limite as capacidades do hardware disponível, com picos de desempenho gráfico que
atingem os valores teóricos do equipamento. Os mecanismos de carregamento dinâmico da
geometria permitem ainda a utilização do sistema em paisagens arbitrariamente grandes. No
entanto, o programa tem como limitação a utilização de placas gráficas com grande
quantidade de memória vídeo (>64 Mbytes) para garantir que o processamento da geometria
não seja atrasado pelo acesso à memória RAM e posterior mapeamento para VRAM. A
percepção do sistema para os utilizadores finais, apesar de mais agradável que a primeira
versão, tanto na fluidez do movimento como no realismo das paisagens representadas,
apresenta também alguns problemas. O mais relevante, citado por vários utilizadores do
sistema, é a inexistência de pontos de referência no terreno que possibilitem a localização
precisa do utilizador. Em segundo lugar, à semelhança da versão anterior, for referida a
reduzida exactidão na representação das árvores mais próximas.
O trabalho desenvolvido até agora é um princípio promissor que poderá ser melhorado em
iterações seguintes do seu desenvolvimento. Nomeadamente, apontam-se os seguintes tópicos
passíveis de continuação:
1. Desenvolvimento de algoritmos de nível-de-detalhe de visualização do terreno que
permitam manter a coerência espacial das ocupações florestais existentes. Este avanço
permitirá a definição de horizontes visuais ainda mais extensos, reduzindo
potencialmente a complexidade geométrica da cena.
2. Utilização de modelos de árvores mais detalhados que permitam a inclusão mais
coerente de relações dendrométricas, ao invés da abordagem fixa correntemente
utilizada. O uso de técnicas de nível de detalhe, permitindo a redução até à
simplificação final de dois polígonos entrelaçados, possivelmente também melhorará a
qualidade das imagens criadas com um impacte mínimo no desempenho final do
programa.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
87
3. Integração de elementos de referência que possibilitem a orientação espacial dos
utilizadores. Se a integração de estradas ou caminhos está condicionada pela qualidade
da digitalização, outro tipo de informação seria possível incluir no sistema, como, por
exemplo, uma bússola ou elementos artificiais que identificassem ou situassem locais
conhecidos.
4. Utilização de programas de sombreamento (shader programs) ao nível dos vértices que
constituem a geometria e dos seus fragmentos. Esta técnicas poderão aumentar o
realismo dos modelos utilizados e diminuir a aparência estática dos objectos
visualizados. Com estas técnicas será possível incluir, por exemplo, o efeito do vento
sobre as copas das árvores e a definição de sombras sobre o terreno para diferentes
condições de iluminação. Será possível, inclusivamente, fazer variar as tonalidades da
folhagem de acordo com a época do ano para a qual se simula a visualização.
Em última análise, os resultados produzidos por estas ferramentas são suficientemente
realistas para permitir uma percepção da realidade florestal pelo utilizador mesmo para
momentos distantes no tempo. Nenhum dos programas desenvolvido procura substituir a
realidade, procura antes permitir ao utilizador a recolha de uma experiência que lhe
comunique o impacte visual de uma paisagem natural, mas sem contudo deixar de reflectir a
artificialidade do sistema. A sua implementação sobre dados reais existentes em situações de
produção no decorrer de acções de planeamento florestal facilitam a sua utilização e
transposição para os utilizadores finais. Podem, então, ser utilizadas para determinação de
impactes visuais de planos de gestão ou para verificar situações paisagísticas futuras
decorrentes de catástrofes naturais como, por exemplo, os incêndios florestais, sendo de
inegável importância na avaliação estética de subsequentes projectos de reflorestação.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
88
BIBLIOGRAFIA
Abrash, M. 1977. Graphics Programming Black Book - Special Edition. Coriolis Group
Books. Albany. New York 1342 pp
Alves, A. A. M. 1982 Técnicas de produção florestal. Inistituto Nacional de Investigação
agrária. Lisboa
Architecture Review Board (ARB) 2003. OpenGL Extensions registry - Vertex Buffer
Objects, http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_buffer_object.txt
Booch, G., Rumbaugh, J, Jacobson, I –The Unified Modeling Language Users Guide.
Addison Wesley. Boston Massachusetts. 482 pp
Bresenham, J.E. 1965. Algorithm for computer control of a digital plotter. IBM Systems
Journal 4(1) pp 25-30
Chazelle, B., 1990 Triangulating a simple polygon in linear time Technical Report CS-TR-
264-90, Dept. of Computer Science, Princeton University, May 1990.
Chen, A, J. Johnson, A. Suhrstedt 2002, Introduction to AGP-8X. Advanced Micro Devices,
Inc.One AMD Place. Sunnyvale, CA 94088
Danahy, J. 2001.Considerations for digital visualizations of landscape. In: Sheppard, S.,
Harshaw, H (eds) 2001. Forests and Landscapes: Linking ecology sustainability and
aesthetics. Cabi Publishing. Wallingford. UK. pp. 225-246
de Berg, M, M. van Krefeld, M. Overmars, O. Schwarzkopf, 2000. Computational Geometry
-- Algorithms and Applications [2nd ed.], Springer-Verlag Berlin Heidelberg. 367 pp.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
89
ESRI, 1998. ESRI Shapefile Technical description - an ESRI white paper. Environmental
systems research Institute, Redlands CA. 34 pp
Falcão, A. 2001, Implementação de métodos heurísticos para modelação da gestão em
ecossistemas florestais- Integração num Sistema de Apoio à Decisão. Dissertação de
doutoramento. Instituto Superior de Agronomia. Lisboa.
Falcão, A. 2002. Simulação e geração de alternativas de gestão para o perímetro florestal do
Cantão das Hortas - Serra da Lousã - Integração no sistema de apoio à decisão. Documento
Interno 02/02. Departamento de Engenharia Florestal. Instituto Superior de Agronomia.
Lisboa. 19 pp
Falcão, A. e J. G. Borges. 1999. SAGfLOR 2.0 - Simulador de Alternativas de Gestão.
Manual de Utilização, Grupo de Economia e Planeamento em Recursos Florestais,
Documento nº5, DEF, Lisboa, 43 p.
Falcão, A O, Borges, J. G., 2002, Combining random and systematic search heuristic
procedures for solving spatially constrained forest management scheduling models. Forest
Science 48: 608-621
Falcão, A. A. Marques, A 2002, Metodologia expedita para simulação do crescimento e
produção de algumas espécies florestais portuguesas GEGREN -Documento Interno 01/02.
Departamento de Engenharia Florestal. Instituto Superior de Agronomia. Lisboa. 18 pp.
Falcão, A. 2003 - Integração de um Visualizador Interactivo de Paisagens Florestais num
Sistema de Apoio à Decisão em Gestão de Recursos Naturais - Aplicação á Serra da Lousã.
Comunicação apresentada no seminário
Fournier A., D.Y. Montuno. 1984. Triangulating simple polygons and equivalent problems.
ACM Trans. on Graphics, 3:153-174.
Garey, M. R., Johnson, D. S., Preparata, F. P. and Tarjan, R. E., 1978. Triangulating a simple
polygon, Information Processing Letters, vol. 7, 1978, pp.175-179.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
90
Held, M., 2001. FIST: Fast Industrial-Strength Triangulation of Polygons. Algorithmica
30(4): 563-596
Humphries C.J., J.R. Press, D.A. Sutton 2001 Guide to Trees of Britain and Europe. Hamlyn
Publishing Group, 2001
Kilgard, M. 1986. OpenGL programming for the X-Window System. Addison Addison-
Wesley Reading Massachusetts. 576 pp
Kovach, P.J. 2000. Inside Direct3D. Microsoft Press. Redmond Washington
Kirkpatrick, D. G., Klawe, M M., Tarjan, R.E., 1990, Polygon triangulation in O(n log log n)
time with simple data-structures in: Proceedings of the sixth annual symposium on
Computational geometry table of contents, Berkley, California, United States Pages: 34 - 43
Lengyel, E. 2002. Mathematics for 3D game programming and computer graphics. Charles
River Media. Hingham, Massachusetts. 382 pp
Lindstrom, P. Koller, D., Ribarsky, W, Hodges,L. F. Faust, N. 1996 Real-Time, Continuous
Level of Detail Rendering of Height Fields. Proceedings of ACM SIGGRAPH 96, August
1996, pp. 109-118.
Luymes, D. 2001. The Rhetoric of visual simulations in forest design: some research
directions. in Sheppard, S., Harshaw, H (eds) 2001. Forests and Landscapes: Linking ecology
sustainability and aesthetics. Cabi Publishing. Wallingford. UK. pp.191-204
Madureira, L. Nunes, L.C, Borges, J.G., Falcão, A.O. (in press) Assessing forest management
strategies values using a contingent valuation approach and advanced visualization
techniques.
Marselas, H, 2000, Optimizing vertex submissions for OpenGL. in: DeLoura, M (ed), 2000,
Game Programming Gems. Charles River Meida. Rockland Massachussets. pp 353-360
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
91
McGauhey, R.J 1997. Visualizing forest stand dynamics using the stand visualization system.
In: Proceedings ACSM/ASPRS/RT, Seattle Washington. American Society for
Photogrammetry and remote sensing. Bethesda, Maryland, Technical papers, Vol 4, 248-257
Meyer, A. 2001, Représentations d'arbres réalistes et efficaces pour la syntèse d'images de
paysages. Thèse de doctorat en sciences de l'Université Joseph Fournier. Grenoble. 149 pp
Nagy, G. 2000 Convincing looking glass for games. In: DeLoura, M (ed), 2000, Game
Programming Gems. Charles River Meida. Rockland Massachussets. 614 pp
Narkhede, A., D. Manocha, 1995 Fast Polygon Triangulation based on Seidel's Algorithm. In
A. W. Paeth (Ed.), Graphics Gems 5, pp 394—397. Academic Press
O'Rourke, J 1994,. Computational geometry in C. Cambridge University Press, 1994.
Orland, B., Uusitalo, J. 2001. Immersion in a virtual forest - some implications in Sheppard,
S., Harshaw, H (eds) 2001. Forests and Landscapes: Linking ecology sustainability and
aesthetics. Cabi Publishing. Wallingford. UK. pp 205-224
Rottger, S., Heidrich, W., Slussallek, P., Seidel, H-P., 1998 Real--Time Generation of
Continuous Levels of Detail for Height Fields, Proc. 6th Int. Conf. in Central Europe on
Computer Graphics and Visualization, pp. 315--322,
Seidel, R., 1991, A simple and fast incremental randomized algorithm for computing
trapezoidal decompositions and for triangulating polygons, Computational Geometry Theory
and Application, vol. 1, no. 1, pp. 51-64
Sheppard, S.R.J. 1989 Visual simulation: A User's guide for Architects Engineers and
Planners. Van Nostrand Reinhold, New York.
Sheppard, S., Harshaw, H (eds) 2001. Forests and Landscapes: Linking ecology sustainability
and aesthetics. Cabi Publishing. Wallingford. UK. 294 pp.
Ambiente interactivo de visualização para apoio à decisão em modelos de gestão florestal
92
Tor, S.B., Middleditch, A.E., 1984. Convex decomposition of simple polygons. ACM Trans.
on Graphics, 3(4):244-265
Toussaint, G.T. 1991. Efficient triangulation of simple polygons. Visual Comput. 7(5-6)280-
295.
Velho, L. Gomes, J. 2000 Variable resolution 4-k Meshes: concepts and Applications.
Computer Graphics forum. Vol. 19(2000) n. 4 pp 195-212
Woo, M, J. Neider, T. Davis, and D. Shreiner. OpenGL programming guide. Addison-
Wesley, 1999.