Skip to content
7 min de lectura

WebVR con A-Frame (Charla UniRemington)

WebVR con A-Frame (Charla UniRemington)

La realidad virtual se sentía como un lujo cuando empecé a explorarla. Headsets de alta gama como el HTC Vive u Oculus Rift costaban cientos de dólares. La barrera de entrada era alta — hardware costoso, desarrollo específico de plataforma, motores 3D complejos. Luego descubrí WebVR y A-Frame, y todo cambió.

Esta charla en Universidad Remington fue sobre llevar VR a una audiencia universitaria — estudiantes, desarrolladores y mentes curiosas que quizás no tienen una PC gamer o un headset de $500. La web es la plataforma de distribución más accesible que tenemos. Si podés hacer que VR funcione en un navegador, podés llegar a cualquiera con un smartphone y un visor Cardboard de $15.

Antes de entrar en la tecnología, empecé invitando a la audiencia a unirse a las comunidades locales de tech en Pereira: Sirius, PyPereira, Pereira Tech Talks, PereiraJs. Estas comunidades son donde el aprendizaje real sucede — a través de meetups, talleres y proyectos compartidos.

VR, AR y Mixed Reality

Primero, las definiciones:

Realidad virtual (VR) — Un entorno digital completamente inmersivo. Te ponés un headset y estás en otro lugar. El mundo real desaparece. Ejemplos: explorar un museo virtual, caminar por un modelo arquitectónico, jugar un juego en un mundo 3D.

Realidad aumentada (AR) — Elementos digitales superpuestos sobre el mundo real. Ves tu entorno, pero con información u objetos añadidos. Ejemplos: Pokémon GO, apps de vista previa de muebles, overlays de navegación.

Realidad mixta (MR) — Una mezcla de VR y AR donde objetos digitales y físicos interactúan. Los objetos digitales pueden ocluir los reales, y viceversa. Ejemplos: experiencias Microsoft HoloLens, apps AR avanzadas con conciencia espacial.

El panorama de hardware en 2019 iba desde costoso hasta accesible:

  • Alta gama: HTC Vive ($500+), Oculus Rift ($400), Sony PlayStation VR (~$300)
  • Rango medio: Oculus Go ($200), Samsung Gear VR ($130), Google Daydream (~$79)
  • Accesible: Google Cardboard ($7), visores VR Box genéricos ($15)

Esa brecha de precio es enorme. Si el desarrollo VR requiriera un headset de $500, se quedaría en nicho. Pero con Cardboard, cualquiera con un smartphone puede probarlo. La distribución masiva cambia el juego. Ahí es donde entra la web.

¿Por qué WebVR?

La web es la plataforma de distribución masiva más importante. Sin app stores, sin instalación, sin gatekeeping de plataforma. Solo una URL. Si VR puede correr en un navegador, se vuelve accesible a miles de millones de dispositivos.

WebVR (ahora evolucionado a WebXR) es el estándar W3C que define las APIs que un navegador debe exponer para crear experiencias VR. Maneja:

  • Detección de dispositivos (headsets, controles)
  • Tracking de pose (posición de cabeza, rotación)
  • Renderizado estereoscópico (vistas ojo izquierdo/derecho)
  • Manejo de entrada (mirada, controles, voz)

La mayoría de experiencias WebVR pesan menos de 2 MB. Compará eso con una app VR nativa, que puede ser cientos de megabytes. Cargás una URL y estás en VR. Sin descarga, sin espera.

No necesitas aprender tecnologías nuevas. Si conocés HTML y JavaScript, podés construir VR. A-Frame lo hace aún más fácil al permitirte definir escenas 3D con sintaxis tipo HTML. Bajo el capó, A-Frame usa Three.js, una biblioteca 3D popular construida sobre WebGL. Si ya conocés Three.js o WebGL, agregar soporte WebVR es solo un poco de código. Si no, A-Frame abstrae la complejidad.

A-Frame: Entity-Component System

A-Frame es un framework para construir experiencias VR con tecnologías web. Usa una arquitectura Entity-Component System (ECS), tomada de motores de juegos:

Entities — Objetos contenedores a los que se adjuntan componentes. Pensá en una entity como una “cosa” en la escena: una caja, una luz, una cámara, un sonido. Las entities definen qué existe.

Components — Módulos reutilizables que proveen apariencia, comportamiento o funcionalidad. Los componentes definen cómo las entities se ven y actúan. Ejemplos: geometry, material, position, rotation, light, sound.

