dis-java e opengl para ambientes interativos distribuídos ... · padrão para descrição de...

14
DIS-Java e OpenGL para Ambientes Interativos Distribuídos em Rede Leonardo Willrich (FURB) [email protected] Dalton Solano dos Reis (FURB) [email protected] Paulo César Rodacki Gomes (FURB) [email protected] Vandeir Eduardo (FURB) [email protected] Resumo. A API DIS-Java-VRML é uma das arquiteturas mais promissoras para padronização de mundos virtuais interativos, entretanto sua utilização fica vinculada ao uso da linguagem de descrição VRML. O presente artigo propõe o uso de uma camada OpenGL, implementada em Object Pascal, sobre a camada DIS-Java. A comunicação entre estas duas camadas é feita através do CORBA. A viabilidade desta proposta é apresentada através da modelagem e implementação de um nível simples de mundo virtual interativo multi-usuários. Palavras-chave: Mundos virtuais distribuídos, DIS-Java-VRML, OpenGL, CORBA. 1 Introdução Um ambiente virtual distribuído em rede é um sistema onde os participantes interagem uns com os outros em tempo real, mesmo estando geograficamente distantes. Tais sistemas possuem representações tridimensionais do ambiente em cada estação, onde também ocorre a interação de um usuário com o mundo virtual. Geralmente, esses ambientes são caracterizados por terem três propriedades fundamentais: (1) espaço, tempo e presença compartilhados; (2) comunicação entre participantes e (3) interação com o ambiente. As pesquisas em ambientes virtuais distribuídos em redes ainda possuem muitos tópicos em aberto, sobretudo em relação a padronização, gerência de estado compartilhado, desempenho e consistência (Singhal, 1999). No presente trabalho, a sigla AV-Redes será usada no lugar da expressão “ambientes virtuais distribuídos em rede”. Esta sigla está mais próxima da denominação mais precisa em inglês (NetVE, Networked Virtual Environment) e enfatiza a natureza dos processos sobre redes de computadores (Szwarcman, 2002). Esta definição reforça sua diferença em relação ao conceito mais amplo de sistemas distribuídos, onde aplicações são decompostas em diferentes serviços que rodam em máquinas distintas ou processos separados.

Upload: others

Post on 23-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

DIS-Java e OpenGL para Ambientes Interativos Distribuídos em Rede

Leonardo Willrich (FURB) [email protected]

Dalton Solano dos Reis (FURB) [email protected]

Paulo César Rodacki Gomes (FURB) [email protected]

Vandeir Eduardo (FURB) [email protected]

Resumo. A API DIS-Java-VRML é uma das arquiteturas mais promissoras para padronização de mundos virtuais interativos, entretanto sua utilização fica vinculada ao uso da linguagem de descrição VRML. O presente artigo propõe o uso de uma camada OpenGL, implementada em Object Pascal, sobre a camada DIS-Java. A comunicação entre estas duas camadas é feita através do CORBA. A viabilidade desta proposta é apresentada através da modelagem e implementação de um nível simples de mundo virtual interativo multi-usuários.

Palavras-chave: Mundos virtuais distribuídos, DIS-Java-VRML, OpenGL, CORBA.

1 Introdução Um ambiente virtual distribuído em rede é um sistema onde os participantes

interagem uns com os outros em tempo real, mesmo estando geograficamente distantes. Tais sistemas possuem representações tridimensionais do ambiente em cada estação, onde também ocorre a interação de um usuário com o mundo virtual. Geralmente, esses ambientes são caracterizados por terem três propriedades fundamentais: (1) espaço, tempo e presença compartilhados; (2) comunicação entre participantes e (3) interação com o ambiente. As pesquisas em ambientes virtuais distribuídos em redes ainda possuem muitos tópicos em aberto, sobretudo em relação a padronização, gerência de estado compartilhado, desempenho e consistência (Singhal, 1999).

No presente trabalho, a sigla AV-Redes será usada no lugar da expressão “ambientes virtuais distribuídos em rede”. Esta sigla está mais próxima da denominação mais precisa em inglês (NetVE, Networked Virtual Environment) e enfatiza a natureza dos processos sobre redes de computadores (Szwarcman, 2002). Esta definição reforça sua diferença em relação ao conceito mais amplo de sistemas distribuídos, onde aplicações são decompostas em diferentes serviços que rodam em máquinas distintas ou processos separados.

