Uma Abordagem Baseada em Componentes para a Construç ˜ao ...
Uma Abordagem Baseada em Componentes para a Construç ˜ao ...
Uma Abordagem Baseada em Componentes para a Construç ˜ao ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Uma</strong> <strong>Abordag<strong>em</strong></strong> <strong>Baseada</strong> <strong>em</strong> <strong>Componentes</strong> <strong>para</strong> a<br />
<strong>Construç</strong>ão de Edifícios Virtuais<br />
Glauber Vinícius Ferreira 1 , Emerson Cavalcante Loureiro 1 , Wallace Nogueira 2 ,<br />
André Alécio Ferreira 2 , Hyggo Oliveira de Almeida 3∗ , Alejandro Cesar Frery 2<br />
1 Departamento de Sist<strong>em</strong>as e Computação<br />
Universidade Federal de Campina Grande<br />
Av. Aprigrio Veloso, 882, Bodocongo – Campina Grande, PB, Brasil<br />
2 Departamento de Tecnologia da Informação<br />
Universidade Federal de Alagoas – Maceió, AL<br />
3 Departamento de Engenharia Elétrica<br />
Universidade Federal de Campina Grande – Campina Grande, PB<br />
{glauber,<strong>em</strong>erson}@dsc.ufcg.edu.br, frery@tci.ufal.br<br />
Abstract. The component based approach is used to maximize design and impl<strong>em</strong>entation<br />
reuse on civil, electric and, more recently, on software engineering.<br />
In such approach, reusable components are ass<strong>em</strong>bled to achieve an<br />
efficient and robust construction. In this paper we propose the usage of the<br />
component based approach to construct virtual buildings. More specifically, we<br />
present a set of guidelines to construct virtual buildings based on component<br />
approach concepts. In order to illustrate the application of these guidelines, a<br />
case study related to a virtual construction of a historical building is shown.<br />
Resumo. A abordag<strong>em</strong> de componentes t<strong>em</strong> sido utilizada <strong>para</strong> maximizar a<br />
reutilização de projeto e impl<strong>em</strong>entação nas mais diversas engenharias, tais<br />
como civil, elétrica e, mais recent<strong>em</strong>ente, na engenharia de software. Segundo<br />
tal abordag<strong>em</strong>, componentes reutilizáveis são agrupados <strong>em</strong> um processo de<br />
montag<strong>em</strong> <strong>para</strong> alcançar uma construção mais eficiente e robusta. Neste artigo,<br />
propõe-se a utilização da abordag<strong>em</strong> baseada <strong>em</strong> componentes <strong>para</strong> a<br />
construção de edifícios virtuais. Mais especificamente, apresenta-se um conjunto<br />
de diretrizes <strong>para</strong> a construção de edifícios virtuais com base na abordag<strong>em</strong><br />
de componentes. Para ilustrar a aplicação das diretrizes, apresenta-se um<br />
estudo de caso relacionado à construção virtual de um edifício histórico.<br />
1. Introdução<br />
A construção de edifícios virtuais utilizando linguagens de descrição, tal como<br />
VRML [International Organization for Standardization, 1998], é frequent<strong>em</strong>ente feita de<br />
forma ad hoc. A ausência de uma sist<strong>em</strong>atização da construção desse tipo de objeto<br />
diminui a possibilidade de reutilização de estruturas VRML, aumentando o t<strong>em</strong>po de desenvolvimento<br />
de novos mundos virtuais.<br />
Muitos investimentos nas engenharias civil [Merritt, 2003], elétrica [Horn, 1991]<br />
e, mais recent<strong>em</strong>ente, na engenharia de software [Hein<strong>em</strong>an and Councill, 2001], têm<br />
∗ Bolsista CNPq no Programa de Doutorado no Departamento de Engenharia Elétrica - COPELE/DE-<br />
E/UFCG.
sido voltados <strong>para</strong> o desenvolvimento baseado <strong>em</strong> componentes reutilizáveis. Nestas engenharias,<br />
a abordag<strong>em</strong> de componentes t<strong>em</strong> sido utilizada <strong>para</strong> maximizar a reutilização<br />
de esforços b<strong>em</strong> como <strong>para</strong> reduzir os custos de impl<strong>em</strong>entação. Essa abordag<strong>em</strong> preconiza<br />
a criação de componentes reutilizáveis <strong>para</strong> cada domínio de aplicação, e o seu<br />
agrupamento <strong>em</strong> processos de montag<strong>em</strong> <strong>para</strong>, com isso, alcançar uma construção mais<br />
eficiente e robusta de sist<strong>em</strong>as e processos [Szyperski, 2002].<br />
Neste artigo, propõe-se a utilização da abordag<strong>em</strong> baseada <strong>em</strong> componentes <strong>para</strong> a<br />
construção de mundos urbanos virtuais. Mais especificamente, apresenta-se um conjunto<br />
de diretrizes <strong>para</strong> a construção de edifícios virtuais, com base nos conceitos do desenvolvimento<br />
baseado <strong>em</strong> componentes, buscando maximizar a reutilização e minimizar o<br />
t<strong>em</strong>po de desenvolvimento. <strong>Uma</strong> aplicação das diretrizes propostas referente à construção<br />
virtual do edifício histórico da Associação Comercial de Maceió é apresentada.<br />
O restante do artigo está organizado da seguinte forma: na Seção 2 apresentam-se<br />
conceitos relacionados a componentes e modelag<strong>em</strong> virtual; na Seção 3 apresentam-se<br />
as diretrizes propostas; na Seção 4 o estudo de caso referente ao prédio histórico da<br />
Associação Comercial de Maceió é apresentado e, finalmente, na Seção 5 são apresentadas<br />
as considerações finais do artigo.<br />
2. <strong>Componentes</strong> e modelag<strong>em</strong> virtual<br />
As diretrizes propostas neste artigo são baseadas na abordag<strong>em</strong> de componentes. Um<br />
Componente <strong>para</strong> Modelag<strong>em</strong> Virtual (CMV) foi definido com base <strong>em</strong> componentes de<br />
software, por se tratar de uma abordag<strong>em</strong> que herdou características de componentes de<br />
hardware, eletrônicos e de construção civil.<br />
De um modo geral, as abordagens de componentes segu<strong>em</strong> a arquitetura ilustrada<br />
na Figura 1, cujos el<strong>em</strong>entos são descritos a seguir enfatizando as s<strong>em</strong>elhanças e<br />
diferenças nas perspectivas de software e de modelag<strong>em</strong> virtual.<br />
CONTRATOS<br />
Componente e interface do componente<br />
ARCABOUÇO<br />
COMPONENTE<br />
INTERFACE DO<br />
COMPONENTE<br />
Figura 1: Arquitetura de componentes<br />
Perspectiva de software: um componente é uma impl<strong>em</strong>entação de software que pode<br />
ser executada <strong>em</strong> um dispositivo lógico ou físico e pode ser reutilizado <strong>em</strong> diversas<br />
aplicações dentro do seu domínio [Bachman, 2000]. A interface do componente<br />
de software é representada pelas assinaturas dos métodos que impl<strong>em</strong>entam<br />
a funcionalidade do componente. Por ex<strong>em</strong>plo: a interface de um componente de<br />
software determina que ele é capaz de executar o cálculo de integrais. Em geral,<br />
o componente de software é disponibilizado como um pacote ou biblioteca.
Perspectiva de modelag<strong>em</strong> virtual: um CMV é um conjunto de nós VRML que impl<strong>em</strong>entam<br />
a estrutura de um modelo virtual, podendo ser reutilizado <strong>em</strong> outras<br />
modelagens nas quais seja considerado adequado. Tais nós dev<strong>em</strong> ser agrupados<br />
<strong>em</strong> um nó PROTO onde são definidos os campos que representam o estado<br />
persistente do modelo virtual. No nó PROTO também deve ser definida a interface<br />
do CMV através de eventos de entrada (eventIn) e eventos de saída (eventOut)<br />
[International Organization for Standardization, 1998]. Os eventos definidos<br />
na interface impl<strong>em</strong>entam a mudança de estado do modelo virtual. Por ex<strong>em</strong>plo:<br />
a interface de um CMV determina que pode ser alterada a sua textura ou<br />
posição. O CMV deve ser disponibilizado como um arquivo VRML, i.e, com<br />
extensão .wrl.<br />
Arcabouço<br />
O arcabouço de componentes é a infra-estrutura que possibilita a montag<strong>em</strong> dos componentes<br />
tanto <strong>para</strong> a construção de aplicações de software quanto <strong>para</strong> a construção de<br />
edifícios virtuais. Para garantir que os componentes se comportarão da maneira esperada<br />
pelo arcabouço, são definidos os contratos. Os contratos representam as interfaces que o<br />
componente é obrigado a impl<strong>em</strong>entar. Eles garant<strong>em</strong> que o desenvolvimento de componentes<br />
independentes obedeça determinados padrões, fazendo com que o arcabouço seja<br />
capaz de utilizá-los s<strong>em</strong> conhecer detalhes internos de impl<strong>em</strong>entação [Bachman, 2000].<br />
Caso o arcabouço faça parte de uma estrutura maior (super-arcabouço), ele passará a ser<br />
visto como um componente e sua interface deverá ser definida de acordo com os contratos<br />
definidos pelo super-arcabouço.<br />
Perspectiva de software: um arcabouço de software é uma infra-estrutura que impl<strong>em</strong>enta<br />
e coordena a forma de interação entre os componentes, de acordo com<br />
suas interfaces, <strong>em</strong> uma linguag<strong>em</strong> compatível com os componentes desenvolvidos<br />
[Bachman, 2000]. Em geral, um arcabouço de software é disponibilizado<br />
como uma API 1 .<br />
Perspectiva de modelag<strong>em</strong> virtual: no contexto de modelag<strong>em</strong> virtual, um arcabouço é<br />
um conjunto de nós VRML que impl<strong>em</strong>entam a forma como os CMVs são organizados<br />
<strong>em</strong> uma determinada área do modelo virtual. Assim como os CMV´s, os<br />
nós do arcabouço são agrupados <strong>em</strong> um nó PROTO onde são definidos seus campos,<br />
sendo um deles necessariamente do tipo MFNode. O campo do tipo MFNode<br />
representa a lista dos componentes organizados pelo arcabouço, caracterizandoo<br />
como um grouping node [International Organization for Standardization, 1998].<br />
O arcabouço também deve ser disponibilizado como um arquivo VRML.<br />
Os conceitos da abordag<strong>em</strong> de componentes vêm sendo aplicados à área<br />
de computação gráfica produzindo soluções tanto <strong>em</strong> nível geral [Haller, 2001]<br />
quanto voltadas <strong>para</strong> domínios específicos [Seiler, 2001, Goldstein, 2000]. <strong>Uma</strong><br />
aplicação dos conceitos de componentes à computação gráfica 3D pode ser encontrada<br />
<strong>em</strong> [Doerner and Grimm, 2001]. Nessa abordag<strong>em</strong> um componente 3D encapsula sua<br />
geometria e seu comportamento, possuindo também mecanismos <strong>para</strong> o envio e recebimento<br />
de eventos. A partir destas definições é estabelecida uma arquitetura <strong>para</strong> o<br />
componente 3D, permitindo que qualquer um destes componentes possa ser acoplado ao<br />
arcabouço responsável pela infra-estrutura de inicialização, comunicação e renderização.<br />
<strong>Uma</strong> impl<strong>em</strong>entação desta abordag<strong>em</strong> foi realizada utilizando o modelo de componentes<br />
JavaBeans [Sun Microsyst<strong>em</strong>s, 2004b] e a API Java3D [Sun Microsyst<strong>em</strong>s, 2004a].<br />
No trabalho de Dachselt [Dachselt, 2001], todas as características do componente<br />
3D são descritas através de um documento XML [W3C, 2004] que é utilizado por um<br />
1 Application Programming Interface.
arcabouço responsável pelas operações gráficas. Estes documentos são compostos por<br />
três partes, referentes aos aspectos de impl<strong>em</strong>entação, interface e integração do componente.<br />
O uso de documentos XML <strong>para</strong> a descrição de componentes 3D também pode ser<br />
encontrado <strong>em</strong> [Abawi and Reinhold, 2001]. Conceitos da abordag<strong>em</strong> de componentes<br />
são também utilizados pelo arcabouço BOOGA [Amann et al., 1997] (Berne´s Object-<br />
Oriented Graphics Architecture) como forma de suporte ao desenvolvimento rápido de<br />
aplicações no contexto da computação gráfica 2D e 3D. Nesta abordag<strong>em</strong> cada componente<br />
é tratado como uma operação (e.g., transformação de objetos do espaço 3D <strong>para</strong> o<br />
2D) e constituído por duas interfaces, sendo uma de serviço (impl<strong>em</strong>entação da funcionalidade<br />
do componente) e outra de gerenciamento (configuração e tratamento de erros).<br />
Apesar de várias soluções ter<strong>em</strong> sido analisadas, nenhuma delas t<strong>em</strong> seu foco<br />
direcionado à sist<strong>em</strong>atização da construção de edifícios virtuais. A ausência de planejamento<br />
com relação à construção pode atrasar de forma significativa um projeto dentro<br />
deste contexto. Neste trabalho apresenta-se uma abordag<strong>em</strong> baseada <strong>em</strong> componentes<br />
<strong>para</strong> maximizar a reutilização e minimizar o t<strong>em</strong>po na construção de edifícios virtuais.<br />
As diretrizes propostas e aplicadas ao edifício da Associação Comercial de Maceió representam<br />
um guia eficaz <strong>para</strong> a modelag<strong>em</strong> virtual de edifícios, desde a análise do edifício<br />
a ser modelado até a conclusão da construção virtual.<br />
3. Diretrizes <strong>para</strong> a construção de edifícios virtuais<br />
<strong>Uma</strong> vez apresentada a conceitualização referente a componentes <strong>para</strong> modelag<strong>em</strong> virtual<br />
(CMVs), apresentam-se nesta seção as diretrizes <strong>para</strong> a construção de edifícios virtuais<br />
ilustrando-as com a modelag<strong>em</strong> do condomínio residencial mostrado na Figura 2. A<br />
seguir são apresentadas as diretrizes <strong>para</strong> a construção de edifícios virtuais utilizando<br />
conceitos do desenvolvimento baseado <strong>em</strong> componentes.<br />
Figura 2: Condomínio residencial<br />
Diretriz 1 - Obter a planta baixa do edifício a ser virtualmente construído.<br />
Obter a planta baixa dos edifícios ou, caso não haja plantas baixas disponíveis, especificá-las<br />
com base <strong>em</strong> medições no local a ser representado. São aceitáveis plantas simplificadas<br />
desde que seja descrita a estrutura interna do edifício e desde que as proporções<br />
entre objetos sejam respeitadas. Na Figura 3 é apresentada uma planta baixa simplificada<br />
do condomínio.<br />
Diretriz 2 - Identificar os tipos de el<strong>em</strong>entos do edifício que serão virtualmente construídos.<br />
Identificar na planta obtida na diretriz anterior quais são os tipos de el<strong>em</strong>entos de<br />
construção delimitadores do espaço físico do edifício que dev<strong>em</strong> ser modelados <strong>em</strong> realidade<br />
virtual: salas, compartimentos, andares, lotes, terrenos etc. Objetos mais granulares
Prédio Prédio Prédio<br />
Prédio<br />
Prédio Prédio Prédio<br />
2,50m<br />
1,60m<br />
1,60m<br />
1,50m<br />
2,50m<br />
1,50m<br />
2,50m<br />
6,15m<br />
6,15m<br />
4,50m 2,50m<br />
9,00m<br />
4,50m<br />
Condomínio Andar<br />
2,70m<br />
4,30m 2,70m<br />
Figura 3: Planta baixa simplificada do condomínio residencial<br />
que porventura estejam descritos na planta, tais como prateleiras ou móveis de alvenaria,<br />
não são considerados na aplicação desta diretriz. Um tipo de el<strong>em</strong>ento é determinado pela<br />
sua estrutura, ou seja, dois prédios com quantidades diferentes de andares são dois tipos<br />
diferentes de prédio. Os seguintes tipos de el<strong>em</strong>entos pod<strong>em</strong> ser enumerados no ex<strong>em</strong>plo<br />
do condomínio residencial: condomínio, prédio, andar, apartamento e sala. Por simplicidade,<br />
mas s<strong>em</strong> perda de generalidade, neste ex<strong>em</strong>plo todos os prédios possu<strong>em</strong> o mesmo<br />
número de andares, que possu<strong>em</strong> o mesmo número de apartamentos, os quais possu<strong>em</strong> o<br />
mesmo número de salas e, por isso, apenas um tipo foi definido <strong>para</strong> cada el<strong>em</strong>ento.<br />
Diretriz 3 - Definir a hierarquia de composição dos tipos de el<strong>em</strong>entos identificados na<br />
diretriz anterior.<br />
Os tipos de el<strong>em</strong>entos identificados anteriormente obedec<strong>em</strong> a alguma hierarquia de<br />
composição. No ex<strong>em</strong>plo do condomínio residencial, um condomínio é composto de<br />
vários prédios, que por sua vez são compostos de um ou mais andares. Os andares são<br />
compostos por apartamentos, os quais contêm salas. O resultado da aplicação desta<br />
diretriz é uma estrutura hierárquica onde os ramos representam os tipos de el<strong>em</strong>entos<br />
compostos por outros tipos de el<strong>em</strong>entos (condomínio, prédio, andar e apartamento) e<br />
as folhas representam os tipos de el<strong>em</strong>entos não-compostos (sala). Além disso, deve-se<br />
descrever na hierarquia a quantidade de el<strong>em</strong>entos <strong>para</strong> cada tipo. Na Figura 4 é apresentada<br />
a hierarquia de tipos de el<strong>em</strong>entos resultante da aplicação desta diretriz no ex<strong>em</strong>plo<br />
do condomínio.<br />
Condomínio 1<br />
Prédio 7<br />
Andar 3<br />
Apartamento 2<br />
Sala 4<br />
Figura 4: Hierarquia de composição dos tipos de el<strong>em</strong>entos<br />
2,50m<br />
4,30m<br />
Apartamento<br />
Apartamento
Diretriz 4 - Construir um arcabouço <strong>para</strong> cada ramo da hierarquia.<br />
Na hierarquia ilustrada na Figura 4, t<strong>em</strong>-se uma composição de tipos de el<strong>em</strong>entos. Todos<br />
os ramos da hierarquia são compostos por estruturas menores. Isto acontece desde a raiz<br />
(condomínio) <strong>em</strong> relação aos seus “filhos” (prédios), até apartamento <strong>em</strong> relação às suas<br />
folhas (salas). Para cada uma destas estruturas compostas, representadas pelos ramos,<br />
deve-se ter uma maneira de agrupar os componentes “filhos”. Enfim, deve-se definir um<br />
arcabouço <strong>para</strong> cada ramo, incluindo a raiz.<br />
A principal funcionalidade provida por este arcabouço é o posicionamento dos<br />
seus componentes <strong>em</strong> relação ao seu sist<strong>em</strong>a de coordenadas. Visto que o posicionamento<br />
é inerente a todos os edifícios virtuais, foram impl<strong>em</strong>entados dois protótipos<br />
VRML (Building e Position) que facilitam a construção de arcabouços, provendo a<br />
impl<strong>em</strong>entação do posicionamento dos seus el<strong>em</strong>entos.<br />
Na Figura 5 apresenta-se a estrutura de um arcabouço que utiliza os protótipos<br />
Building e Position. Esta estrutura deve ser utilizada <strong>para</strong> a construção dos arcabouços<br />
correspondentes aos ramos da hierarquia, sendo cada arcabouço disponibilizado <strong>em</strong> um<br />
arquivo VRML. No ex<strong>em</strong>plo do condomínio residencial, t<strong>em</strong>-se quatro arcabouços: condomínio,<br />
prédio, andar e apartamento.<br />
As linhas de 1 a 9 do código da Figura 5 determinam que o arcabouço sendo<br />
construído herdará a impl<strong>em</strong>entação de posicionamento de componentes definida pelos<br />
protótipos Building e Position 2 . As linhas de 11 a 34 determinam a criação<br />
do protótipo correspondente ao arcabouço que está sendo construído. Sendo assim,<br />
FRAMEWORK NAME (linha 11) deve ser substituído pelo nome do arcabouço. Da mesma<br />
forma, COMPONENTS (linhas 14 e 20) deve ser substituído pelo nome dos componentes<br />
que farão parte do arcabouço. No ex<strong>em</strong>plo do condomínio virtual, o arcabouço<br />
<strong>para</strong> condomínio t<strong>em</strong> FRAMEWORK NAME = Condominio e COMPONENTS = predios. Já<br />
o arcabouço <strong>para</strong> prédio t<strong>em</strong> FRAMEWORK NAME = Predio e COMPONENTS = andares.<br />
Este processo continua até o último ramo da hierarquia (apartamento), que possui<br />
FRAMEWORK NAME = Apartamento e COMPONENTS = salas.<br />
Como citado anteriormente, o arcabouço deve definir o posicionamento dos seus<br />
componentes. Isto é feito através da inserção de nós Position no campo positions da estrutura,<br />
como apresentado na linha 21 do código da Figura 5. Neste código, são definidas<br />
as posições de dois componentes denominados “componente1” e “componente2”, cujas<br />
posições são (0 0 0) e (10 0 0), respectivamente. As posições dos componentes dev<strong>em</strong> ser<br />
definidas com base na planta obtida na Diretriz 1.<br />
Após a construção de todos os arcabouços, t<strong>em</strong>-se definido o posicionamento de<br />
todos os componentes da hierarquia, restando apenas a construção dos CMVs.<br />
Diretriz 5 - Construir um CMV <strong>para</strong> cada folha da hierarquia.<br />
Após a construção dos arcabouços, deve-se impl<strong>em</strong>entar os CMVs correspondentes a<br />
cada folha da hierarquia. Como dito anteriormente, os CMVs representam estruturas<br />
de construção mais granulares, ou seja, que são compostas apenas por objetos virtuais<br />
compl<strong>em</strong>entares (móveis, eletrodomésticos, estátuas etc., que serão abordados na Diretriz<br />
7) e por objetos que faz<strong>em</strong> parte da sua estrutura (portas, janelas, paredes etc.). Além<br />
destes objetos, estruturas mais complexas, tais como escadas, varandas e jardins, pod<strong>em</strong><br />
ser construídas como CMV’s. No ex<strong>em</strong>plo, deve ser criado um CMV <strong>para</strong> sala.<br />
2 O arquivo VRML contendo o código dos protótipos Building e Position está disponível <strong>em</strong> www.<br />
jaraguavirtual.ufal.br/prototipos/Building.wrl.
1 EXTERNPROTO Building [<br />
2 field MFNode children<br />
3 field MFNode positions<br />
4 ]“http://www.jaraguavirtual.ufal.br/prototipos/Building.wrl#Building”<br />
5<br />
6 EXTERNPROTO Position [<br />
7 exposedField SFString identifier<br />
8 exposedField SFVec3f position<br />
9 ]“ http://www.jaraguavirtual.ufal.br/prototipos/ Building.wrl#Position”<br />
10<br />
11 PROTO FRAMEWORK_NAME [<br />
12 field SFString identifier “”<br />
13 eventIn SFVec3f set_position<br />
14<br />
15 ]{<br />
field MFNode COMPONENTS []<br />
16 Transform {<br />
17 translation IS set_position<br />
18 children [<br />
19 Building {<br />
20 children IS COMPONENTS<br />
21 positions [<br />
22<br />
Position{<br />
23<br />
identifier “componente1”<br />
24<br />
position 0 0 0<br />
25<br />
}<br />
26<br />
Position{<br />
27<br />
identifier “componente2”<br />
28<br />
position 10 0 0<br />
29<br />
}<br />
30 ]<br />
31 }<br />
32 ]<br />
33<br />
34 }<br />
}<br />
Figura 5: Estrutura de arcabouço <strong>para</strong> os ramos da hierarquia<br />
Para facilitar a construção de salas, com a adição de portas e janelas e a definição<br />
de pontos de vista, foi construído um CMV que pode ser reutilizado <strong>em</strong> grande parte das<br />
construções de edifícios virtuais. A principal motivação <strong>para</strong> a construção de tal CMV<br />
é a dificuldade de criar salas através de nós IndexedFaceSet. Devido à grande quantidade<br />
de salas existentes <strong>em</strong> edifícios virtuais e, conseqüent<strong>em</strong>ente, o grande número de<br />
pontos que precisam ser modelados, a tarefa de definir as coordenadas de todos os nós<br />
IndexedFaceSet é bastante complexa e dispendiosa.<br />
Na Figura 6 apresenta-se o código do CMV da sala definido através do protótipo<br />
Room 3 , o qual contém um script que impl<strong>em</strong>enta a definição das coordenadas da sala automaticamente.<br />
Tais coordenadas são criadas a partir dos valores dos campos width, length<br />
e height. Desta forma, não é necessário identificar todas as coordenadas existentes no<br />
edifício virtual, bastando apenas definir valores de largura, altura e comprimento de cada<br />
sala. Também são definidos três campos <strong>para</strong> a especificação da aparência das salas, onde<br />
pod<strong>em</strong> ser utilizados materiais ou texturas: wallAppearance <strong>para</strong> as paredes, floorAppearance<br />
<strong>para</strong> o piso e ceilingAppearance <strong>para</strong> o teto. Os objetos virtuais compl<strong>em</strong>entares,<br />
definidos na Diretriz 7, são adicionados no campo children.<br />
Pode-se também definir o posicionamento de objetos que faz<strong>em</strong> parte da estrutura<br />
da sala, como portas e janelas. Esta definição é feita com a criação de nós Opening 3<br />
agrupados no campo openings do nó Room. Para cada abertura existente na sala dev<strong>em</strong><br />
ser definidos valores <strong>para</strong> altura, largura e espessura. O campo face (SFInt32) é utilizado<br />
<strong>para</strong> definir <strong>em</strong> que “parede” da sala a abertura está posicionada: (1) anterior, (2) direita,<br />
(3) posterior e (4) esquerda. A posição da abertura <strong>em</strong> cada face é definida através do<br />
3 O arquivo VRML contendo o código dos protótipos Room e Opening está disponível <strong>em</strong> www.<br />
jaraguavirtual.ufal.br/prototipos/Room.wrl.
campo distance (SFFloat), que deve ter um valor igual a distância entre a abertura e a<br />
aresta esquerda da face <strong>em</strong> questão. O campo type (SFInt32) é utilizado <strong>para</strong> diferenciar<br />
(2) portas, (1) janelas e (0) espaços não preenchidos. Cada porta ou janela definida<br />
através do protótipo Opening possui uma animação <strong>para</strong> abertura e fechamento, com<br />
o objetivo de aumentar a <strong>em</strong>patia do visitante e, com isso, o seu envolvimento com o<br />
conteúdo [Frery et al., 2002].<br />
Além da estrutura da sala, também é possível definir quatro pontos de vista através<br />
do campo viewPoints, cujas coordenadas são calculadas automaticamente. Os pontos de<br />
vista são direcionados dos vértices <strong>para</strong> o centro, representando as posições Sudoeste (0),<br />
Sudeste (1), Nordeste (2) e Noroeste (3). <strong>Uma</strong> sala com os três pontos de vista habilitados<br />
(Sudoeste, Sudeste e Noroeste, por ex<strong>em</strong>plo) t<strong>em</strong> viewPoints = [0,1,3]. A descrição<br />
do ponto de vista, que é exibida no visualizador VRML, é formada pela concatenação<br />
do nome da sala, determinado pelo campo name, com a posição do ponto de vista; por<br />
ex<strong>em</strong>plo, “NomeSala - Sudoeste”.<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
PROTO<br />
Room [<br />
field SFString identifier “”<br />
field SFString name “”<br />
field SFFloat width 0<br />
field SFFloat length 0<br />
field SFFloat height 0<br />
field SFNode wallAppearance NULL<br />
field SFNode floorAppearance NULL<br />
field SFNode ceilingAppearance NULL<br />
field MFNode openings []<br />
field MFInt32 viewPoints []<br />
field MFNode children []<br />
eventIn SFVec3f<br />
]{ ...<br />
Script {...}<br />
...<br />
}<br />
set_position<br />
Figura 6: Definição do protótipo Room<br />
Como dito anteriormente, o CMV pode ser reutilizado <strong>em</strong> diversas construções<br />
virtuais, dada sua generalidade. Porém, caso seja necessária a definição de novos tipos<br />
de salas, com diferentes atributos, novos CMVs dev<strong>em</strong> ser criados. As únicas restrições<br />
nesta operação são a definição de um campo do tipo SFString denominado identifier e<br />
um evento de entrada do tipo SFVec3f denominado set position. Este evento deve<br />
conter a impl<strong>em</strong>entação de definição do posicionamento do CMV.<br />
Diretriz 6 - Montar o edifício virtual utilizando os arcabouços e os CMV´s.<br />
<strong>Uma</strong> vez criada toda a infra-estrutura de componentes necessária <strong>para</strong> a construção do<br />
edifício virtual, deve-se iniciar o processo de montag<strong>em</strong>. Neste ponto de aplicação das diretrizes<br />
deve-se ter dois conjuntos de arquivos VRML: um referente aos arcabouços e outro<br />
referente aos CMVs. O processo de montag<strong>em</strong> se inicia com a criação de um arquivo<br />
VRML contendo nós VRML EXTERNPROTO que referenciam os arcabouços e CMV´s já<br />
criados. Neste arquivo são definidos os el<strong>em</strong>entos do edifício a ser<strong>em</strong> construídos, de<br />
acordo com as quantidades especificadas na hierarquia e utilizando os identificadores dos<br />
el<strong>em</strong>entos definidos na Diretriz 4, como descrito no código ilustrado na Figura 5.<br />
O processo de montag<strong>em</strong> envolve a criação de nós <strong>para</strong> cada el<strong>em</strong>ento existente na<br />
planta e a definição dos valores <strong>para</strong> os campos de cada nó. No ex<strong>em</strong>plo do condomínio<br />
residencial, será criado um nó Condomínio, cujo campo predios terá quatro nós do tipo<br />
Predio, cada um deles com os identificadores definidos no arcabouço de condomínio,
construído na Diretriz 4. No campo andares de cada prédio serão adicionados três nós do<br />
tipo Andar, com os identificadores definidos no arcabouço de prédio, também construído<br />
na Diretriz 4. Este processo continua até o último ramo da hierarquia (Apartamento),<br />
onde serão definidas as salas que formam o condomínio residencial.<br />
Em um mesmo nível da hierarquia não há relações de precedência, portanto o<br />
trabalho de montag<strong>em</strong> dos componentes <strong>em</strong> um determinado arcabouço pode ser dividido<br />
<strong>para</strong> que seja executado <strong>em</strong> equipe. Na Figura 7 é apresentado um trecho do código de<br />
montag<strong>em</strong> do condomínio residencial virtual.<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
Condominio{<br />
identifier “condominio”<br />
predios [<br />
Predio{<br />
identifier “predioUm”<br />
andares [<br />
Andar{<br />
identifier “andarUm”<br />
apartamentos[<br />
Apartamento{<br />
identifier “apartamentoUm”<br />
salas[<br />
Room{<br />
identifier “salaUm”<br />
width 4.8<br />
length 4.8<br />
height 2.3<br />
...<br />
}<br />
...<br />
Figura 7: Trecho do código de montag<strong>em</strong> do condomínio residencial virtual<br />
Diretriz 7 - Inserir objetos virtuais compl<strong>em</strong>entares nos CMVs.<br />
Neste momento toda a modelag<strong>em</strong> virtual relacionada à estrutura do edifício está pronta.<br />
Deve-se então modelar se<strong>para</strong>damente cada um dos objetos compl<strong>em</strong>entares, tais como<br />
móveis, eletrodomésticos, quadros, prateleiras, estátuas etc. Os objetos compl<strong>em</strong>entares<br />
modelados que pertenc<strong>em</strong> a uma mesmo CMV, dev<strong>em</strong> ser agrupados <strong>em</strong> um mesmo<br />
arquivo VRML. No fim deste processo, t<strong>em</strong>-se um arquivo VRML <strong>para</strong> cada CMV, contendo<br />
seus objetos compl<strong>em</strong>entares. Estes arquivos dev<strong>em</strong> ser adicionados aos CMV´s da<br />
hierarquia, através de um nó Inline.<br />
No ex<strong>em</strong>plo do condomínio residencial, t<strong>em</strong>-se um arquivo VRML contendo os<br />
objetos virtuais compl<strong>em</strong>entares <strong>para</strong> cada sala existente no condomínio. Esses arquivos<br />
dev<strong>em</strong> ser incluídos no arquivo VRML criado na Diretriz 6, utilizando <strong>para</strong> isso nós do<br />
tipo Inline, adicionados ao campo children de cada nó Sala.<br />
4. Estudo de caso - Associação Comercial de Maceió<br />
A seguir é apresentada a aplicação das diretrizes propostas <strong>para</strong> a construção virtual do<br />
edifício histórico da Associação Comercial de Maceió. O resultado final da construção<br />
virtual e informações relativas à Associação Comercial de Maceió pod<strong>em</strong> ser vistos no site<br />
do projeto http://www.jaraguavirtual.ufal.br. Por questões de espaço, os códigos<br />
dos arcabouços e CMVs foram omitidos deste artigo; sendo assim, as diretrizes relacionadas<br />
a arcabouços e CMVs indicarão apontadores na web <strong>para</strong> a visualização destes<br />
códigos.
1. Obtendo a planta baixa do edifício a ser virtualmente construído. Na Figura 8<br />
é ilustrada uma versão simplificada da planta baixa do prédio da Associação Comercial<br />
de Maceió. A planta completa do prédio, que possui três andares, é dividida<br />
<strong>em</strong> três partes, sendo uma delas apresentada na Figura 8.<br />
5,70m<br />
5,70m<br />
6,90m<br />
3,00m<br />
3,90m<br />
4,20m<br />
3,15m 3,90m<br />
5,70m<br />
6,60m<br />
6,60m<br />
6,60m<br />
6,60m<br />
6,60m<br />
5,70m<br />
4,50m<br />
6,9m 4,50m<br />
18,15m<br />
13,05m<br />
5,70m<br />
18,15m<br />
5,70m<br />
6,00m<br />
5,70m<br />
1,50m<br />
5,70m<br />
10,80m<br />
3,60m<br />
1,50m<br />
5,70m<br />
5,70m<br />
4,50m<br />
4,80m<br />
Figura 8: Planta baixa simplificada da Associação Comercial de Maceió<br />
2. Identificando os tipos de el<strong>em</strong>entos do edifício que serão virtualmente construídos.<br />
De acordo com a planta obtida na diretriz anterior, foram identificados<br />
os seguintes tipos de el<strong>em</strong>entos: Prédio, PrimeiroAndar, SegundoAndar, TerceiroAndar<br />
e Sala. Exist<strong>em</strong> três tipos de andares porque a quantidade de salas é<br />
diferente <strong>para</strong> cada um deles.<br />
3. Definindo a hierarquia de composição dos tipos de el<strong>em</strong>entos identificados na<br />
diretriz anterior. Na Figura 9 é ilustrada a hierarquia de composição de tipos de<br />
el<strong>em</strong>entos da Associação Comercial de Maceió.<br />
Prédio 1<br />
Primeiro Andar 1<br />
Salas 19<br />
Segundo Andar 1<br />
Salas 18<br />
Terceiro Andar 1<br />
Salas 16<br />
Figura 9: Hierarquia de composição de tipos de el<strong>em</strong>entos da Associação Comercial de<br />
Maceió<br />
4. Construindo um arcabouço <strong>para</strong> cada ramo da hierarquia. De acordo com<br />
a hierarquia identificada na diretriz anterior, foram construídos arcabouços <strong>para</strong>
os nós Prédio, PrimeiroAndar, SegundoAndar e TerceiroAndar, utilizando os<br />
protótipos VRML apresentados na Diretriz 4. Os arcabouços pod<strong>em</strong> ser encontrados<br />
<strong>em</strong> http://www.jaraguavirtual.ufal.br/associacao/prototipos/<br />
prototipos.html.<br />
5. Construindo um CMV <strong>para</strong> cada folha da hierarquia. Na modelag<strong>em</strong> da<br />
Associação Comercial de Maceió foi identificado apenas o CMV <strong>para</strong> Sala, que<br />
é o único tipo de folha da hierarquia. As características identificadas como necessárias<br />
<strong>para</strong> modelar as salas deste edifício foram as mesmas providas pelo<br />
CMV de Sala apresentado na Diretriz 5. Desta forma, este CMV foi reutilizado.<br />
6. Montando o edifício virtual utilizando os arcabouços e os CMV´s. Após<br />
a construção de todos os arcabouços e CMVs, resta apenas montá-los <strong>em</strong> um<br />
arquivo VRML principal. O arquivo de montag<strong>em</strong> da associação comercial<br />
pode ser encontrado <strong>em</strong> http://www.jaraguavirtual.ufal.br/associacao/<br />
AssociacaoComercial.wrl.<br />
7. Inserindo objetos virtuais compl<strong>em</strong>entares nos el<strong>em</strong>entos primitivos do modelo<br />
virtual. Por fim são inseridos os objetos compl<strong>em</strong>entares que, no caso da<br />
associação comercial, são colunas, quadros, mesas e escadas internas. Os códigos<br />
de inserção estão presentes no arquivo de montag<strong>em</strong> citado na diretriz anterior. Os<br />
códigos individuais dos objetos virtuais compl<strong>em</strong>entares pod<strong>em</strong> ser encontrados<br />
<strong>em</strong> http://www.jaraguavirtual.ufal.br/associacao/objetos/objetos.<br />
html.<br />
Após a aplicação das diretrizes, t<strong>em</strong>-se concluída a construção virtual da<br />
Associação Comercial de Maceió. Na Figura 10 apresenta-se o prédio da associação<br />
comercial e a sua construção virtual correspondente, vistos de um mesmo ângulo.<br />
Figura 10: (a) Associação Comercial de Maceió (b) Modelag<strong>em</strong> virtual VRML utilizando as<br />
diretrizes propostas<br />
5. Considerações finais<br />
Neste artigo apresenta-se um conjunto de diretrizes <strong>para</strong> a construção de edifícios virtuais.<br />
Tais diretrizes são fundamentadas <strong>em</strong> conceitos do desenvolvimento baseado <strong>em</strong> componentes,<br />
visando maximizar a reutilização e diminuir o t<strong>em</strong>po <strong>em</strong>pregado na construção<br />
de edifícios virtuais. Com o auxílio das diretrizes é possível definir uma base <strong>para</strong> a<br />
montag<strong>em</strong> de componentes, os quais são representados por estruturas <strong>em</strong> VRML. Os<br />
componentes construídos pod<strong>em</strong> ser reutilizados <strong>em</strong> outras construções virtuais, com pequenas<br />
alterações no código VRML. O posicionamento dos componentes é gerenciado<br />
por arcabouços, os quais também são definido com auxílio das diretrizes. Sendo assim, o<br />
mínimo acoplamento entre os componentes garante um projeto de edifício virtual flexível,<br />
possibilitando alterações s<strong>em</strong> grandes modificações no código.<br />
Um ex<strong>em</strong>plo de construção virtual referente ao prédio histórico da Associação<br />
Comercial de Maceió é apresentado <strong>para</strong> ilustrar a utilização das diretrizes propostas.<br />
Como perspectiva futura, pretende-se aplicar as diretrizes definidas <strong>para</strong> a construção de
outros edifícios virtuais, a fim de refiná-las e, eventualmente, adicionar novas diretrizes<br />
ao conjunto proposto neste artigo.<br />
Referências<br />
Abawi, D. F. and Reinhold, S. (2001). XML-based 3D Components.<br />
http://www.agc.fhg.de/agc/publication/pdf/Silvan Abstract%20(english).pdf - Acessado<br />
<strong>em</strong> 26/08/2004.<br />
Amann, S., Streit, C., and Bieri, H. (1997). BOOGA: A Component-Oriented Framework<br />
for Computer Graphics. In GraphiCon ’97, pages 193–200, Moscou.<br />
Bachman, F. (2000). Technical concepts of component-based software engineering. Technical<br />
report, Carnegie Mellon - Software Engeneering Institute.<br />
Dachselt, R. (2001). Contigra - Towards a Document-based Approach to 3D Components.<br />
In Proceedings of the Workshop on Structured Design of Virtual Environments and 3D-<br />
Components of the ACM Web3D 2001 Symposium, Paderborn, Germany.<br />
Doerner, R. and Grimm, P. (2001). Building 3D Applications with 3D Components and<br />
3D Frameworks. In Proceedings of the Workshop on Structured Design of Virtual<br />
Environments and 3D-Components of the ACM Web3D 2001 Symposium, Paderborn,<br />
Germany.<br />
Frery, A. C., Kelner, J., Moreira, J., and Teichrieb, V. (2002). Satisfaction through <strong>em</strong>pathy<br />
and orientation in three-dimensional worlds. CyberPsychology & Behavior,<br />
5(5):451–459.<br />
Goldstein, B. A. (2000). Tand<strong>em</strong>: A Component-based Framework for Interactive, Collaborative<br />
Virtual Reality. Master’s thesis, University of Illinois, Chicago, EUA.<br />
Haller, M. (2001). A Component Oriented Design for a VR Based Application. In<br />
Proceedings of the Workshop on Structured Design of Virtual Environments and 3D-<br />
Components of the ACM Web3D 2001 Symposium, Paderborn, Germany.<br />
Hein<strong>em</strong>an, G. T. and Councill, W. T. (2001). Component Based Software Engineering:<br />
Putting the Pieces Together. Addison-Wesley.<br />
Horn, D. T. (1991). Electronic Components: A Complete Reference for Project Builders.<br />
McGraw-Hill/TAB Electronics.<br />
International Organization for Standardization (1998). ISO/IEC 14772-1:1998: Information<br />
technology — Computer graphics and image processing — The Virtual Reality<br />
Modeling Language — Part 1: Functional specification and UTF-8 encoding.<br />
Merritt, F. S. (2003). Standard Handbook for Civil Engineers. McGraw-Hill Professional.<br />
Seiler, C. (2001). A Component Based Approach for Molecular Modeling Applications.<br />
In Proceedings of the Workshop on Structured Design of Virtual Environments and<br />
3D-Components of the ACM Web3D 2001 Symposium, Paderborn, Germany.<br />
Sun Microsyst<strong>em</strong>s (2004a). Java 3D API. http://java.sun.com/products/java-media/3D/ -<br />
Acessado <strong>em</strong> 26/08/2004.<br />
Sun Microsyst<strong>em</strong>s (2004b). Javabeans. http://java.sun.com/products/javabeans/ - Acessado<br />
<strong>em</strong> 26/08/2004.<br />
Szyperski, C. (2002). Component Software. Addison-Wesley.<br />
W3C (2004). Extensible markup language. http://www.w3.org/XML/ - Acessado <strong>em</strong><br />
26/08/2004.