Saltearse al contenido

Realidad virtual (WebXR)

Cualquier tour de Andarama se ve en gafas de realidad virtual sin instalar nada: se abre la dirección del tour en el navegador de las gafas y se pulsa el botón Modo VR. No hace falta una aplicación, ni una tienda, ni una versión distinta del tour. Es el mismo tour.json que ya está publicado.

Qué se necesita

RequisitoDetalle
Gafas con WebXRMeta Quest 2, 3, 3S y Pro (navegador Meta Quest), Pico 4, HTC Vive (Wolvic/Firefox Reality), Vision Pro (Safari), cualquier equipo con SteamVR y Chrome o Edge
HTTPSWebXR solo funciona en contextos seguros: https:// o localhost. Un tour servido por http:// o abierto con file:// cae en modo cardboard
Gesto del usuarioLa sesión inmersiva la tiene que iniciar una pulsación: el botón Modo VR del visor
Permisos en iframeSi el tour va embebido, el iframe necesita allow="xr-spatial-tracking"

Si el navegador no expone WebXR (móviles Android e iOS corrientes), el mismo botón entra en modo cardboard: pantalla partida en dos, seguimiento por giroscopio y selección por mirada. Sirve para visores de cartón y para gafas de móvil sin WebXR.

Las manos

Andarama usa el módulo de seguimiento de manos de WebXR. Cuando las gafas lo tienen activado, las dos manos aparecen dentro del tour dibujadas con sus 25 articulaciones (la misma jerarquía que define la especificación: muñeca y cinco dedos con metacarpo, falanges y yema). No hay que configurar nada: si el visor publica las manos, se ven; si no, se ven los mandos.

  • Apuntar: de cada mano sale un rayo fino. Al cruzarse con un hotspot el rayo se acorta hasta él, se tiñe de violeta ULL y el hotspot crece un poco.
  • Pinza: juntar el pulgar y el índice acciona lo que esté apuntado. El umbral tiene histéresis (cierra por debajo de 22 mm y no vuelve a abrirse hasta los 32 mm), así que no hay parpadeos ni activaciones dobles.
  • Tocar: con un panel abierto se puede pulsar directamente con la yema del índice, sin rayo, acercando el dedo a menos de 45 mm de la superficie.
  • La pinza de la mano izquierda contra la palma está reservada por el sistema para el menú de las gafas: Andarama no la usa.

Las articulaciones se leen con XRFrame.fillPoses y fillJointRadii, que resuelven las 25 poses de una mano en una sola llamada; si el navegador no las implementa se recurre a getJointPose articulación a articulación.

Los mandos

Con mandos (Touch, Pico, Index) el comportamiento es el mismo: rayo de apuntado desde el mando, gatillo o botón de selección para accionar. Se dibuja además una esfera en la posición de la empuñadura para dar referencia espacial. Manos y mandos conviven: se pueden soltar los mandos a media visita y seguir con las manos, o al revés.

Qué se puede hacer dentro de las gafas

Todos los hotspots del tour aparecen en VR, no solo los de navegación. Cada uno se dibuja como un pictograma flotante con su etiqueta, a seis metros del visitante, y se comporta así:

HotspotEn VR
NavegaciónSalta a la escena destino con un fundido; el panorama se recarga sin salir de la sesión
Texto, tooltipPanel inmersivo con el texto formateado y desplazamiento con las flechas del panel
ImagenPanel con la imagen ajustada, pie de foto incluido
GaleríaPanel con anterior/siguiente y contador
Vídeo (fichero)Reproducción en el panel con barra de progreso y botón de pausa
AudioPanel con transporte y transcripción, si la hay
QuizOpciones pulsables, comprobación y respuesta razonada; la puntuación cuenta igual que fuera de VR
ComparadorDivisor arrastrable con la pinza
Enlace, estado, polígonoEjecutan su acción directamente (cambio de variable, activación de la zona)
PDF, web, formulario, vídeo embebido, modelo 3DMuestran una tarjeta con el título y la dirección, y un botón Abrir al salir de VR: al terminar la sesión el visor abre ese contenido en una pestaña