Page 2: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

Dentre as tecnologias disponíveis para implementação de AV-Redes, encontra-se a arquitetura DIS-Java-VRML (Web3D, 2002), que reúne o protocolo DIS, que provê comunicação a respeito do estado de entidades que compõem um mundo virtual compartilhado; o Java, uma linguagem multi-plataforma que já nasceu com a visão de redes e objetos distribuídos; e o VRML, como linguagem padrão para descrição de ambientes virtuais 3D.

Para representação 3D dos mundos virtuais em um AV-Rede, este artigo propõe o uso de uma camada OpenGL (Silicon, 2001), implementada em Object Pascal, sobre uma camada DIS-Java. A comunicação entre Java e Object Pascal é feita por intermédio de uma interface CORBA. O padrão Common Object Request Broker Architecture (CORBA) do grupo Object Management Group (OMG) propõe uma arquitetura de software para suportar objetos distribuídos e garantir a interoperabilidade entre diferentes plataformas de hardware e sistemas operacionais. Esta capacidade é obtida através do uso de uma interface comum e um mecanismo de passagem de informações implementado em diferentes linguagens de programação, entre elas o Object Pascal e o Java (Siegel, 1996).

A próxima seção deste artigo apresenta uma breve discussão sobre os conceitos básicos dos AV-Redes. Na seção 3 são apresentados os principais componentes da arquitetura proposta pelos autores para a implementação de um AV-Redes. A viabilidade da arquitetura proposta é ilustrada na seção 4 através da apresentação da implementação de um protótipo. Por fim, a seção 5 apresenta as conclusões e sugestões para trabalhos futuros.

2 AV-Redes As primeiras experiências com ambientes virtuais distribuídos sugiram a partir

de aplicações com objetivos de simulações militares e também jogos multi-usuários. As simulações militares geralmente eram desenvolvidas por universidades dos Estados Unidas para o Departamento de Defesa, já as outras aplicações eram desenvolvidas por industrias que tinham interesses, principalmente em jogos multiusuários.

Segundo Eduardo (2001), entre os primeiros projetos de simulação desenvolvidos se destaca o Simulator Network (SIMNET). O projeto SIMNET deu origem à especificação da arquitetura de software DIS (Distributed Interactive Simulation), que tornou-se padrão IEEE (Shaw, 1993). Este padrão define o protocolo de rede que determina os diversos formatos de pacotes de dados necessários ao gerenciamento do sistema distribuído. No DIS, os pacotes mais utilizados são os que correspondem às mensagens de atualização e aqueles que indicam colisão, detonação e disparos.

Outro projeto interessante, desenvolvido pela Naval Postgraduate School, é o NPSNET. Este projeto também está relacionado a ambientes virtuais para simulação militar. Sua principal característica é interconectar vários usuários, permitindo desta forma que a simulação aconteça com usuários de qualquer parte

Page 3: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

do mundo. Este trabalho foi apresentado pela primeira vez na conferência de 1991 da Siggraph (Macedônia, 1995).

2.1 Aspectos gerais de comunicação de AV-Redes Segundo Gossweiler et al (1994), existem basicamente dois modelos de

distribuição para o desenvolvimento de um AV-Redes, que são o modelo centralizado e o modelo distribuído. No modelo centralizado existe um computador principal que tem a função de receber mensagens variadas de um usuário qualquer e repassá-las aos demais usuários conectados. Neste modelo, um computador principal recebe todas as mensagens provenientes dos usuários conectados ao ambiente virtual e devolve aos usuários mensagens referentes a alterações no ambiente. Este tipo de modelo pode apresentar problemas de escalabilidade devido à sobrecarga de mensagens no computador principal. A escalabilidade neste contexto se refere à capacidade do ambiente virtual suportar um número significativo de usuários.

