16.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!