Los cuatro últimos no se meten dentro de las gafas a propósito: un PDF, un formulario con Turnstile o un iframe de YouTube no se pueden componer dentro de una sesión inmersiva sin degradar la experiencia y sin romper el aislamiento del navegador. En vez de fingir que funcionan, el visor los aparca y los abre al salir.

Los paneles se dibujan con Canvas 2D y se suben como textura: no hay DOM dentro de la sesión ni dependencias externas, por lo que funcionan exactamente igual en un tour publicado y en un paquete .zip exportado.

En los paquetes exportados

La realidad virtual viaja dentro del .zip. El paquete estándar lleva el mismo motor que el tour publicado, así que el botón Modo VR aparece y funciona con una condición: hay que servirlo por HTTPS.

El paquete estándar necesita un servidor, cualquiera: no funciona abriendo el index.html con doble clic, porque el navegador bloquea los módulos y los panoramas cargados desde file://. Para una prueba local basta python3 -m http.server en la carpeta; para VR de verdad hace falta HTTPS. La variante HTML único sí se abre con doble clic, pero entonces WebXR no está disponible (file:// no es un contexto seguro) y el visor entra en modo cardboard.

El fichero LEEME.md que acompaña a cada paquete lo recuerda, y el .htaccess incluido añade los tipos MIME y las cabeceras de caché que necesita un alojamiento compartido corriente.

Modo cartón, en detalle

Unas gafas de cartón se sujetan en horizontal: si el móvil está vertical aparece un aviso pidiendo que se gire, y el visor intenta bloquear la orientación donde el navegador lo permite (Safari no lo permite).

  • La orientación se calcula con el cuaternión del dispositivo y se compensa el ángulo de la pantalla, así que la escena mantiene el horizonte a nivel al girar el teléfono y respeta la inclinación de la cabeza. Antes se traducían los ángulos a mano y la imagen aparecía volcada.
  • El botón físico de las gafas de cartón toca la pantalla: al tocar, se acciona al instante lo que esté enfocado, sin esperar la permanencia.
  • En iOS hay que aceptar el permiso de movimiento y orientación; sin él el seguimiento no llega y la escena se queda quieta.

Cerrar un panel

Todo panel abierto lleva su aspa arriba a la derecha, y se alcanza con cualquiera de las tres formas de apuntar:

  • Manos: apuntar con el rayo y hacer la pinza, o tocar el aspa con la yema del índice.
  • Mandos: apuntar y apretar el gatillo.
  • Sin mando ni manos (cardboard o giroscopio): mirar el aspa y sostener la vista hasta que el anillo se complete.

El panel se ancla siempre delante de donde mira la cabeza al abrirlo, de modo que el aspa queda a unos veinte grados a la derecha: un giro corto, no un contorsionismo.

Qué se puede accionar dentro: se decide por tour

En Ajustes del tour › Gafas y modo cartón:

  • Hotspots disponibles en VR: todos, solo la navegación, o elegirlos uno a uno. En el modo detallado se activan y desactivan por familias (Contenido, Audiovisual, Didácticos) o tipo a tipo. La navegación nunca se puede apagar: sin ella el tour sería una fotografía fija.
  • Permanencia de la mirada: los segundos que hay que sostener la vista sobre un marcador para que se accione solo. Por defecto 2,5 s.

Un recorrido de puertas abiertas puede querer que en gafas solo se camine y que el contenido se lea después en pantalla; una práctica de laboratorio querrá justo lo contrario. Es la misma escena, distinta configuración.

Sin mando: el retículo de mirada

Con el giroscopio del móvil o en modo cartón no se puede pulsar nada: la pantalla se mira, no se toca. En cuanto se activa cualquiera de los dos aparece un punto en el centro con un anillo que se va dibujando mientras se sostiene la mirada sobre un marcador; al completarse, el marcador se acciona.