Já o modelo distribuído pode ser visto como uma alternativa para o problema da escalabilidade do modelo centralizado. Neste modelo, cada usuário mantém uma cópia local do ambiente virtual, realizando, ele mesmo as tarefas relativas ao processamento gráfico da representação do ambiente virtual. Além disso, cada usuário é responsável pelo controle e gerenciamento da comunicação com os demais usuários. Apesar do modelo distribuído resolver o problema do congestionamento de mensagens em um único computador, a quantidade de mensagens e conexões na rede pode ser ainda muito grande. A figura 1 ilustra os dois modelos e demonstra a diferença entre a comunicação em cada um deles.

Figura 1: Modelos de comunicação em um ambientes virtuais distribuído

Existem três técnicas para gerenciamento de espaço compartilhado, necessário para que os usuários tenham a sensação de estarem compartilhando o mesmo mundo em tempo real. São elas: (1) repositório centralizado; (2) notificação freqüente de atualização de estado e (3) dead reckoning. A primeira técnica visa garantir a consistência global do ambiente através do uso de um repósitório

Page 4: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

centralizado contendo o estado atual do ambiente, porém o uso desta técnica geralmente acarreta na degradação de desmpenho do ambiente. Para garantir um nível satisfatório de desempenho, as outras duas técnicas permitem pequenas inconsistências. Na segunda técnica, os usuários trocam mensagens sobre atualizações do mundo virtual, enquanto que na terceira técnica, a troca de mensagens sobre atualização de estado é menos freqüente, e as aplicações remotas prevêem estados intermediários do mundo virtual baseado na última atualização transmitida (Szwarcman, 1999).

A escolha mais adequada do modelo de comunicação e da técnica de gerência de estado compartilhado deve levar em consideração os seguintes aspectos dos AV-Redes: a utilização da largura de banda (bandwidth), a latência (latency) e a confiabilidade ou garantia (reability) de que as mensagens serão recebidas por todos os usuários do AVD. A largura de banda de uma rede pode ser definida como a capacidade máxima de se transferir uma quantidade determinada de informações num determinado período, geralmente expressa em bits por segundo (bps). A noção de latência corresponde ao tempo decorrido entre a aplicação de um estímulo e a resposta provocada pelo estímulo. No contexto das redes de computadores, pode-se dizer que latência é o período de tempo decorrido entre o envio de um pacote de dados e o seu recebimento no computador de destino.

A confiabilidade está relacionada à garantia de que uma mensagem enviada por um usuário seja recebida por todos os demais usuários. Isto implica em fazer uso de protocolos de comunicação orientados a conexão, tais como o Transport Control Protocol (TCP), que utilizam mecanismos de confirmação de recebimento e recuperação quando ocorrem erros ou algum pacote não é recebido.

Além do modelo de distribuição outro aspecto da comunicação de AV-Redes refere-se à forma pela qual os usuários transmitem suas mensagens. Segundo Eduardo (2001) e Stytz (1996), há três formas básicas: unicast, broadcast e multicast. Na comunicação do tipo unicast, também conhecida como ponto a ponto (point-to-point), modificações no ambiente virtual feitas por um usuário geram mensagens para todos os demais usuários. Este tipo de comunicação possui a vantagem de facilitar a sincronização de diferentes instâncias do mundo virtual, entretanto o número de conexões estabelecidas e mensagens geradas pode ser muito alto quando o númeno de usuários tende a aumentar (Macedonia, 1997).

No método broadcast, cada atualização do mundo virtual gera somente uma mensagem e, através de um canal comum para os outros usuários, todos os usuários a recebem. Uma das desvantagens deste método é que, se for usado o protocolo UDP, as mensagens ficam confinadas a uma rede local, inviabilizando seu uso em WANs (Gossweiler et al, 1994).

Conforme Brutzman et al (1995), no multicast (também chamado de IP multicast) a transmissão de datagramas IP’s pode ser feita para um número ilimitado de hosts compatíveis com multicast, os quais estão conectados a internet através de roteadores também compatíveis com multicast.

Page 5: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

3 Componentes da Arquitetura Proposta A seguir, são mostrados os principais componentes da arquitetura proposta

para a implementação de um AV-Redes.

3.1 Protocolo DIS e a API DIS-Java-VRML Segundo Macedonia (1995), o protocolo DIS é um grupo de padrões, definido

