Desenvolvendo o "VRML Dream"
   

 
 
Introdução:   
 
A intenção dos desenvolvedores deste projeto foi a de desenvolver um projeto ambicioso: criar um novo meio de comunicação. A idéia foi a de desenvolver uma performance viva de "Shakespeares´s A Midsummer Night´s Dream" e executá-la sobre a Internet. Os sets, apoios, e todos os caracteres foram desenvolvidos em VRML 2.0. Um grupo de atores pode prover as vozes, e pôde se controlar os caracteres. Ambas, as vozes e os dados de movimentos puderam ser digitalizados, comprimidos e mandados para a internet em tempo real, possibilitando a pessoas acessarem o conteúdo usando modems convencionais de 28.8k e computadores Pentium 150MHz. Seis meses depois, a idéia pode ser concretizada. O Projeto foi pioneiro em tempo de execução com mais de 2/3 minutos e com a execução de movimentos e vozes sobre a Internet. Este artigo narra alguns dos problemas envolvidos com o desenvolvimento, modelos e tecnologias e o que foi influente no projeto final. Ele também examina a tecnologia necessária para criar animações em tempo real em 3D.

  Em busca de uma nova mídia:  
 

O projeto VRML Dream abriu espaço para a discussão de uma nova mídia na Internet e pode ser visto com uma visão de futuro. Uma interessante forma de projeto narrativo foi desenvolvida no IrishSpace - http://pluto.njcc.com/~paulsam/irish/welcome.html 
 Neste caso, a estória de sobreviventes de um desastre com meteoro é narrada. O tempo de execução para tal produção foi de mais de uma hora. Atores forneceram suas vozes para os caracteres, e VRML foi usado para criar os modelos 3D e as animações. Mas, a produção em cima da Internet não foi prática. Os arquivos de sons excediam 8Mbytes, dificultando a narrativa, em contrapartida à facilidade de buscar os arquivos em VRML. 
"Nós acreditamos que o padrão pode ser a base para um novo meio verdadeiro que possa tirar todas as vantagens da tecnologia digital. Enquanto as formas de  controle de mídias tradicionais sempre se preocupam com como os visualizadores possam ver uma dada estória, produções baseadas em VRML permitem ao observador a liberdade de movimento e de escolha de posição para assistir a uma dada cena, ou mesmo assistir a cena como um diretor - através do ponto de vista do mesmo. No entanto, VRML provê uma grande diminuição de flexibilidade para a estrutura da narrativa."
Daqui nasceu a idéia de conceber um grande teatro para ser assitido pela rede, usando VRML. Um conjunto de critérios para concepção do projeto foi definido:
  • desenvolvimento do projeto seria feito por voluntários
  • seria usado um trabalho reconhecido para a estória
  • o áudio para o proejto teria de usar uma solução de som já existente
  • o projeto deveria usar browser VRML já existente e JAVA
  • a produção deveria ser acesssível, usando modem 28.8k e para Pentium 150Mhz sem aceleração de hardware.
Roehl sugeriu a adoção de  "A Midsummer Night´s Dream" de Sheakespeare que seria apropriado para o meio. Foi criado uma lista de discussão para o projeto e foi feita uma chamada de voluntários para o mesmo. Assim nasceu este projeto. 

Em busca de modelos para uma nova mídia:  
  

"Os modelos para a VRML Dream apresentaram um grande conjunto de problemas que mudaram continamente." A decisão de escolha de VRML não foi uma decisão puramente técnica, ... VRML encapsula uma série de temas inerentes com o projeto em si - veja http://www.vrmldream.com/vrmldream/artistic.html" Em outras palavras, o meio tinha como executar um grande conjunto de elementos artísticos alvos da produção. Ao mesmo tempo, os modelos deverima se conformar com os tipos de restrições inerentes ao desenvolvimento de material de animação em tempo real e em 3D, usando a Internet."
Que restrições são estas??
- os elementos e os conjuntos devem ser compostos por poucos polígonos, viabilizando animações suaves;
- a restrição anterior deve ocasionar uma diminuição de detalhes aplicáveis aos modelos;
- deve ser considerado o tamanho de arquivos de forma a viabilizar a conexão de usuários usando modem 28.8k.
 
 

Estabelecendo os parâmetros de projeto e encontrando modelos:  
 
 Após escrever um script, começou-se a prepara um conjunto artístico que pudesse definir com clareza o projeto de produção. Para tanto, o autor do projeto busca definições no texto para conceber os personagens. Aqui, até mesmo recursos de iluminação são usados para dar mais brilho a um dado personagem e ser fiel à trama em si. Os modelos primários foram então desenvolvidos, usando características específicas. 
 
H-Anim:
 
 Uma das formas de projetar tais elementos foi usar as animações de humanóides desenvolvidas por Humanoid Working Group - http://ece.uwaterloo.ca/~h-anim/.
Os corpos são divididos em segmentos e estes, conectados por juntas. Mudanças nas juntas controlam os movimentos dos corpos. Aqui, abre-se a possibilidade de reutilização dos modelos. No caso específico deste propósito, não foram necessários elementos com muitos detalhes, os elementos somente requeriam manuseios opostos e dedos indexados. 
 
A gênese do modelo: 
 
Ouve um grau de liberdade para os modeladores criarem e implementarem os elementos e os conjuntos. No entanto, padronizações de medidas foram necessárias.
 

  Número de polígonos versus tamanho de arquivos: 
  