En el visor plano el retículo tiene dos comportamientos, y el segundo es el que lo hace usable de verdad:

  • Mirando el panorama, el retículo está en el centro: girar el móvil mueve la escena, así que centrar un marcador es apuntarlo.
  • Con un panel abierto, el panel es un cuadro fijo en la pantalla y un retículo también fijo nunca alcanzaría su aspa. Entonces el retículo pasa a ser un cursor que la cabeza arrastra por la pantalla: unos diez grados a la derecha y quince hacia arriba bastan para llegar al botón de cerrar.

Sostener la mirada sobre algo ya accionado no lo repite: hay que apartar la vista y volver. Y el anillo se reinicia si se cambia de objetivo o si la cabeza se mueve más de unos seis grados, de modo que un pulso de la mano no lo estropea.

Funciona con los diecisiete tipos de hotspot, no solo con la navegación, y la duración es la «permanencia de la mirada» de los ajustes del tour.

Al embeber un tour

El código que genera el Studio ya incluye los permisos necesarios:

<iframe
src="https://andarama.com/t/mi-tour"
style="width:100%;aspect-ratio:16/9;border:0"
allow="fullscreen; gyroscope; accelerometer; xr-spatial-tracking"
allowfullscreen
title="Mi tour"
></iframe>

Sin xr-spatial-tracking el botón de VR aparece pero la sesión no arranca: el documento incrustado no tiene permiso para pedirla.

Rendimiento

Dentro de la sesión el panorama se resuelve como una esfera equirectangular de una sola textura (2048 px de lado en tours multirresolución), no como mosaico de tiles: en gafas es preferible una textura estable a la carga progresiva, que en estéreo se nota mucho más. Los tours con vídeo 360 suben el fotograma a la textura en cada pasada.

Recomendaciones para un tour cómodo en gafas:

  • Menos de 25 hotspots por escena; con más, la escena se lee mal a seis metros.
  • Etiquetas cortas: el pictograma reserva el ancho de la etiqueta, y un título largo se convierte en un cartel enorme.
  • Vídeo 360 a 4096 × 2048 como máximo si el tour se va a ver en Quest 2.

Accesibilidad

  • El modo VR nunca es obligatorio: todo el contenido está disponible en el visor plano y en la versión accesible en texto.
  • No hay desplazamiento libre por la escena, solo teletransporte entre escenas: es la forma de navegación que menos mareo provoca.
  • La selección por pinza no exige mantener la postura: se acciona al cerrar, no al sostener.
  • La selección por mirada no exige pulsar nada: ni mando, ni botones, ni tocar la pantalla. La permanencia es configurable por tour.

Problemas frecuentes

El botón de VR no hace nada. Comprueba que la dirección empieza por https://. En un tour exportado abierto con doble clic no puede funcionar: súbelo a un alojamiento.

Entra en pantalla partida en lugar de en las gafas. El navegador no tiene WebXR o la sesión fue rechazada: es el modo cardboard de respaldo.

Se ven los mandos pero no las manos. El seguimiento de manos está desactivado en los ajustes de las gafas. Andarama pide hand-tracking como característica opcional para que la sesión arranque igualmente.

Dentro de un iframe no entra en VR. Falta allow="xr-spatial-tracking".

El rayo no llega a un hotspot. Los hotspots se colocan por yaw y pitch a distancia fija; si dos quedan muy juntos, sepáralos en el editor.

Permiso de movimiento en iPhone y iPad

Safari solo deja leer el giroscopio si la página va por HTTPS y si el permiso se pide dentro de una pulsación tuya, así que se pregunta al pulsar Modo VR. Si dices que no —o si el aviso no llega a aparecer—, el modo cartón enseña un botón Permitir el movimiento para volver a pedirlo. Si aun así no sale, actívalo en Ajustes › Safari › Movimiento y orientación y vuelve a entrar.