pelo Departamento de Defesa dos Estados Unidos e indústrias, preocupados em determinar uma arquitetura de comunicação comum, definindo “o formato e o conteúdo dos dados comunicados; informações a respeito dos objetos do mundo virtual e sua interação; gerenciamento da simulação; medidas de performance; comunicações de rádio; segurança; fidelidade; controle de exercícios, etc”. O protocolo de simulação utilizado no DIS consiste em um determinado número de unidades de dados de protocolo (Protocol Data Units, ou PDU’s) responsáveis por informar acerca dos estados dos objetos do ambiente virtual ou da ocorrência de eventos. Um tipo essencial de PDU é o Entity State PDU (ESPDU), utilizado para enviar informações sobre o estado atual de um objeto no ambiente virtual, incluindo informações como sua posição, orientação, velocidade e aparência.

Baseado na especificação do protocolo DIS, o grupo de trabalho DIS-Java-VRML, integrante do consórcio Web3D (Web3D, 2002) desenvolveu uma API em Java, batizada com o mesmo nome do grupo. O DIS-JAVA-VRML é uma API de código fonte aberto e gratuita sob os termos da General Public License (GNU), escrita em JAVA e interage com DIS e VRML. Nela estão contidas classes que implementam o protocolo DIS, descrito anteriormente, bem como classes que controlam a comunicação com a rede e com os cenários feitos em VRML. O VRML por sua vez é utilizado para a modelagem e renderização do ambiente virtual. Maiores informações sobre o protocolo DIS podem ser encontradas no padrão IEEE 1278-1993, que desde a sua primeira versão de 1993, já passou por uma revisão resultando na IEEE 1278.1-1995 (IEEE, 1995a) e também em padrões adicionais da mesma família: IEEE 1278.2-1995 (IEEE, 1995b), IEEE 1278.3-1996 (IEEE, 1996), IEEE 1278.4-1997 (IEEE, 1997) e IEEE 1278.1a-1998 (IEEE, 1998). Já para obter mais informações sobre a API DIS-Java-VRML é possível consultar em Web3D (2002).

3.2 OpenGL OpenGL é uma biblioteca gráfica desenvolvida inicialmente para plataforma

Silicon Graphics e depois portada para a maior parte das plataformas de hardware (Silicon, 2001).

Segundo Wright (2000), uma implementação de OpenGL pode ser uma biblioteca de software que cria imagens tridimensionais em resposta a chamadas de funções OpenGL ou um controlador de dispositivo (normalmente uma placa de vídeo) que faz o mesmo. Ou seja, existem dois tipos de implementação de OpenGL, uma baseada em hardware, outra em software. A implementação OpenGL que acompanha os sistemas operacionais Windows NT 3.1 em diante, o

Page 6: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

Windows 95 em diante e o Windows 2000 é uma típica implementação de software. Quando se instala uma placa de vídeo aceleradora 3D que implemente no seu controlador (driver) a biblioteca OpenGL, esta é uma implementação dita em hardware.

As funções da OpenGL, são desenvolvidas para criar gráficos em 2D e 3D. Ela inclui recursos de modelagem 3D, transformações, cores, iluminação, mapeamento de texturas, curvas e superfícies non-uniform rational B-spline (NURBS), efeitos de neblina, e outros (Silicon, 2001).

Em relação à implementação de AV-Redes no contexto deste trabalho, os recursos da OpenGL mais relevantes são os recursos de modelagem 3D, transformações geométricas, incluindo transformações de perspectiva, e aplicação de mapeamento de texturas e efeitos de iluminação.

A arquitetura proposta neste artigo substitui a camada do VRML da API do DIS-Java-VRML pela OpenGL. Tendo em vista que a linguagem Object Pascal foi utilizada para a implementação da representação do mundo virtual em OpenGL, a arquitetura proposta utiliza o CORBA para prover a comunicação entre as classes do DIS-Java-VRML, implementadas na linguagem Java, e o Object Pascal.

3.3 Objetos Distribuídos e o Padrão CORBA Segundo Mainetti Junior (1997), a origem dos Objetos Distribuídos (OD) se

