BT

Experimente a nova interface visual do InfoQ! Veja o novo design do InfoQ 3.0 e nos diga o que você achou.

O estado atual da Realidade Virtual baseada em navegadores com HTML5

| por Abel Avram Seguir 12 Seguidores , traduzido por Lu Araujo Seguir 1 Seguidores em 08 set 2015. Tempo estimado de leitura: 5 minutos |

O grupo de usuários do HTML5 de São Francisco na Califórnia, se reuniu com fins de discutir as tecnologias HTML5 para criação de experiências de realidade virtual - WEBGL, WebVR, Three.js e GALM -, e o estado atual do desenvolvimento de suporte à realidade virtual no Firefox e Chrome. A idéia é a imergir a web na experiência da realidade virtual.

Tony Parisi, co-autor dos padrões VRML e X3D ISO, apresentou uma introdução ao WebRV. O WebRV é uma mistura de realidade virtual e tecnologias web. Atualmente, os softwares de realidade virtual se parecem com jogos e grande parte do trabalho está concentrado na criação e manipulação de gráficos. A maior parte dos aplicativos de realidade virtual são desenvolvidos usando a engine Unity que é dominada por poucas pessoas. A idéia de Parisi é nivelar essa área de desenvolvimento habilitando todos os desenvolvedores na criação de aplicativos de realidade virtual usando tecnologias básicas da web, notadamente JavaScript com WebGL.

Nessa linha, o Three.js é uma biblioteca JavaScript para renderizar gráficos 2D e 3D com WebGL que facilita a renderização de cenas de realidade virtual. O código gerado com o Three.js é em média de 3 à 10 vezes menor que o código correspondente em WebGL. Parisi também está trabalhando em uma solução diferente chamada GLAM. O GLAM é uma linguagem declarativa para criação de conteúdo Web 3D que torna ainda mais simples renderizar realidades virtuais. Para renderizar um cubo 3D em rotação com GLAM é necessário apenas o script glam.js e uma tag como o exemplo a seguir:

#photocube {
    image:url(../images/flowers.jpg);
    rx:30deg;
}
#photocube {
    image:url(../images/flowers.jpg);
    rx:30deg;
}

Parisi também contou que o Chrome (build experimental a partir do branch Blink) e o Firefox (build diário com fins de testes) começaram a implementação de uma API WebVR para reconhecimento de movimentos da cabeça. Essa API pode ser utilizada para rastrear o movimento de dispositivos de realidade aumentada (por hora o Oculus Rift, futuramente outros dispositivos serão suportados) e permite renderização 3D stereo para conteúdo WEbGL/CSS3. Uma outra alternativa mais simples, que já está disponível é a utilização do Google Cardboard com um smartphone em conjunto com aplicativos de realidade aumentada como o Cardboard. O aplicativo utiliza a câmera do smartphone e sensores de movimento para gerar uma imagem estereoscópica móvel via WebGl no navegador do aparelho.

Durante sua apresentação, UI/Ux design for WebVR, Josh Carpenter, designer líder de UX para o Firefox OS da Mozilla, demonstrou a utilização do Oculus Rift com o Firefox e destacou algumas das características de uma boa experiência de realidade virtual na web. Essas são as características que ele gostaria de ver viabilizadas:

  • A habilidade de navegar com transparência e segurança de um lugar para outro utilizando links. Isso incluí controles para os links utilizados na navegação e para ações de zoom, scroll, voltar, entrada de dados em formulários, etc. Em suma, a possibilidade de ter uma experiência parecida com a de utilização de um navegador durante o uso de um headset de realidade virtual.
  • Desenvolvimento fácil. Com esse propósito, novas ferramentas estão sendo criadas. Como exemplo, temos a pilha de ferramentas JavaScript com Threes.js, WEbVR e WebGL no navegador que está em um estágio inicial de maturidade.
  • Experiências de realidade virtual que funcionam em qualquer dispositivo.
  • A possibilidade de converter automaticamente qualquer website em realidade virtual. Isso significa que deveria ser possível navegar e independente das características de implementação dos websites ter uma experiência de realidade virtual 3D.
  • A monetização da realidade virtual. São necessários mais dispositivos, embarcabilidade e melhor desempenho.

Além de enfatizar essas características, Carpenter demonstrou um trabalho inicial na conversão de websites comuns em websites para a realidade virtual sem que seja necessária uma atualização de conteúdo. Carpenter também criou algumas transições que podem ser utilizadas ao navegar entre sites com realidade virtual e indicou que enxerga muito potencial em um projeto de navegador de realidade virtual. Esse projeto é viável, uma vez que está disponível um canvas 360° com animação espacial.

Brandon Jones, desenvolvedor do WebGL e WebVR na Google, disponibilizou exemplos de código para uma aplicação de realidade virtual, demonstrando o que é necessário para renderizar uma cena de realidade virtual na sessão Web browser VR internals do encontro. Ainda que a renderização de realidades virtuais pareça intimidante num primeiro momento, com o Three.js se torna mais simples conforme se pode ver no trecho de código abaixo:

<script src="js/effects/VREffect.js"></script>
<script src="js/controls/VRControls.js"></script> // Setup padrão
var vrControls = new THREE.VRControls(camera);
var vrEffect = new THREE.VREffect(renderer);

function onEnterVRFullscreen() {
   vrEffect.setFullScreen(true);
} 
function onWindowResize() {
   vrEffect.setSize(window.innerWidth, window.innerHeight);
} 
function onRequestAnimationFrame() {
   vrControls.update();
   vrEffect.render(scene, camera);
}

No entanto, Jones admite que o Three.js não trata como prioridade a realidade virtual e ainda não tem um processo renderização para realidade virtual otimizado. Assim, podem ser necessárias algumas melhorias. De qualquer forma, o Three.js dá conta do recado. Ele apresentou alguns conselhos para desenvolvedores de aplicativos de realidade virtual:

  • Prefira vertex shaders leves;
  • Quando houver problemas de desempenho, reduza a resolução do canvas ao invés de diminuir a taxa de frames;
  • Evite sempre renderizar mais de uma vez elementos que não dependem do contexto como é o caso de sombras ou mapas do ambiente;
  • Desenhar a cena para ambos os pontos de vista em seqüência é pesado em termos de mudanças de estado. Dependendo da cena, pode ser mais eficiente desenhar o ponto de vista esquerdo, trocar a viewport e desenhar o ponto de vista direito para cada objeto.

Jones também demonstrou a renderização de uma cena de realidade virtual do Quake 3 no Chrome.

Nestes links você pode encontrar mais informações: Vídeos do encontro do grupo de ususários HTML5 de SF, Começando a usar a WebVR API, Mozilla VR - websites com realidade virtual, Google Cardboard, Experiências com realidade virtual no Chrome, GLAM, Lista de discussão do Mozilla WebVR.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT