Este proyecto propone un conjunto de componentes de software de alto nivel para facilitar la creación de experiencias inmersivas. Se enfoca en resolver desafíos comunes que enfrentan los desarrolladores, como la gestión de controladores XR, la creación dinámica de interfaces de usuario, la navegación en escenas, la selección y manipulación de objetos virtuales, y la provisión de herramientas de depuración.
La solución tiene como objetivo abstraer la complejidad de las API subyacentes como WebXR y Three.js. Además, se proporcionan ejemplos didácticos para evaluar funcionalmente los módulos, validar los componentes y ofrecer puntos de partida prácticos para desarrollar aplicaciones web basadas en VR.
Autor: Federico Marino (fmarino@fi.uba.ar)
Código Fuente (github): https://github.com/fmarinofiuba/vrComponentsKit
Este es un ejemplo básico para iniciar una escena VR y confirmar que el entorno funciona.
Este ejemplo evalúa el módulo de navegación, específicamente el modo "vuelo" y el mecanismo de teletransportación. Incluye una escena con un plano de suelo coloreado y un modelo de escalera 3D para probar la teletransportación a diferentes alturas y verificar cambios de orientación incrementales sin alterar la posición del usuario.
Este ejemplo evalúa el correcto funcionamiento del módulo de gestión de controladores. Verifica la representación 3D adecuada de los controladores y el correcto funcionamiento de las funciones de escucha de eventos imprimiendo eventos en la consola del navegador.
Este ejemplo presenta una escena con dos objetos (Cubo y TorusKnot) y una fuente de luz puntual. Define un menú utilizando la clase UILVrMenu para controlar las velocidades de rotación de ambos objetos, así como el color y la intensidad de la luz. También evalúa la funcionalidad del menú en conjunto con el módulo de navegación, asegurando que el rayo del controlador solo active acciones de la interfaz de usuario al interactuar con el menú, no la teletransportación.
Este ejemplo realiza las mismas evaluaciones que el ejemplo de Menú UILVR, pero utilizando un menú basado en HTML.
En este ejemplo, se crea una escena con un modelo de tetera 3D que cambia de posición siguiendo una onda sinusoidal. Un panel VrVarsWatcher muestra en tiempo real los vectores de posición, rotación y escala de la tetera. Además, se incluye un panel VrConsole para verificar la correcta visualización de mensajes simulados de la consola del navegador en VR.
Este ejemplo presenta una escena con objetos móviles y estáticos. El primer grupo de objetos está configurado para ser agarrado por contacto, mientras que el segundo grupo utiliza el modo "remoteGrabbing". El ejemplo evalúa el correcto funcionamiento, especialmente cuando múltiples objetos están en el rayo del controlador, en cuyo caso solo se debe agarrar el objeto más cercano.
En este ejemplo, se crea una escena con cinco objetos que representan diferentes materiales y cinco objetos que representan varias formas geométricas. Un pedestal cilíndrico en el centro permite al usuario seleccionar un material o forma, que luego modifica el objeto central en el pedestal en consecuencia. El objetivo propuesto fue verificado.