deu através da união de duas tecnologias, a orientação a objetos e as aplicações distribuídas. Conforme Jacobsen (2000), objetos distribuídos são estruturas que executam uma determinada tarefa. Sua principal característica refere-se à sua localização, eles podem ser abrigados todos em uma única máquina ou distribuídos em máquinas distintas de uma rede de computadores LAN, WAN, ou até mesmo na internet. Em conjunto, esses objetos são capazes de executar funções para um sistema distribuído. Os padrões de objetos distribuídos mais conhecidos são o Distributed Componet Obect Mode (DCOM) e o Common Object Resquest Broker Architecture (CORBA).

O padrão DCOM foi desenvolvido pela Microsoft, que já há alguns anos vem promovendo o Object Linking and Embedding (OLE) como uma de suas principais tecnologias para desenvolvimento e integração de aplicações. A camada base para o OLE é conhecida como Component Object Model (COM). O uso de DCOM ainda se limita ao ambiente Windows (Mainetti Junior, 1997).

3.4 Padrão CORBA Segundo Mainetti Junior (1997), CORBA é um padrão que define como

objetos devem interoperar em um ambiente distribuído. Uma das características mais importantes deste padrão é a existência de uma linguagem para a definição de interfaces, chamada de Interface Definition Language (IDL), que é uma linguagem, também padronizada pela OMG, independente de arquitetura, que permite se especificar as interfaces dos objetos distribuídos de uma forma que todos possam requisitar serviços a eles.

Page 7: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

A arquitetura CORBA define e implementa a estrutura necessária à comunicação entre aplicações distribuídas em diferentes plataformas, sistemas operacionais e linguagens de programação. Com CORBA, uma aplicação cliente não precisa conhecer os detalhes de implementação do objeto que obterá de um servidor. Esta capacidade é fornecida pela utilização de uma interface comum, compartilhada para a passagem de informações (Geyer, 2000).

O elemento chave da tecnologia CORBA é o Object Request Broker (ORB), que gerencia o acesso dos objetos em uma aplicação, comunica estes objetos com outros, monitora suas funções, descobre suas localizações e controla a comunicação com outros ORB´s. Basicamente, o ORB é o principal mecanismo para simplificar o desenvolvimento de aplicações padrão CORBA. A simplificação é o resultado de três características: independência de localização e interoperabilidade entre plataformas e linguagens. Independência de localização significa que um ORB trata todos os objetos como se fossem locais, mesmo que estejam em sistemas remotos. Interoperabilidade entre plataformas significa que objetos criados em uma plataforma de hardware/software podem executar em qualquer outra plataforma que suporte CORBA (Siegel, 1996). Por fim, interoperabilidade entre linguagens significa que objetos escritos em uma linguagem podem interagir com aplicações escritas em outra linguagem, graças a IDL. A IDL é uma linguagem que define as interfaces dos objetos, mas não suas implementações. Os objetos podem ser escritos em qualquer linguagem tais como C, C++, Java ou Delphi. A figura 2 ilustra o papel da IDL e o ORB no padrão CORBA.

Figura 2: Mapeamento da IDL para as linguagens de programação e o papel do ORB

4 Desenvolvimento de um Protótipo Um protótipo de AV-Redes foi implementado a fim de demonstrar a

viabilidade da arquitetura proposta neste artigo. A figura 3 apresenta uma visão geral da estrutura do protótipo, composto por dois módulos. O módulo DISAgent consiste em uma aplicação, implementada em Java, utilizando a biblioteca DIS-Java-VRML. Esta aplicação é executada em segundo plano, sua função é enviar e

Page 8: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

receber PDUs através da rede. Conforme citado na seção 3.1, os PDUs são unidades de dados que informam os demais usuários do AV-Redes sobre mudanças no ambiente. A aplicação AVBroswer é responsável pela criação e exibição do ambiente virtual e pela interação dos usuários com este ambiente. Esta aplicação é implementada em Object Pascal, utilizando a biblioteca OpenGL. Estas duas aplicações se comunicam através do barramento CORBA, indicado pela sigla ORB (Object request Broker). Diferentes instâncias do AV-Redes podem ser executadas em diferentes máquinas, indicadas por “Estação 1” e “Estação 2” na figura 3. As atualizações de estado entre as instâncias são feitas diretamente entre os módulos DISAgent, utilizando-se o protocolo DIS em um modelo de comunicação distribuído, com troca de mensagens feita através de UDP broadcast.

