Algunos conceptos básicos para prepararte para un espectro de experiencias inmersivas: realidad virtualLa Realidad Virtual es un mundo artificial creado por medio de programas informáticos. Un usuario es teléfono celular en este mundo. La sección respectivo del mundo digital creado artificialmente se adapta a los movimientos y puntos de vista del usuario. Al ingresar en la realidad virtual, todos los movimientos del cuerpo pueden ser utilizados para la navegación y la percepción. "Las "gafas de realidad virtual" se usan normalmente como interfaz más, realidad aumentada¿Qué es la realidad aumentada?Tecnología que posibilita la reproducción en pantalla del entorno real captado por una cámara, sobre el que se superpone una capa de contenidos virtuales e interactivos generando una nueva realidad combinada. más y todo lo demás.
Actualizado
Las experiencias inmersivas llegaron a la web en Chrome 79. La APIConcepto de API¿Qué es una API?Una API, siglas de Application Programming Interface o Interfaz de Programación de Apps, es un recopilatorio de código que se puede emplear para que varias apps se comuniquen entre ellas. Es algo que realiza una tarea equivalente a la interfaz de usuario al momento de promover la interacción entre persona y programa, solo que aplicado única y exclusivamente dentro del entorno del software.Aún cuando suene más del dispositivo WebXR trae la realidad virtual traída la realidad virtual, mientras que el soporte para la realidad aumentada llega a Chrome 81. Mientras que una actualización de la API GamePad extiende el uso avanzado de controles a la realidad virtual. Otros navegadoresConcepto de Navegadores¿Qué son los Navegadores?Los Navegadores son herramientas informáticas que utilizamos para, normalmente, navegar por Internet y visitar cualquier página web, al mismo tiempo de para hacer otras tareas como ver documentos, observar vídeos o reproducir contenido multimedia de cualquier tipo. Son un tipo de software sencillamente usual y bastante utilizado hoy en día.Insistimos en que es algo que se utiliza con mucha frecuencia, puesto que moverse por Internet más admitirán estas especificaciones pronto, incluidos Firefox Reality, Oculus Browser, Edge y el navegadorUn navegador (además: browser) es una herramienta informática que te permite ver documentos y datos y navegar por la red. Los navegadores pueden mostrar distintos tipos de recursos de información; principalmente documentos HTML, a pesar de todo, además son posibles otros tipos de archivos y contenido multimedia, como PDF, JPEG, MPEG, GIF o el lenguaje de meta marcado. A través el uso de complementos especiales y la configuración respectivo, los más Helio de Magic Leap, entre otros.
Este artículo comienza una serie en la web inmersiva. Esta entrega cubre la configuración de una aplicación WebXR básica, así como la entrada y salida de una sesión XR. Los artículos posteriores cubrirán el ciclo de fotogramas (el curso de trabajo de la experiencia WebXR), los detalles de la realidad aumentada y la API de prueba de éxito de WebXR, un medio para detectar superficies en una sesión de RA. A menos que se indique lo contrario, todo lo que cubro en este artículo y los artículos siguientes se aplica por igual a AR y VR.
¿Qué es la web inmersiva?
Aunque usamos dos términos para describir experiencias inmersivas (realidad aumentada y realidad virtual), muchos piensan en ellas en un espectro que va desde la realidad completa hasta la completamente virtual, con grados de inmersión intermedios. La ‘X’ en XR está destinada a reflejar ese pensamiento al ser una especie de variable algebraica que representa cualquier cosa en el espectro de experiencias inmersivas.