Systems — Gestores globales que manejan lógica para todas las instancias de un componente. Los systems son menos comunes en escenas simples pero útiles para optimización y estado compartido.

Acá va una escena A-Frame simple:

<html>
  <head>
    <script src="https://aframe.io/releases/1.0.4/aframe.min.js"></script>
  </head>
  <body>
    <a-scene>
      <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
      <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
      <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
      <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
      <a-sky color="#ECECEC"></a-sky>
    </a-scene>
  </body>
</html>

Eso es todo. Abrilo en un navegador y estás en una escena 3D. Hace clic en el botón VR y cambia a modo estéreo para Cardboard o un headset. Sin paso de build, sin configuración compleja.

A-Frame también tiene un inspector (presiona Ctrl+Alt+I mientras ves una escena) que te permite inspeccionar y ajustar entities en tiempo real. Es como las DevTools del navegador para VR.

Sistema de coordenadas

A-Frame usa un sistema de coordenadas de mano derecha:

  • Eje X: Izquierda (-) a derecha (+)
  • Eje Y: Abajo (-) a arriba (+)
  • Eje Z: Adelante (-) a atrás (+)

La posición está en metros. position="0 1.6 -2" significa: en el origen horizontalmente, 1.6 metros arriba (aproximadamente altura de ojos) y 2 metros adelante en la escena.

Entender esto importa para ubicar objetos naturalmente y diseñar experiencias VR cómodas.

Los demos

Mostré más de 20 demos en vivo para ilustrar las capacidades de A-Frame, desde primitivos hasta proyectos completos:

Primitivos — Formas básicas: cajas, esferas, cilindros, planos. Demo CodePen

Sky e imágenes equirectangulares — Fotos 360° como fondos. Demo CodePen. Podés conseguir imágenes 360° gratis en A-Frame Registry.

Texturas — Aplicando imágenes a superficies. Demo CodePen

Stats y atributos — Ajustando posición, rotación, escala dinámicamente. Demo CodePen

Animación de cámara — Moviendo el punto de vista programáticamente. Demo CodePen

Torus — Una forma de dona. Demo CodePen

Texto y múltiples animaciones — Texto 3D con animaciones encadenadas. Demo CodePen

Assets — Cargando y reutilizando recursos eficientemente. Demo CodePen

Modelos 3D (Collada) — Importando archivos .dae de herramientas como Blender, SketchUp o Clara.io. Demo CodePen. Modelos gratis: 3D Warehouse, Clara.io, Blender.

Videos — Reproducción de video 360°. Demo CodePen

Audio — Sonido espacial que cambia según tu posición. Demo CodePen

Eventos de cursor — Interacción basada en mirada (mirar algo para dispararlo). Demo CodePen

Formas del cursor — Visuales personalizados del cursor. Demo CodePen

Eventos A-Frame — Escuchando y despachando eventos personalizados. Demo CodePen

Galería — Una galería de fotos 360° caminable. Repo GitHub

Física (Cannon.js) — Añadiendo gravedad y colisiones. Demo CodePen

Componente Sun — Iluminación dinámica con un sol en movimiento. Demo CodePen

Colisiones — Detectando cuando los objetos se tocan. Demo CodePen

Laberinto — Un laberinto navegable con detección de colisiones. Repo GitHub

Reconocimiento de voz — Comandos de voz en VR usando la Web Speech API. Demo CodePen. Inspiración: Storyteller de Pablo Zajdband

Lo que resonó con la audiencia

La energía en el salón cambió cuando la gente se dio cuenta de que no necesitaban hardware costoso para probar VR. Algunos estudiantes tenían visores Cardboard. Uno sacó un teléfono y cargó uno de los demos. Ver a alguien en el salón experimentando VR que ellos mismos podían construir fue el momento aha.

La combinación de accesibilidad (web + Cardboard) y simplicidad (sintaxis basada en HTML) hizo que VR se sintiera alcanzable, no aspiracional. Eso es lo que quería — bajar la barrera e invitar a la gente a experimentar.

Inspiración y créditos

Estos proyectos influyeron en mis demos y enfoque:


La realidad virtual no tiene que ser costosa ni exclusiva. La web democratiza el acceso. A-Frame hace que la creación sea accesible. Cualquiera con un navegador puede experimentar VR. Cualquiera con habilidades web básicas puede construirlo.

Ese es el poder de WebVR — no solo experiencias inmersivas, sino experiencias inmersivas accesibles. VR para todos, construido con las herramientas que ya conocemos.

Ver slides

A seguir construyendo.