ORB

AVBrowser IDL

DISAgent IDL

DISAgent IDL

AVBrowser IDL

Repositório de Interfaces

Estação 1 Estação 2

DIS

Figura 3: Estrutura geral do protótipo A comunicação entre o barramento CORBA e os módulos DISAgent e

AVBrowser é feita através da interface de chamadas dinâmicas do CORBA (DII – Dynamic Invocation Interface) (Siegel, 1996). Para tal, é necessário que as definições das interfaces dos objetos CORBA, representada pela sigla “IDL” na figura 3, seja fornecida por um servidor CORBA padrão, chamado Repositório de Interfaces. A especificação do protótipo foi realizada através do diagrama de classes exibido na figura 4. Este diagrama reúne as classes dos módulos DISAgent e AVBrowser. As próximas seções apresentam as principais classes destes dois módulos.

Page 9: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

PersonagemBoneco

DesenharPersonagem( )

PersonagemCubo

DesenharPersonagem( )

PersonagemPiramide

DesenharPersonagem( )

PersonagemTriangulo

DesenharPersonagem( )

PersonagemCirculo

Circulo( )

PersonagemCone

DesenharPersonagem( )

PersonagemCilindro

DesenharPersonagem( )

1DIS

EnviarEstado( )CriarPersonagem( )ExcluirPersonagem( )

0

1

0

1 0

TratarMovimentosCenario

run( )setVivo( )EnviarEstadoPersonagem( )CriarPersonagem( )ExcluirPersonagem( )

1

InterfaceCorbaCenario

Inicializar( )CenarioEnviarEstado( )CenarioCriarPersonagem( )CenarioExcluirPersonagem( )Finalizar( )

10

1

00

1

0Teclado

Execute( )VerificarTeclas( )CriarTeclado( )

1

0

HeartBeat

Execute( )Atualizar( )CriarHeartBeat( )

10 InterfaceCorbaDisCenario

DISEnviarEstadoPersonagem( )DISCriarPersonagem( )DISExcluirPersonagem( )

1 0

1OpenGL

CriaOpenGL( )DestroiOpenGL( )Carregar( )TrocarBuffer( )Limpar( )Redesenhar( )AlterouTamanhoDaJanela( )

0

0..*

Personagem

Create( )Destroy( )Desenhar( )DesenharPersonagem( )

0

1

InfoAVD

setID( )setX( )setY( )setZ( )setRotCab( )setRotCorpo( )AdicionaPersonagem( )ExcluirPersonagem( )AtualizaPersonagem( )

0

Cenario

DesenharCenario( )DesenharPersonagens( )CalculaY( )CriarCenario( )DestroirCenario( )Desenhar( )MoveuParaFrente( )MoveuParaTras( )MoveuParaEsquerda( )MoveuParaDireita( )OlhouparaCima( )OlhouParaBaixo( )AdicionarPersonagem( )ExcluirPersonagem( )AtualizarPersonagem( )AtualizaCenarioDistribuido( )InfoShow( )

1

0

1

0

1

0

10

1

0

0..*

0

1

0

Figura 4: Diagrama de classes do protótipo

4.1 Aplicação AVBrowser A principal classe desta aplicação é a classe Cenario. Esta classe é

responsável pelo gerenciamento do cenário 3D do ambiente virtual. Ela implementa os métodos responsáveis pela movimentação do usuário, que são MoveuParaFrente(), MoveuParaTras(), MoveuParaEsquerda(), MoveuParaDireita(), OlhouParaCima() e OlhouParaBaixo(). Os métodos responsáveis pelo controle de personagens inseridos por outros usuários do AV-Redes também são implementados nesta classe, como por exemplo pode-se citar os métodos AdicionarPersonagem(), AtualizarPersonagem() e ExcluirPersonagem(). Esta classe também é responsável pela criação da interface com o usuário, desenhando o cenário e os personagens existentes. Para fazer o controle do cenário, cada usuário possui uma instância de um objeto desta classe.

A classe Personagem e suas sub-classes têm como função representar os demais usuários do AV-Redes. A classe Teclado faz a leitura e tratamento das teclas pressionadas pelo usuário, que comandam a movimentação dos personagens no ambiente. A classe HeartBeat implementa a técnica de HeartBeat, enviando