De maneira a viabilizar o projeto e após certas tentativas, alguns elementos chaves foram definidos:
- todos os arquivos deveriam ser pequenos - quando descompactados, deveriam ter, no máximo, 60k;
- os modelos deveriam gastar menos de 5 quadros por segundo, quando vistos em um navegador para VRML;
- o número de polígonos e o número de texturas usadas nos elementos e conjuntos deveria ser o mínimo possível. 
Obs: o número de polígonos usado para criar um modelos tem o efeito inverso da contagem de quadros. Um grande número de polígonos resulta num baixo frame rate. Os mapas de texturas foram reduzidos a 256 cores e com áreas do tamanho de 128x128 pixels. No final, a produção de VRML Dream usou somente 12 mapas de textura e um total aproximado de 36kbytes. 
Outras informações importantes:
- A lista de discussão levantou a hipótese de uso de IndexedFaceSets - IFS - ao invés de uso de primitivas, como cones, esferas, cilindros e se notou que, realmente, esta idéia reduzia a quantidade de polígonos para renderizar. Logo, a opção de uso de IFS foi a base de sustentação das concepções dos modelos. 
- Algumas otimizações foram importantes para melhoria de tempo de carga e de desempenho dos navegadores, dentre elas, o reprojeto de elementos de cena, tais como o templo de Theseu - ver figuras abaixo. Aqui, os autores eliminaram muitos mapas de texturas.

  
 
Veja as imagens acima e compare as diferenças. 
Um outro elemento importante na diminuição de arquivos VRML foi a utilização do software Vorlon e de vistoria nos arquivos VRML de forma a verificar o que poderia ser eleminado ou otimizado e eliminação de espaços em branco, usando editor de textos. Um script em Unix foi importante auxiliar no procedimento citado. Tais processos permitiram importantes reduções nos tamanhos dos arquivos VRML, chegando a reduções de até 60% no total. 
 
  A tecnologia do VRML Dream: 
 A audiência pôde ver a performance usando o browser Cosmo Player ou WorldView e usou o software SpeakFreely desenvolvido por John Walker - http://www.fourmilab.ch. O único hardware requerido foi um Pentium com uma placa de som e um modem 28.8k. Os expectadores puderam se sentir inseridos na cena e podiam selecionar diferentes tipos de pontos de vista - viewpoints, seguindo a idéia de assistir como diretores. 
Houve um grupo de atores que foi responsável pela produção das vozes e outra equipe controlava o movimento dos elementos em cena. Muitos dos softwares necessários foram desenvolvidos pela equipe do VRML Dream.
 
  As estações de apresentação do teatro: 
  
As estaçõe de apresentação permitiram  teclado, mouse, joystick - um ou mais. Ainda era possível 6 graus de liberdade, usando spaceballs ou trackers. O software que permitiu a apresentação foi desenvolvido pela equipe de projeto e escrito totalmente em JAVA, com exceção de alguns métodos nativos nas classes, modelados com joystick. Como JAVA não suporta joystick, o uso de métodos nativos não pode ser permitido. A interface com 6 graus de liberdade foi adaptada de um trabalho anterior envolvendo o uso de DirectorInput e JAVA. O software também mantém uma representação interna do estado de cada elemento e, periodicamente, retransmite o estado, bem como as mudanças de estado. Os dados são encapsulados em um formato de pacote simples e mandados através de um protocolo datagrama de usuário - UDP para um servidor atrasado - relay. 
O time usou diversas técnicas para reduzir a quantidade de dados, reduzindo as informações de cada junta. 
O time de programação digitalizou e comprimiu os dados de áudio usando o algoritmo Global System for Mobile telecomunications - GSM. Os pacotes de dados resultantes foram encapsulados usando o Real-Time Protocol - RTP e mandados via UDP. Informações sobre o RTP estão em http://www.cs.columbia.edu/~hgs/rtp/. O empacotamento do tipo GSM requer somente 13kbytes por segundo. 
 
   Servidores de atraso - relays: 
 
Este servidor é peça importante no sistema, com ele, os dados de animação 3D e de áudio são reenviados para uma série de hosts, incluindo sistemas de clientes e outras instâncias. 
Aqui, uma aplicação JAVA pôde manipular ambos, dados de áudio e movimentos. Tal programa é altamente reconfigurável e aceita configuração via Telnet. O esquema básico está dado abaixo: 
 
Esquema básico de Relays
 Uma das desvantagens do esquema acima é que a latência aumenta com o aumento de profundidade da árvore, entretanto, quando o tráfego de dados é one-way, tal latência é irrelevante. Aqui, um sistema de multi-usuário teria soluções muito diferentes. 
Outra importante desvantagem é que tais sistemas necessitam de um grande número de servidores relay, necessitando de grande organização e coordenação. 
 
  O lado "cliente":
 
A parte final do sistema é o software do lado cliente. Ele recebe os dados e usa-os para atualizar o mundo. Para uma primeira performance, o software cliente foi um applet JAVA que rodava como uma página HTML no mundo VRML. O applet recebia os eventos mandados e atualizava sobre o mundo VRML, usando uma interface externa autorizada - EAI - um mecanismo de applets JAVA pra acessar mundos executados em browser VRML. 
Esta abordagem deu muitos problemas, um importante foi o overhead imposto por passar através da EAI. Os autores se dizem atrás de uma solução mais adequada. 
 
  O lado "cliente":
 
O VRML Dream foi apresentado em 26/04/98 e os problemas relatados pelos autores foram: 
  • transmissão de áudio 
  • alguns expectadores não receberam os dados de movimento
 
À despeito de tais problemas, VRML Dream foi um sucesso. Os novos testes têm mostrado a eficiência do sistema de transmissão de dados e sons. 
Alguns sites relacionados: 
Referência: Matsuba, N. Stephen e Roehl, Bernie - "Bottom, Thou Art Translated": The Making of VRML Dream" - IEEE Computer Graphics and Applications, March/April 1999 - Vol. 19, No. 2 - págs 59-68x