• Nenhum resultado encontrado

Luciene Cristina Alves Rinaldi, Mario M Kubo, Ildeberto Aparecido Rodello, Antonio Carlos Sementille, Romero Tori e José Remo Ferreira Brega

5.5. Desenvolvimento de AVDs

5.5.1. Aspectos Principais

Assim como qualquer outro AV, a criação de AVDs está bastante ligada com realismo visual e interação. Dessa forma, assuntos como modelagem gráfica tridimensional e interação homem-máquina constituem uma parte fundamental. Em especial na elaboração de um AVD destaca-se o suporte de comunicação em rede. Por meio de uma rede é fornecida a base para que unidades computacionais heterogêneas separadas fisicamente sejam unificadas para implementar um único ambiente virtual.

Além disso, os fatores adiante apresentados e comentados afetam, de alguma forma, o desempenho e/ou a complexidade de um AVD. A complexidade, por sua vez, também afeta o desempenho, prejudicando o realismo, na forma de atrasos ou lentidão.

Dessa forma, procura-se estabelecer um nível de complexidade que torne o AVD aceitável, tanto em realismo quanto em desempenho. Os fatores que devem ser levados em consideração para que isso ocorra são [Greenhalgh, 1996b]:

• Número de usuários

De acordo com a quantidade de usuários que o ambiente pode suportar de forma simultânea, os sistemas de RV podem ser classificados em monousuário (single user) ou multiusuários (multi-user).

Em um sistema monousuário é possível a existência de outros usuários que são, entretanto, somente meros espectadores, uma vez que a interação com e a navegação pelo ambiente somente são disponíveis a um único usuário.

Nota-se que os sistemas multiusuários são mais complexos e exige um poder maior de computação, relacionando-se, entre outros, a aspectos como gerenciamento desses usuários (login, segurança, etc.). Além disso, o número de tarefas que poderão ser executadas pelos usuários é outro fator de interferência.

• Número e tamanho dos mundos virtuais

Corresponde à quantidade de mundos que podem estar ativos no sistema. Em sistemas monousuário somente um mundo estará ativo por vez, facilitando o gerenciamento. Em

sistema multiusuário, por outro lado, vários mundos podem estar ativos, com usuários diferentes em diferentes mundos e ainda, diferentes partes de um mesmo mundo, de forma que a complexidade de gerenciamento aumenta principalmente no estabelecimento dos limites de onde termina ou começa um mundo (particionamento).

Além da quantidade, o tamanho dos mundos é um fator a ser considerado. Mundos menores podem apresentar desempenho melhor para os processos de carregar ou liberar mundos em relação aos mundos maiores.

• Interconexão dos mundos

A interconexão entre os mundos corresponde à forma como os diferentes mundos estão limitados e como os usuários ultrapassam esse limite. Como mencionado, um AVD pode estar replicado ou particionado.

No modelo replicado, o sistema preocupa-se tão somente em definir os limites entre os mundos e o portal de entrada. No modelo particionado, por sua vez, além dos limites, o sistema preocupa-se também, em localizar e carregar o mundo antecipadamente de forma que o usuário não perceba a mudança.

• Objetos presentes no mundo

Os objetos que compõem cada mundo também são fatores a serem discutidos em termos de quantidade, nível de detalhes e comportamento. Eles estão relacionados de forma que um equilíbrio contribui para o desempenho do sistema. A quantidade de objetos corresponde a quantos objetos estarão presentes na cena, de acordo com certo nível de detalhamento e um comportamento permitido.

Objetos mais próximos necessitam de um nível de detalhes maiores, implicando em um número maior de polígonos. Tal nível, entretanto, não deve ser mantido para o mesmo objeto, quando a uma distância maior, uma vez que o realismo tende a ser mantido, reduzindo-se os detalhes dos objetos à medida que o ponto de vista deles se afasta.

O comportamento de um objeto depende principalmente do nível de interação que o usuário pode ter. Objetos que o usuário pode somente observar têm um nível de complexidade menor que aquele com o qual o usuário pode interagir, modificar e ajustar.

O padrão de comportamento, entretanto, depende da finalidade do mundo virtual. AVCs necessitam de um padrão comportamental mais apurado, principalmente se estiver sendo utilizado para treinamento [Oliveira, 2000].

Em um AVC, o usuário pode ainda ter a possibilidade de exploração do objeto segundo dois aspectos: objetivo ou subjetivo [Greenhalgh, 1996a]. No aspecto objetivo, os usuários estão em consenso a respeito de um determinado objeto, todos interessados nas mesmas informações. No aspecto subjetivo, o usuário poder ter acesso a informações exclusivas e adicionais a respeito do objeto, isto é, além daquelas presentes no aspecto objetivo.