Page 10: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

de cinco em cinco segundos uma mensagem com o estado atual do usuário para os demais usuários. A classe OpenGL, encapsula os comandos da biblioteca gráfica OpenGL. A classe InfoAVD mostra informações do estado atual do usuário e dos demais usuários no AV-Redes. A comunicação entre este módulo e o barramento CORBA é feito pela InterfaceCorbaDisCenario. Esta classe envia a classe Cenario mensagens recebidas pela aplicação DISAgent e vice-versa. Esta classe é implementada de acordo com o padrão CORBA para objetos distribuídos. Assim, há uma descrição em IDL da interface entre esta classe e o CORBA.

4.2 Aplicação DISAgent A aplicação DISAgent implementa um agente de software que envia para

outras instâncias remotas de DISAgent PDU´s decorrentes de mensagens recebidas do módulo AVBrowser local. Estes PDU´s são enviados pela rede através do protocolo DIS. Além disso, este módulo faz o caminho inverso das mensagens, ou seja, recebe PDU´s provenientes de outros módulos DISAgent, e transmite via CORBA as respectivas mensagens para o módulo AVBrowser local.

Esta aplicação é composta pelas classes TratarMovimentoCenario e InterfaceCorbaCenario implementadas na linguagem Java. A primeira classe tem como função receber PDU´s de outros usuários, classificar estes PDU´s de acordo com seu tipo e, quando necessário, notificar o cenário sobre o recebimento do PDU. A principal função da segunda classe é receber, através do CORBA, mensagens da classe cenario da aplicação AVBrowser e enviar aos demais usuários o PDU correspondente.

A figura 5 apresenta a interface do protótipo de AV-Redes, onde são exibidas informações tais como a identificação do usuário, suas coordenadas X, Y e Z no ambiente virtual, a rotação de seu corpo e de sua cabeça. Na parte inferior da janela é exibida uma tabela com as informações dos outros usuários existentes no AV-Redes.

Figura 5: Interface do protótipo, janela de informações

Na figura 6, é exibida uma janela de visualização OpenGL do cenário 3D do ambiente virtual, onde pode-se ver a representação gráfica de um personagem

Page 11: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

comandado por um usuário remoto. A representação gráfica do usuário local não pode ser vista, pois a visualização local do ambiente é feita em primeira pessoa.

Figura 6: Interface do protótipo, janela de informações

5 Conclusões Este artigo propõe o uso de OpenGL, sobre uma camada DIS-Java-VRML

para a implementação de AV-Redes. A representação gráfica do ambiente virtual 3D é feita através de uma implementação da biblioteca OpenGL em Object Pascal. A comunicação entre Java e Object Pascal é feita através de um barramento CORBA.

Neste trabalho, a viabilidade da proposta é apresentada através da modelagem e implementação de um nível simples de AV-Redes. Não se trata de um trabalho completo, visto que não estão testadas situações especiais de interatividade em um AV-REDES mais complexo (tais como alteração de propriedades dos objetos e tratamento de colisão entre usuários). Como proposta de continuação da presente pesquisa, sugere-se o tratamento de outros tipos de PDU´s, tais como PDU´s de disparo, por exemplo. Ainda como sugestão de trabalhos futuros, aponta-se a necessidade de testes de desempenho, testes em WAN´s.

No presente trabalho, o protótipo roda em uma LAN Ethernet padrão 802.3 e existe um limite predeterminado para quatro usuários no ambiente. Os testes com o protótipo foram realizados em máquinas do tipo AMD K6 450 Mhz, com 128 Mb de memória RAM, com sistema operacional Windows 2000. Os resultados foram satisfatórios, entretanto com 4 usuários observou-se que o congestionamento da rede é relativamente alto devido ao uso de UDP broadcast. Para contornar este tipo de problema os autores sugerem a implementação de técnicas mais elaboradas de gerenciamento de estado compartilhado, tais como a técnica de Dead Reckoning.

Page 12: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

Referências bibliográficas BRUTZMAN, D. P. et al. Internetwork infrastructure requirements for virtual environments, Monterey: [s.n.], 1995. Disponível em: <ftp://taurus.cs.nps.navy.mil/pub/auv/brutzman/nii_2000.txt>. Acesso em: 12 nov. 2000. EDUARDO, Vandeir. Protótipo de um ambiente virtual distribuído multiusuário. 2001. 108f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. GEYER, Cláudio Fernado Resin. Usando Borland Delphi para imprlementar aplicações CORBA. Porto Alegre, 2000. Disponível em: <http://www.inf.ufrgs.br/procpar/disc/dsitec08/trabalhos/sem2000-1/cb_svd/>. Acesso em 09 jun. 2002. GOSSWEILER, R. et al. An introductory tutorial for developing multi-user virtual environments. Virginia: [s.n.], [1994]. Disponível em: <http://citeseer.nj.nec.com/gossweiler94introductory.html>. Acesso em: 09 jun. 2002. IEEE, Institute of Electrical and Electronics Engineers. IEEE Std 1278: Standard for information technology, protocols for distributed interactive simulation. [S.l], 1993. ______. IEEE Std 1278.1: Standard for distributed interactive simulation: application protocols. [S.l], 1995a. ______. IEEE Std 1278.1a: Standard for distributed interactive simulation: supplement to IEEE Std 1278.1-1995. [S.l], 1998. ______. IEEE Std 1278.2: Standard for distributed interactive simulation: communication services and profiles. [S.l], 1995b. ______. IEEE Std 1278.3: Recommended practice for distributed interactive simulation: exercise management and feedback. [S.l], 1996. ______. IEEE Std 1278.4: Trial-use recommended practice for distributed interactive simulation: verification, validation, and accreditation. [S.l], 1997. JACOBSEN, Douglas Thomas. Sistema de apoio ao coordenador do simulador de empresas virtual utilizando a tecnologia CORBA. 2000. 55f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. MACEDONIA, Michael. A network software architecture for large scale virtual environments. 1995. 200 p. Dissertação de doutorado (Doutor de filosofia em ciências da computação), Naval Postgraduate School, Monterey. MACEDONIA, Michael.; ZYDA, Michael. A Taxonomy for networked virtual environments. IEEE Multimedia, [S.l.], v. 4, n. 1, p. 48-56, jan./mar. 1997.

Page 13: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este

MAINETTI Junior, Sergio. Objetos Distribuídos, Curtiba, 1997. Disponível em: <http://www.visionnaire.com.br/downloads/artig-od.pdf>. Acesso em: 09 jun. 2002. SHAW, Chris.; GREEN, Mark. The MR toolkit peers package and experiment. In: IEEE Virtual Reality Annual International Symposium (VRAIS 93), Washington, p. 463-469, set. 1993. SIEGEL, J. CORBA Fundamentals and Programming. John Wiley & Sons, 1996. SINGHAL S.; ZYDA M. Networked virtual environments – design and implementation. New York: ACM Press, 1999. SILICON GRAPHICS INC. OpenGL - high performance 2D/3D graphics. [S.l.][2001?]. Disponível em: <http://www.opengl.org/>. Acesso em: 09 jun. 2002. STYTZ, M. R. Distributed virtual environments. IEEE computer graphics and applications, Los Alamitos, n. 3, p. 19-31, maio/jun. 1996. SZWARCMAN, Dilza.; FEIJÓ, Bruno.; COSTA, Mônica. A framework for networked emotional characters. [S.l.: s.n.], [1999]. Disponível em: <ftp://ftp.inf.puc-rio.br/pub/docs/techreports/99_23_szwarcman.pdf>. Acesso em: 02 mar. 2002. WEB3D, Web 3D Consortium. Distributed Interactive Simulation DIS-Java-VRML Working Group. [S.l.: s.n.], [2002]. Disponível em: <http://www.web3d.org/WorkingGroups/vrtp/dis-java-vrml/>. Acesso em: 09 jun. 2002. WRIGHT, Richard S, SWEET, Michael. OpenGL SuperBible. 2.ed. Indianopolis : Waite Group Press, c2000. xxiii, 696p.

Page 14: DIS-Java e OpenGL para Ambientes Interativos Distribuídos ... · padrão para descrição de ambientes virtuais 3D. Para representação 3D dos mundos virtuais em um AV-Rede, este