Lições aprendidas criando com VRML 2.0 e seu conteúdo 
 
 
    1. Introdução: 
     
    VRML 2.0 oferece um novo meio de produção de ambientes interativos. Os melhores resultados, entretanto, requerem uma grande atenção a detalhes e um bom entendimento de elementos do mecanismo de apresentação. A criação em larga escala, através de ambientes hipermídia serviu como motivação para este trabalho e para descobrir o que este novo meio de construção pode mesmo prover. 
    "Desde sua criação em Outubro de 1994 - VRML apresentou um novo nicho tecnológico". Através de experiências e de ferramentas específicas, construtores de mundos produziram mundos que eram estáticos e simples. Com a adoção do VRML 2.0, especificação de mundos em movimento e uma nova gama de possibilidades se apresentou. Em outubro de 1996, a Silicon Graphics lançou o O2, um novo tipo de estação de trabalho multimídia. Uma experiência nova foi incorporada ao sistema, para introduzir a dada usuário a capacidade de sua nova máquina. Tal pacote, com documentação, demonstrações e interface específica foi criada com HTML, MPEG, outros formatos digitais e interface de usuário e Java Script. Esta forma foi uma oportunidade de demonstrar que 3D é uma tecnologia de interface viável e foi a primeira aplicação de VRML em larga escala, de forma comercial. 
    Esta experiência foi chamada "Out Of Box Experience". A mesma foi desenvolvida em CosmoWorlds 1.0 e era acessada pelo CosmoPlayer 1.0 nas estações Silicon Graphics. Alguns dos aspectos retratados neste trabalho se aplicam especificamente a este domínio.
     
    2. Projeto e preparação: 
     
    Para o OOBE, fez-se um típico projeto de produção multimídia. Com o time de projetistas em constante colaboração com o time de pojeto de construção em Internet e a Silicon Graphics - direção de arte, produção técnica e produtor, além dos arquitetos de VRML. A idéia foi de desenvolver um mundo em movimentos e aplicá-lo efetivamente.
     
    2.1 - Projetando: 
     
    A grande mudança introduzida no projeto foi a idéia de um mundo em larga escala que, apresentava: uma história de significado e completa e mantendo um interatividade com o usuário.A otimização fez parte da produção - através de um processo contínuo. Foram observados aspectos já utilizados pela indústria de jogos - principalmente no gerenciamento de complexidade versus tempo de carga. A idéia era de um projeto rico com pouca pesquisa. Estas técnicas tem direta aplicação para VRML. 
    A inspiração dos conceptores recaiu sobre parques, museus e galerias de arte. Estes estudos foram refinados e definiu-se alguns espaços: Entrada, Pátio, Galeria de novidades, Tour pelo sistema, Ilha da selva. Para gerenciar a complexidade de cenas e carregamento do sistema a cada tempo, cada área funcional foi encapsulada em arquivos VRML separados. Com este projeto, o usuário se move de um mundo para outro através de hiperlinks que usam o mecanismo Anchor de VRML.
     
    2.2. Projetando para surpreender com descobertas: 
     
    A idéia foi de causar surpresas, quando o usuário navega através do processo. Assim, o usuário fica imbuido de um espírito de aventura, tendo uma visão ampla do mundo que o cerca - de forma que o mesmo se sinta recompensado, através de sua exploração por todos os ângulos.
     
    2.3. Ouvindo usuários:
     
    A idéia é a de um ambiente amigável, fácil de navegar e nem um pouco extenso. Se o usuário sentir falta de controle ou perdido, o projeto falhou. As cenas possibilitam uma razoável liberdade e limites bem definidos. 
     
    3. Modelamento e Geometria: 
     
    Em todos os estágios, a ambição do projetista deve ser limitada pela performance. O balanceamento está definido entre o artístico e a boa performance - técnica e arte.
     
    3.1 Orçamento e complexidade: 
     
    Quando a estrutura foi planejada, foram definidas as quantidades de polígonos que uma cena poderia ter a cada tempo. Procurou-se algo em torno de 10 quadros por segundo - com um total de 4000 triângulos numa cena em particular.
     
    3.2. Modelamento e conversão: 
     
    Foram usados modeladores para trabalhar com VRML 2.0, já que a linguagem não tem um modelador nativo. Os modeladores usados foram: Nichiman N-Geometry, Radiance Ez3d, Alias 3Design, Author 1.0 e Cosmo World 1.0 - para VRML2.0. Para cada modelador, observou-se alguns pontos de estrangulamento, mas, todos eles foram projetados para grande realismo e permitiram criar polígonos de grande resolução. O problema é que depois foi necessário converter de um formato para outro. Tais conversões resultaram em aumento de código e até mesmo em erros de código fonte em VRML. 
     
    3.3. Estruturando para melhoria de performance: 
     
    Não se deve analisar apenas a quantidade de polígonos que estão na cena, mas, as formas com que a linguagem VRML 2.0 permite construir cenas e suas profundidades, o tamanho das texturas e o número de vezes que elas são usadas, além da relação espacial entre os objetos. Um dos problemas relatados foi decorrente da mudança de VRML 1.0 para VRML 2.0 que fez com que a performance de cenas com grande quantidade de faces indexadas caísse. Para contornar tal problema, promoveu-se a colocação destas geometrias em um conjunto simples de faces indexadas, dentro de um nó simples "Appearance", melhorando a velocidade drasticamente.
     
    3.4. Gerenciando a complexidade das cenas: 
     
    A complexidade de cenas pode ser organizada diretamente usando o nó LOD - nivel de detalhes e ProximitySensors. Para o projeto, dividuiu-se em um grande número de salas e os LOD´s foram usados para o espaço aberto entre os diversos cenários. 
     
    3.5. Dicas rápidas para modelamento com geometria de alta performance: 
    - determine o custo de polígonos;
    - cuidado com os modeladores baseados em Splines;
    - não acredite nas conversões feitas para o formato de VRML 2.0;
    - tente usar texturas para manter as geometrias complexas;
    - combine atributos de geometria estática com formas comuns para acelerar o processo de rendering;
    - use backface culling sempre que apropriado - IndexedFaceSet.solid = True;
    - use LODs, ProximitySensors, e outras construções em VRML 2.0 para gerenciar a complexidade das cenas;
    - Remova Cilinder ends e Cone bottoms quando eles não estão visíveis;
     
    4. Layout
     
    Trata-se do processo de composição da cena - foi usado o programa CosmoWorld 1.0.
    Dicas rápidas para melhoria de performance: 
    - evite agrupar objetos espacialmente dispersos,
    - quando possível, objetos de mais alta posição devem ser separados, evitando acúmulos de processos de renderização;
    - subvida espacialmente grandes blocos, objetos que estão vistos tipicamente por pouco tempo;
    - use instaciação, não cópias, para reproduzir geometrias comuns usadas na cena.
     
    5. Navegação e Interface: 
     
    As características do OOBE incluem uma interface multifuncional e multimídia, composto basicamente de 4 janelas, sendo a janela principal A com conteúdo em VRML - foco central da experiência do usuário e as janelas B e C, que têm conteúdo em HTML, MPEG e VRML, além da janela D que é um mapa 2D usado para navegação e controle.
    A janela principal A é carregada pelo CosmoPlayer, fazendo a interface centrada em VRML. Há um quadro superior que contém a informação: você está aqui. 
     Alguns outros detalhes do processo de navegação: 
    • uso do PROTO e dos nós Anchor;
    • ícones de navegação muito fáceis de selecionar;
    • problemas com alguns navegadores, por causa do plug-in utilizado;
    • além do processo de navegação guiada, temos o processo de navegação nominada - nomes e localizações associados, podendo o usuário visitar qualquer localização nominada a qualquer tempo - no CosmoPlayer através do menu popup;
    • liberdade de navegação - o usuário explora a sala, os mundos, de forma intuitiva, através do painel do plug-in que incorpora WALK, FLY etc;
    • possibilidade de visualização de formas do mundo, selecionando aquilo que será visível ou não;
    • uso de iluminação direcionada, ajustada com a atenção do usuário, que variam  de intensidade de acordo com o movimento do usuário - uso do ProximitySensors e dos ScalarInterpolators juntos com os campo de intensidade luminosa
     
    • uso de widgets 3D implementadas em VRML, construídas como se segue: 
     
    Nesta figura, temos o diagrama de rotas apresentando o fluxo de eventos para 3 tipos de widgets de iluminação: Translation, Rotation, Color-Selection; 
    • uso da widget RaptorBuilder para mapeamento de textura, construída para suportar manipulação na cena. Usando somente TouchSensors e Scripts, tal mapeamento foi possível com base nas ações do mouse.  Tais widgets performam escala, translação, seleção de mapa de texturas;
     
    •  uso de ClickMe para encorajar o usuário a explorar o mundo
     
    6. Animações:  
       
    No OOBE, as animações são ajustadas em uma das três formas:  
    • Proximidade: quando o usuário se aproximada de uma dada região do espaço - veja sequência de animação abaixo:
     
    • Entrada do usuário: quando o mesmo clica um dado objeto, um TouchSensor detecta tal interação  e dispara o processo: 
     
    • Auto-início: animações podem ser iniciadas automaticamente, quando uma dada cena é carregada - uso de campos TimeSensor, com valores especiais para cada caso: 
     
     
      As animações em OOBE foram do tipo animações "orgânicas", para dar aos objetos mais vida e personalidade. 
    O processo de formas em 3D usou o CoordinateInterpolator para dar cacacteríticas de um espaço elaborado para um humanóide. 
     
     
    7. Propriedades do material e Aparências:  
      
    "O entendimento da influência do material, das cores, das texturas e da iluminação é a chave para realizar grandes implementações de mundos virtuais em VRML. Mas, tal processo é mais complicado do que parece ser." Há problemas de disparidade de navegador para navegador, que resultam em disparidades no processo de renderização.  
    Algumas saídas do projeto:  
    • combinar sombreamento de polígonos baseado nas cores por vértice com a aplicação de texturas de um componente. O resultado gerou renderizações mais naturais;
    • a adição de especularidade e de controle de brilhos pode enriquecer os objetos;
    • o uso de mapa de texturas é uma das boas técnicas para criar aparente complexidade e detalhes, no projeto o uso de mapas de textura em lugares onde a geometria era a alternativa foi a solução. Alguns fatores devem ser levados em conta neste caso: tamanho do arquivo, tamanho da textura, uso de texturas com transparência e compatibilidade de plataformas;
    • Foram usadas na maior parte do projeto, texturas com imagens do tipo jpeg e para texturas com cinza, imagens do tipo SGI's BW e para texturas com transparência e cor foram usadas SGI's RGBA - observe que nenhum destes formatos são padrões para o VRML;
    • o padrão de cores emissivas foi emissiveColor =1.0;
       
    8.Iluminação:  
       
    O conjunto de cores é de suma importância para dar à cena que está sendo simulada um aspecto mais real - o entendimento de cada cor pode ser de suma importância para tal efeito - abaixo o uso de vermelho e de laranja pra dar aspecto de lava fundindo:  
     
    Algumas características adicionais: 
    • uso de cor por vértice para sombreamento através da cena, embora os efeitos de iluminação pudessem ser aplicados diretamente na geometria em si - o benefício desta técnica é a possibilidade de controlar como uma dada cena e um dado objeto podem ser iluminados. 
    • o processo de cor por vértice pode ser usado em conjunto com os processos de iluminação do VRML;
    • a técnica acima pode ser de díficil controle se uma ferramenta que habilite o controle interativo de localização da iluminação e a direção na cena
    Considerações de performance: 
    • a performance de iluminação é uma função direta do número e tipo das luzes ativadas na cena. Em geral, iluminação direcional é menos pesada que iluminação puntual ou por spots. A escolha se deu por iluminação direcional na maior parte dos casos. As outras formas só foram usadas quando um tipo de efeito exigisse (PointLight ou SpotLight);
    • geralmente, foram usadas duas iluminações direcionais como luzes de cantos;
    • em casos de mais de 10 fontes de luz, usou-se nós do tipo Switch ou Script, para ligar e desligar as fontes de luz, dependendo da posição do observador - isto para uma  estação de trabalho, em PC´s, as limitações seriam maiores.
     
    9.Som:  
      
    "O som é meio fundamental para dar realismo às cenas"  
    Como os arquivos de som tendem  a ser grandes, deve-se pesquisar sobre o melhor e mais adequado para cada situação, tal escolha deve levar em conta: tamanho do arquivo, taxa de amostragem, formato do arquivo e número de canais e frequências. Inicialmente, o projeto OOBE deveria ter qualidade de CD - 44,1khz, mas, ao final trabalhou-se com 20,5khz para diminuir os arquivos de som. Foram usados fontes mono e formato WAV. 
    Dicas dos autores:  
    • fazer a interatividade do quadro é prioritário em relação os sons;
    • escolha parâmetros de som baseado nas limitações da plataforma e no tipo de equipamento em uso;
    • use som mono;
    • selecione amostragens simples ao invés de sons repetitivos;
    • use laços de repetição múltiplos de diferentes comprimentos para mascarar repetições;
    • use a instanciação para evitar o tempo de carga de arquivos de som;
    • use um pequeno raio de influência para sons atados à animação das geometrias.