O modelo subjetivo leva o usuário a conseguir uma maior interação com o ambiente, de forma que este passa a oferecer um conjunto maior de operações disponíveis. Dentre as operações pode-se citar o acesso a base de dados exclusivos de onde o usuário possa filtrar informações.

• Interação entre os usuários no mundo virtual

Esse aspecto aborda fatores como representação dos usuários no ambiente (avatares) e troca de mensagens entre eles.

A representação acrescenta ao gerenciamento do sistema a preocupação com a localização e visualização dos avatares, pontos de vista, riqueza de movimentos e expressões faciais. Tais usuários podem ainda se comunicar, tendo como modelos a comunicação por texto ou por voz.

5.5.2. Particionamento

Pelo fato de os seres humanos serem orientados visualmente, os mesmos esperam ver a representação gráfica do AV com todos os detalhes. Porém, o computador não precisa necessariamente renderizar o mundo virtual completo, pois a capacidade visual humana não permite receber um grande nível de detalhe de objetos distantes e ocultos. Somente os objetos ao redor da região (ou célula) onde se encontra o participante, precisam ser renderizados com um grande nível de detalhe.

Em alguns casos, como na detecção de colisão, pode-se necessitar de taxas de atualizações que se aproximem das taxas de quadros executados localmente, de maneira a alcançar um maior realismo.

Assim, uma solução viável é particionar o AV em áreas menores, melhor gerenciáveis, de acordo com o interesse do usuário, aumentando a escalabilidade e o processamento das informações.

Segundo Macedonia et al. [Macedonia, 1995a], pode-se particionar o AVD em grids (retângulos) ou em hexágonos (Figura 5.6). A associação baseada em grids tem a desvantagem de ter muitos pontos em que vários retângulos se encontram, apesar de ser mais fácil a implementação. Quando um avatar se aproxima de qualquer um desses pontos, o host precisa renderizar (como forma de antecipação das células) os quatro retângulos próximos à intersecção. Para diminuir esta dificuldade de processamento, pode-se dividir o AV em hexágonos, nos quais somente três regiões se cruzam em um determinado ponto, ao invés de quatro.

Esta abordagem foi usada nas versões experimentais do sistema Modular Semi- Automated Forces (ModSAF), alcançando um bom desempenho usando grids de cinco quilômetros [Smith, 1995; Van Hook, 1996].

O sistema Close-Combat Tactical Trainer (CCTT) [Morse, 1996] usa uma abordagem similar, também com grids de cinco quilômetros.

Segundo Singhal e Zyda [Zyda, 1999], a relação entre o processamento do AVD (que pode ser melhorado com o particionamento do AV) e a comunicação em rede (onde as mensagens devem ser enviadas somente para os hosts que realmente necessitam da informação), representam o fundamento para melhorar a escalabilidade e o desempenho dos AVDs.

Figura 5.6 - Em uma região retangular (esquerda), é necessário renderizar quatro células (intersecção) e na hexagonal (direita) requer somente três.

Segundo Greenhalgh e Benford [Greenhalgh, 1997], esta otimização do fluxo de dados pode ser expressa utilizando o modelo aura-nimbo (Figura 5.7). A aura é a esfera de influência que constitui os dados disponíveis para as entidades interessadas em receber esta informação. O nimbo se restringe às entidades destinos, baseadas em localização, tipo de entidade, capacidade de sensores, ou outras características do AV. Num mundo ideal, cada informação seria processada individualmente e entregue somente para as entidades cujos nimbos intersectem a aura da entidade origem.

ORIGEM Destino Destino Destino Destino Destino

Figura 5.7 - O modelo aura-nimbo faz com que os pacotes sejam enviados de uma entidade-origem, cuja aura intersecte o nimbo de uma entidade-destino.

A abordagem aura-nimbo que foi usada no sistema MASSIVE-1 [Greenhalgh, 1995a]; infelizmente não é escalável para grandes números de entidades e necessita de recursos de processamento considerável.

O gerenciamento de fluxo de dados pode ser dividido em três principais categorias: filtragem por área de interesse, multicast e agregação baseada em subscrições.

5.5.2.1. Subscrição de filtragem por área de interesse

