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

-
-
-
|