El espectro de experiencias inmersivas
Ejemplos de experiencias inmersivas incluyen:
- Juegos
- Videos de 360 °
- Vídeos tradicionales en 2D (o 3D) presentados en entornos envolventes
- Compra de vivienda
- Ver productos en su hogar antes de comprarlos
- Arte inmersivo
- Algo genial en lo que nadie ha pensado todavía
Conceptos y uso
Explicaré algunos conceptos básicos del uso de la API de dispositivo WebXR. Si necesita más profundidad de la que le he proporcionado, consulte el grupo de trabajo de Immersive Web Muestras de WebXR o Materiales de referencia en crecimiento de MDN. Si está familiarizado con las primeras versiones de la API de dispositivos WebXR, debería revisar todo este material. Ha habido cambios.
El código de este artículo se basa en el ejemplo básico del Immersive Web Working Group (manifestación,
fuente), pero se edita para mayor claridad y simplicidad.
Parte de la creación de la especificación WebXR ha consistido en desarrollar medidas de seguridad y privacidad para proteger a los usuarios. En consecuencia, las implementaciones deben cumplir con ciertos requisitos. Una página web o aplicación debe estar activa y enfocada antes de que pueda solicitar algo sensible al espectador. Las páginas web o aplicaciones deben servirse a través de HTTPSHTTPS (protocolo de Transferencia de Hiper-Texto) es un protocolo que permite determinar una conexión segura entre el servidor y el cliente, que no puede ser interceptada por personas no autorizadas. En resumidas cuentas, es la versión segura de el http (Hyper Text Transfer Protocol) Cómo funciona Una conexión HTTP estándar en Internet puede ser fácilmente secuestrada por partes no autorizadas. El propósito de una conexión HTTPS es evitar esto: encriptar más. La API en sí está diseñada para proteger la información obtenida de sensores y cámaras, que necesita para funcionar.
Solicita una sesión
Entrar en una sesión XR requiere un gesto de usuario. Para conseguirlo, utilice la detección de funciones para probar XRSystem (vía navigator.xr) y hacer una llamada a
XRSystem.isSessionSupported(). Tenga en cuenta que en las versiones 79 y 80 de Chrome,
XRSystem el objeto fue llamado XR.
En el siguiente ejemplo, indiqué que quiero una sesión de realidad virtual con el 'immersive-vr' tipo de sesión. los
otros tipos de sesiones
son 'immersive-ar' y 'inline'. Una sesión en línea es para presentar contenidoEl contenido puede ser muy difícil de definir con precisión. Es una definición que se refiere a las declaraciones contenidas en un documento o publicación de cualquier tipo y puede incluir las tecnologías de la información y la comunicación. Esto cubre todos los tipos de medios como imágenes y texto. A parte de esto, en el campo de la optimización de motores de búsqueda, los términos duplicar contenido, contenido único, más dentro de HTMLHTML (Hypertext Markup Language) se usa para estructurar el contenido de texto de un documento web. No sólo se marca el contenido, sino además la meta-información que describe este contenido. Las páginas HTML se almacenan normalmente en el directorio raíz del servidor. Cómo se creó En la era digital, a los usuarios les resulta difícil hallar su camino en las webs y hacer un seguimiento de las estructuras de las más y se usa principalmente para contenido teaser. los Sesión de realidad aumentada inmersiva
muestra demuestra esto. Lo explicaré en un artículo posterior.
Una vez que sé que las sesiones de realidad virtual son compatibles, habilito un botón que me permite adquirir un gesto de usuario.
if (navigator.xr) {
const supported = await navigator.xr.isSessionSupported('immersive-vr');
if (supported) {
xrButton.addEventListener('click', onButtonClicked);
xrButton.textContent = 'Enter VR';
xrButton.enabled = supported;
}
}
Después de habilitar el botón, espero un eventoConcepto de Evento¿Qué es un Evento?Un Evento es una actividad de carácter social que suele tener cierta proyección a nivel público y, de esta manera, suscita el interés de un determinado sector relacionado con la temática o con la razón por el que se celebra. Es un tipo de acto que suele tener mucha repercusión a nivel empresarial.Podemos hallar distintos tipos de eventos, desde los deportivos hasta los empresariales, pasando más de clic y luego solicito una sesión.
let xrSession = null;
function onButtonClicked() {
if (!xrSession) {
navigator.xr.requestSession('immersive-vr')
.then((session) => {
xrSession = session;
xrButton.textContent = 'Exit XR';
onSessionStarted(xrSession);
});
} else {
xrSession.end();
}
}
Observe la jerarquía de objetos en este código. Se mueve de navigator a xr a una XRSession ejemplo. En las primeras versiones de la API, un script tenía que solicitar un dispositivo antes de solicitar una sesión. Ahora, el dispositivo se adquiere implícitamente.
Entrar en una sesión
Después de obtener una sesión, necesito iniciarla e ingresarla. Pero primero, necesito configurar algunas cosas. Una sesión necesita un onend controlador de eventos para que la aplicación o la página web se pueda restablecer cuando el usuario salga.
También necesitaré un <canvas> elemento sobre el que dibujar mi escena. Debe ser compatible con XR
WebGLRenderingContext
o
WebGL2RenderingContext. Todo el dibujo se realiza con ellos o con un marco basado en WebGL como
Three.js.
Ahora que tengo un lugar para dibujar, necesito una fuente de contenido para dibujar. Para eso, creo una instancia de XRWebGLLayer. Lo asocio con el lienzo llamando XRSession.updateRenderState().
Una vez que estoy en una sesión, necesito una forma de determinar dónde están las cosas en la realidad virtual. Necesitaré un espacio de referencia. UNA 'local-floor' El espacio de referencia es aquel en el que el origen se encuentra cerca del espectador y el eje y es 0 a nivel del suelo y no se espera que se mueva. Existen otros tipos de espacios de referencia, pero ese es un tema más complicado del que puedo abordar aquí. Guardo el espacio de referencia en una variable porque lo necesitaré cuando dibuje en la pantalla.
function onSessionStarted(xrSession) {
xrSession.addEventListener('end', onSessionEnded);let canvas = document.createElement('canvas');
webGLRenContext = canvas.getContext('webgl', { xrCompatible: true });
xrSession.updateRenderState({
baseLayer: new XRWebGLLayer(xrSession, webGLRenContext)
});
xrSession.requestReferenceSpace('local-floor')
.then((refSpace) => {
xrRefSpace = refSpace;
xrSession.requestAnimationFrame(onXRFrame);
});
}
Después de conseguir un espacio de referencia, llamo XRSession.requestAnimationFrame(). Este es el comienzo de la presentación de contenido virtual, que se realiza en el bucle de cuadro.
Ejecutar un bucle de cuadro
El bucle de trama es un bucle infinito controlado por el usuario-agente en el que el contenido se dibuja repetidamente en la pantalla. El contenido se dibuja en bloques discretos llamados marcos. La sucesión de fotogramas crea la ilusión de movimiento. Para las aplicaciones de realidad virtual, los fotogramas por segundo pueden oscilar entre 60 y 144. AR para Android se ejecuta a 30 fotogramas por segundo. Su código no debe asumir ninguna velocidad de fotogramas en particular.
El proceso básico para el frame loop es:
- Llamada
XRSession.requestAnimationFrame(). En respuesta, el agente de usuarioEl agente de usuario o agente es el identificador o nombre con el que un programa inicia sesión en el servidor web para solicitar un documento. El nombre se pasa por medio de del encabezado HTTP. Los programas de software y los robots de los motores de búsqueda pueden identificarse con este nombre. El agente de usuario permite ver precisamente cuándo un robot de motor de búsqueda visitó el portal más invoca elXRFrameRequestCallback, que usted define. - Dentro de su función de devolución de llamada:
- Llamada
XRSession.requestAnimationFrame()de nuevo. - Obtén la pose del espectador.
- Pase (‘vincular’) el
WebGLFramebufferdesde elXRWebGLLayeralWebGLRenderingContext. - Itera sobre cada
XRViewobjeto, recuperando suXRViewportdesde elXRWebGLLayery pasárselo alWebGLRenderingContext. - Dibuja algo en el framebuffer.
- Llamada
El resto de este artículo describe el paso 1 y parte del paso 2, configurar y llamar al XRFrameRequestCallback. Los elementos restantes del paso 2 se tratan en la parte II.
El XRFrameRequestCallback
los XRFrameRequestCallback es definido por usted. Toma dos parámetros: a
DOMHighResTimeStamp y un XRFrame ejemplo. los XRFrame El objeto proporciona la información necesaria para representar un solo fotograma en la pantalla. los
DOMHighResTimeStamp El argumento es para uso futuro.
Antes de hacer cualquier otra cosa, voy a solicitar el siguiente cuadro de animación. Como se indicó anteriormente, el agente de usuario determina la sincronización de las tramas en función del hardwareEn informática, el término hardware se refiere a cualquier componente de un sistema informático que sea un objeto físico real, al contrario que el software que existe en forma digital. Esto incluye el disco duro y las unidades incorporadas, es decir, todos los componentes que son "duros", de ahí su nombre. Desarrollo El desarrollo del hardware informático comienza con la creación de los primeros ordenadores y tiene su verdadero origen más subyacente. Solicitar el siguiente marco primero asegura que el bucle del marco continúa si algo durante la devolución de llamada arroja un error.
function onXRFrame(hrTime, xrFrame) {
let xrSession = xrFrame.session;
xrSession.requestAnimationFrame(onXRFrame);
}
En este punto, es hora de dibujar algo para el espectador. Esa es una discusión para la parte II. Antes de ir allí, déjame mostrarte cómo finalizar una sesión.
Finalizar la sesión
Una sesión inmersiva puede finalizar por varias razones, incluida la finalización con su propio código mediante una llamada a XRSession.end(). Otras causas incluyen que el auricular se desconecte o que otra aplicación tome el control de él. Esta es la razón por la que una aplicación con buen comportamiento debe monitorear end evento. Cuando ocurra, descarte la sesión y sus objetos de render relacionados. No se puede reanudar una sesión inmersiva finalizada. Para volver a entrar en la experiencia inmersiva, mi aplicación debe iniciar una nueva sesión.
Recuerde haber ingresado a una sesión que durante la configuración, agregué un onend controlador de eventos.
function onSessionStarted(xrSession) {
xrSession.addEventListener('end', onSessionEnded);
}
Dentro del controlador de eventos, restaure el estado de la aplicación antes de que el usuario ingresara a una sesión.
function onSessionEnded(event) {
xrSession = null;
xrButton.textContent = 'Enter VR';
}
Conclusión
No he explicado todo lo que necesita para escribir una aplicación Web XR o AR. Con suerte, te he dado lo suficiente para que comiences a entender el código por ti mismo y lo suficiente para comenzar a experimentar. En el próximo artículo, explicaré el ciclo de fotogramas, que es donde se dibuja el contenido en la pantalla.
Foto por JESHOOTS.COM en Unsplash




