# WebVR

WebVR es una API experimental Javascript, la cual proporciona soporte para dispositivos de realidad virtual, como el HTC Vive, Oculus Rift o Google Cardboard, en un navegador de web.
La API se está diseñando con los siguientes objetivos en mente:
* Detectar los dispositivos de Realidad Virtual disponibles.
* Obtener las características de los dispositivos.
* Obtener la posición y orientación del dispositivo.
* Mostrar imágenes en el dispositivo con la frecuencia de refresco adecuada.

## Historia

WebVR fue creado en la primavera de 2014 por Vladimir Vukićević de Mozilla. Entre los colaboradores a la API se incluyen Brandon Jones, Boris Smus y otros del equipo de Mozilla. El 1 de marzo de 2016, el equipio Mozilla VR y el equipo de Google Chrome anunciaron la publicación de la versión 1.0 de la propuesta para la API WebVR. La renovación de la API trajo consigo muchas mejoras a WebVR.
La última versión finalizada es la 1.1, que fue editada por última vez el 5 de abril de 2017. Entre los editores del documento se incluyen miembros de equipos de Mozilla y Google. Sin embargo, recientemente se han unido algunos miembros de Microsoft, los cuales están colaborando activamente en el desarrollo del borrador para la versión 2.0 de la API WebVR.

## Diseño

La API WebVR expone unas cuantas interfaces nuevas (por ejemplo VR Display y VR Pose) que permiten a las aplicaciones web incluir contenido de realidad virtual. Para ello se hace uso de WebGL, junto con las necesarias configuraciones de cámara y de los dispositivos controladores (por ejemplo, un mando o el punto de vista).
La API se ha diseñado para que siga un funcionamiento similar al de otras API Web como la API de Geolocalización. Los pasos necesarios son:
* Obtener una lista de los dispositivos disponibles.
* Comprobar si el dispositivo deseado soporta los modos de presentación que requiere la aplicación.
* Si es así, notificar al usuario la posibilidad de usar funcionalidad en realidad virtual.
* El usuario realiza una acción para indicar que desea entrar en el modo de realidad virtual.
* Obtener una sesión de WebVR y presentar el contenido.
* Comenzar un bucle de renderizado que produzca los fotogramas que deben mostrarse en el dispositivo de visualización.
* Seguir produciendo fotogramas hasta que el usuario indique que desea salir del modo de realidad virtual.
* Finalizar la sesión de WebVR.

## Soporte

WebVR aún depende de una versión especial de los navegadores que tenga la API activada, y con una configuración de pantalla especial que la mayoría de usuarios no son capaces de encontrar fácilmente. Actualmente WebVR está soportado en Firefox Nightly y una versión personalizada de Chrome. WebVR v1.0 está disponible en Chrome para Android activando una bandera. Hasta que WebVR esté soportado en la mayoría de los navegadores, los navegadores actuales pueden hacer uso de una parte reducida de la API mediante un polyfill. Microsoft anunció en septiembre de 2016 que había comenzado el desarrollo de WebVR para el nagevador Edge.
Actualmente (8 de abril de 2017), la API WebVR está aún en fase de desarrollo. Debido a esto, la API definidas están sujetas a cambios frecuentes, por lo que no pueden considerarse estables. Mientras la API se finaliza, la versión 1.1 se puede encontrar en algunos navegadores: Chrome para Android, Firefox Nightly, Samsung Internet, Microsoft Edge, Chromium, Servo y Oculus Carmel.
Debe tenerse en cuenta, de que el hecho de que WebVR sea soportado por un navegador, no significa que ofrezca soporte para un dispositivo en concreto. El ofrecer soporte significa que ofrece la API necesaria, siendo cada uno de los navegadores el encargado de decidir que dispositivos soportar.

## Usos notables

A continuación se muestran algunas compañías y proyectos importantes relacionados con WebVR:
* A-Frame es un marco de web de fuente abierta para construir experiencias VR con HTML de Mozilla.
* Archilogic ha usado exitosamente WebVR para producir modelos 3D que pueden ser visitados en realidad virtual.
* Blend4Web está utilizada para authoring WebVR-basó aplicaciones como reconstrucción de patrimonio y juegos.
* Kokowa es una plataforma de publicación de WebVR orientada a los no-programadores. Proporciona un editor gráfico para construir y compartir experiencias de WebVR en la web y en redes sociales.
* Goocreate: Goo Crea es un editor de creación de contenido para WebGL 3D basado en la nube. Puede usarse para crear juegos, anuncios, paǵinas web de producto y visualizaciones científicas, todo esto en el navegador.
* PlayCanvas es un motor 3D de código abierto para juegos, aunque también es un motor 3D interactivo para aplicaciones.
* Vizor: es una plataforma para crear y compartir contenido de realidad virtual en la web.
* Sketchfab: permite a las personas visualizar y compartir contenido en 3D en línea. Proporciona un modo espectador para ver modelos 3D en cualquier móvil, página web o VR headset.
* X3DOM: es un framework de código abierto y un runtime para gráficos 3D en la Web, esto incluye WebVR. Hace uso de X3D, hace de actual estándar abierto de ISO para 3D en la Web.

## Tecnologías similares

A pesar de que WebVR es único como API, hay aplicaciones nativas en la mayoría del hardware que permiten experiencias en red y acceso a contenido de web. Varias herramientas claves como Unity y Blender, también son capaces de exportar el contenido para la web y proporcionar a los usuarios una forma de usar el contenido sin necesidad de instalar aplicaciones dedicadas para este propósito.