Arquitetura para Realidade Virtual distribuída com Física Simulada e agentes autônomos  
 
 
    Introdução: 
     
    Os avanços contínuos em computação criam novas expectativas para a simulação e modelagem de mundos virtuais. Neste projeto se estuda a implantação de um mundo físico simulado, habitado por agentes autônomos e acessível a diversos usuários através da Internet. 
    A animação, com física de partículas é utilizada para termos movimentos e comportamentos mais naturais possíveis. Atualmente, existem diversas investigações que utilizam esta forma de animação. Neste trabalho, o mundo virtual será distribuido e colaborativo, para diversos usuários, através da Internet. Assim, se caracteriza como um caso de Realidade Virtual distribuída. 
    A arquitetura ora utilizada é baseada em partição do mundo em regiões, cada uma delas controlada por um servidor, formando um esquema de multi-servidor. Aqui, serão utilizados agentes autônomos situados num mundo físico simulado. 
     
    Realidade Virtual Distribuída: 
     
    Este termo se refere a um mundo simulado que não ocorre unicamente em um computador, mas, em muitos ao mesmo tempo. Tais computadores estão conectados em rede e os usuários são capazes de interagir em tempo real, compartilhando este mesmo mundo virtual. 
     
    DIS:
     
    A Simulação Distribuída Interativa é um protocolo estandarte para Realidade Virtual Distribuída, utilizado, entre outros, pelo Dpto. de Ciência de Computação da Naval Posgraduate School. Nesta arquitetura não há um servidor central, há um modelo descentralizado onde cada máquina controla e manuseia algumas entidades. Aqui, o conceito de mensagens trocadas entre as máquinas, que executam simulações completas esta ligado ao conceito de dead-reckoning - onde informações de posição e de velocidade são enviadas para outras máquinas. E há ainda mensagens enviadas para sinalizar que se está vivo. 
     
    TBAG:
     
    TBAG, desenvolvido pela Sun Microsystems, é um paradigma de programação gráfica e uma ferramenta interativa para desenhar aplicações gráficas em 3D. O que nos interessa do TBAG:
    - oferece transparência para redes distribuídas;
    - permite colaboração entre vários usuários;
    - manuseia facilmente a física de partículas.
     
    VRML: 
     
    VMRL é uma linguagem para descrever mundos virtuais em redes - Internet. VRML 2.0 apresenta vantagens importantes para este trabalho: 
    - permite trabalhos com Java;
    - permite interação com applets em Java para a mesma tela;
    - permite aplicações gráficas 3D interativas multiusuário, através da rede.
     
    JAVA: 
     
    Java é uma linguagem de programação simples, robusta e orientada a objetos, independente de plataforma. Tem bibliotecas para trabalhar com protocolo TCP/IP, é mais dinâmica que C ou C++ e é muito adaptativa. 
     
    Proposta deste trabalho: 
     
     A análise de diversos utilitários e linguagens de programação pode ser interminável, mas, este trabalho usa uma combinação de Java e VRML para animação em 3D. A seguir são discutidas algumas formas de distribuição e comunicação para o mundo virtual proposto. 
     
    Projeto do sistema: 
     
    Para o projeto, se discute: 
    - projeto de arquitetura para a distribuição do mundo físico simulado;
    - planejamento do sistema;
    - comunicação;
    - interface com o usuário.
     
    i - Projeto da arquitetura para a distribuição de um Mundo Físico Simulado: 
     
    Análises levadas em conta: 
     
    1 - modelo centralizado: 
     
    Uma estação de trabalho tem o controle da animação do mundo físico e distribui a informação para as demais, em uma comunicação do tipo broadcast
    Vantagem: consistência;
    Desvantagem: concentração da informação numa estação.
     
    2- Modelo totalmente distribuído e descentralizado: 
     
    Cada máquina tem uma cópia do mundo físico e ao efetuar qualquer modificação, notifica as demais.
     
    Vantagem: não há servidor central;
    Desvantagem: para manutenção da consistência, é necessária a troca de mensagens. Boa opção quando se tem um grande número de usuários e de mundos que mudam constantemente.
     
    3- Modelo parcialmente distribuído: 
     
    O mundo se divide em regiões e há várias estações de trabalho funcionando como servidoras das regiões. Um grande desafio é como particionar este mundo, quantas regiões, como manuseá-las, quanto de cálculo estará envolvido com cada região. A comunicação entre regiões depende da informação que cada uma manuseia.
     
    Vantagem: não há um servidor central, mas, diversos servidores - é uma solução de compromisso entre as duas anteriores. 
    Desvantagem: protocolo mais complexo.
     
    ii - Planejamento: 
     
    Utilizando um multi-servidor, composto por vários servidores de regiões, cada servidor conterá toda a informação sobre a animação, mas, por seções. As informações que se tem por regiões são:
    - nome do usuáiro;
    - visor: para observar o ângulo de visão de cada usuário, veja a figura abaixo;
    - número de agentes que o usuário tem: cada vez que o usuário entra no sistema, agentes são registrados com o número do usuário e servirão de base.
    As informações que o usuário deve conhecer são:
    - quantos agentes ele possui;
    - quantos agentes existem no total;
    - que agentes ele verá.
     
    iii - Comunicação: 
     
    A animação ocorre em dois sentidos: no multi-servidor e na máquina do usuário. A comunicação que se estabele é do tipo multicast, com o dead reckoning modificado. Por problemas típicos de redes, pode existir uma diferença entre dados do servidor e do usuário e para corrigir tais diferenças, a simulação deve ser a mesma para todos os usuários, os dados que têm preferência são os dados dos servidores de regiões. Para a atualização dos dados, utiliza-se uma modificação do algoritmo de dead reckoning. Se a comunicação for unicamente multicast, podemos ter problemas com o número de mensagens. Por outro lado, a simples aplicação do dead reckoning sem modificações, leva a informações do tipo posição e velocidade do agente. Para física simulada, precisamos também de aceleração e forças que afetam o agente.
     
    dead reckoning modificado: 
     
    No algoritmo original, mensagens são trocadas quando existe uma diferença considerável entre os valores reais e os valores calculados e no DIS, contamos com um heartbeat que consiste em enviar, por exemplo, a cada 5s, uma atualização para os usuários. Em ambos os casos, contamos com corretores de posição dos agentes, caso existam diferenças: 
     
    Uma primeira modificação no algoritmo decorre do fato de que estamos utilizando forças que atuam sobre um dos agentes, além da posição e velocidade. Assim, se a diferença entre os dados da simulação local e os recebidos do servidor de regiões for muito grande, podemos aplicar uma força maior no agente, de tal forma que ao final das contas, temos a posição correta, sem saltos perceptíveis para o usuário.
    Informações trocadas:
    a) Usuário para servidor de regiões: 
    - aviso de permanência em rede;
    - número de agentes que lhe pertencem;
    - posição física.
    b) Do servidor de regiões para o usuário:
    - numero de agentes que o mesmo pode ver;
    - dead reckoning modificado - posição, velocidade, forças.
    Temos que fazer uma análise mais profunda: o cálculo de física das partículas e os comportamentos dos agentes requerem muito tempo de cômputo. Assim, uma possibilidade de realizar os cálculos é a utilização dos servidores de regiões, mas, haveria um aumento muito grande da troca de mensagens entre os usuários. De outra forma, poderia, cada usuário, efetuar todos os cálculos dos agentes... mas, não haveria consistência.
    Para tanto, se propõe:
    - realizar os cálculos nos servidores de regiões, com detalhes - simulação mais detalhada  e nas máquinas dos usuários, com menos detalhes;
    - fazer uma comparação a cada tempo. Se existirem diferenças, utiliza-se uma versão do servidor de regiões para fazer uma consistência dos dados.
     
    Processos:
     
    O sistema conta com 3 tipos de processos:
     
    1  - processo agente: manuseia todos os dados relacionados com os agentes, como região que corresponde, sua posição, velocidade, seu comportamento;
    2 - processo região: contém tudo o que se relaciona com regiões, como os agentes estão dentro dela, que usuários, quais são as regiões visíveis;
    3 - processo visor: contém a posição do mesmo, quer dizer, a posição em que se encontra.
    Associa-se a estes processos um arquivo de visores que conterá a lista de todos os usuários e suas direções. Quando um novo usuário entra no sistema, se abre o arquivo, inicializa-se alguns processos, que por sua vez, dão início a outros processos. Na inicialização, o usuário não deve esperar mais agentes, só contará com aqueles que agrega. Os usuários que vêm depois, devem saber que existem outros usuários em outras partes do mundo que se encontram no mesmo programa - os agentes dos demais usuários estão presentes.
     
     
    Resultados parciais e trabalhos futuros:
     
    Conclui-se pela utilização do VRML 2.0 e Java, devido às múltiplas vantagens,  pela implementação de uma versão de mundo distribuído em regiões, agentes autônomos. Há intenção de implementação total da arquitetura proposta, de forma a estender este trabalho a qualquer área, através de modificações simples nos itens básicos. Uma das teses paralelas a esta é agregar visão ao reconhecimento.