Na filtragem por área de interesse, os hosts transmitem informações para um grupo de gerenciadores de subscrição, chamados de “gerenciadores de área de interesse” ou “servidores de filtragem”. Uma especificação da aura designa quais entidades podem receber a informação. Informações originárias de regiões distantes ou ocultas são geralmente de menor importância que as informações de regiões vizinhas. Estas prioridades podem ser usadas pelos gerenciadores de subscrição para gerenciar melhor seus recursos. Os filtros de alta prioridade garantem que a informação mais importante seja entregue a cada host, mas quando os recursos do sistema forem excedidos, as informações de menor importância podem ser bloqueadas, pois o filtro de baixa prioridade correspondente não foi executado [Capps, 1997].

Pode-se utilizar, também, a “filtragem intrínseca” e “extrínseca”. A “filtragem intrínseca” deve inspecionar o conteúdo da aplicação dentro de cada pacote para determinar se deve ser entregue para um host em particular. Por estar ciente do conteúdo dos pacotes, ela consegue particionar dinamicamente os dados com base em interesses de entidades. Uma abordagem alternativa é a “filtragem extrínseca”, a qual não considera a informação de subscrição, mas filtra os pacotes com base em propriedades da rede, como o endereço de destino dos pacotes [Morse, 1996].

5.5.2.2. Multicast

O Multicast é um caso particular de broadcast, no qual é possível a um host optar se deseja participar de um grupo ao determinar um endereço multicast especial para receber os pacotes enviados para a rede. O pacote só será entregue para os hosts que se inscreverem no grupo multicast. Para parar de receber os pacotes, o host deve excluir-se do grupo. Um host pode estar inscrito em vários grupos multicast simultaneamente. Qualquer host pode transmitir dados para qualquer grupo multicast, independente de estar atualmente inscrito no grupo [Singhal, 1999].

O grupo multicast pode ser representado como uma árvore, com o host origem sendo a raiz, e os hosts destinos sendo as folhas. Os galhos da árvore são os links da rede, e os nós internos são os roteadores e gateways. Quando um pacote é transmitido, uma cópia do pacote viaja por cada link e, quando encontra um nó interno, ele é copiado para que trafegue pelos galhos descendentes. O pacote somente é transmitido para os hosts interessados na informação, caso contrário, ele não vai além da LAN do host origem.

Pode-se determinar um endereço multicast diferente para cada entidade no AVD [Abrams, 1998]. A filtragem por área de interesse permite que cada host receba informações sobre todos os hosts que se encontre em seu nimbo. Cada host executa seu filtro de subscrição localmente, baseando-se em informações disponíveis sobre quais entidades existem no AVD. Diferentemente da abordagem por área de interesse, subscrições de informações só podem ser feitas por entidades, ao invés de pacotes. As informações são transmitidas para um grupo multicast fixo pelas entidades que não conseguem especificar suas auras e não têm controle sobre quais hosts receberão as informações.

A transmissão multicast por entidade tem várias propriedades que a tornam adaptável a otimizações na evolução da Internet [Holbrook, 1999]. Cada grupo multicast tem um único remetente, cuja entidade não muda. Conseqüentemente, os roteadores só precisam manter uma única distribuição para cada grupo multicast. Assim, a quantidade de informações de estado para o roteador pode ser reduzida e o processamento dos pacotes dentro dos roteadores podem ser melhorados. Estas e outras otimizações para protocolos de roteamento multicast representam uma área de pesquisa ativa.

Na abordagem “alocação de grupo por região”, ao invés de designar um endereço multicast para cada entidade, pode-se particionar o AV em regiões e associar a cada região um ou mais grupos multicast. Cada entidade transmite seus dados para grupos que correspondam a regiões de sua localização atual (por exemplo, na Figura 5.8, somente os participantes da região A receberão os pacotes enviados pela rede, pois fazem parte de um mesmo grupo multicast que é diferente do grupo multicast da região B, C e D). Similarmente, cada entidade inscreve-se em grupos correspondentes às regiões em que tem interesse, correspondente às regiões adjacentes (células vizinhas). As entidades mudam seus grupos alvos enquanto viajam pelo AV.

Endereço Multicast para sinalização periódica de

transmissão de estado Pergunta ao servidor

para saber sobre outras entidades ativas na região Servidor Sinalizador Servidor Sinalizador Servidor Sinalizador Servidor Sinalizador

Figura 5.8 - Servidores de sinalização implementam um serviço de diretório por região, para a descoberta de entidades próximas.

No sistema hexagonal, as entidades cooperam entre si para implementar um sistema de diretório dinâmico. A entidade que estiver ativa por mais tempo dentro da região faz o papel de líder grupo. Quando uma nova entidade entrar na região, ela transmite um pacote de inscrição por multicast e envia um pacote de exclusão ao deixar o grupo. Este líder também mantém uma lista das entidades presentes na região e oferece para qualquer host que transmita um pacote de inscrição na região.