Desarrollo WebXR
Partes de las Aplicaciones Web Espaciales
Las aplicaciones XR/espaciales son una colección de archivos que usualmente se sirven a través de un servidor web. Un navegador web puede interpretar estos archivos y ejecutar la aplicación web.
Archivos Comunes
Los archivos y extensiones de archivo más importantes que se deben conocer se listan a continuación:
Extensión | Descripción |
---|---|
index.html | Página HTML principal de la aplicación web espacial. |
.js | Contiene código JavaScript. |
.ts | Contiene código TypeScript, que se convierte a .js antes de publicar la aplicación web espacial. |
.wasm | WebAssembly (que se compila a partir de lenguajes como C++ o Rust). |
.glb | Formato de archivo de modelo 3D que puede incluso incorporar texturas. |
.gltf | Formato de archivo de modelo 3D basado en texto. |
.bin | Generalmente referenciado por un .gltf y contiene datos binarios del modelo 3D. |
.obj | Un formato de archivo de modelo más simple, basado en texto. |
.mtl | Un archivo de material, usualmente referenciado por un archivo .obj. |
.json | Datos arbitrarios utilizados por la aplicación. |
.css | Una “Hoja de Estilo en Cascada”, que se usa para ajustar la apariencia de elementos HTML. |
Adicionalmente, una aplicación web espacial utilizará archivos de audio (.mp3, .wav, .ogg, …), archivos de imagen (.webp, .png, .jpg) y a veces incluso archivos de video (.webm, .mp4, .mov).
Modelos 3D
Las aplicaciones VR y AR pueden ser desde entornos completamente inmersivos hasta simples paneles de UI flotantes. En la mayoría de los casos, se necesitarán al menos algunos modelos 3D (también llamados “activos” cuando se utilizan en tu aplicación).
Plataformas
Se pueden encontrar muchos activos gratuitos y de pago en plataformas como Sketchfab, TurboSquid e itch.io.
Hay algunas fuentes totalmente gratuitas para modelos 3D como Quaternius, Kenney.nl y Poly Haven.
También puedes usar a menudo paquetes de activos de Unity o Unreal Engine.
Escaneo 3D
El proceso de convertir fotos de objetos del mundo real a modelos 3D se llama “Fotogrametría”, o escaneo 3D.
Aplicaciones como RealityScan para tu smartphone o software como Reality Capture pueden ayudarte a llevar modelos del mundo real a tus aplicaciones web espaciales.
Creación
Crear manualmente modelos 3D puede ser una tarea que consume mucho tiempo. Los modeladores 3D utilizan software como Blender o Maya para diseñar modelos 3D personalizados según tus necesidades.
Si modelar en 3D no es lo tuyo, puedes encontrar un artista 3D para contratar en ArtStation.
Optimización
Todos los activos de una aplicación web espacial se transmiten a través de internet. Esto puede afectar los tiempos de carga, lo que hace importante que los activos se compriman y optimicen.
Código
El código para aplicaciones web espaciales puede escribirse en TypeScript, JavaScript, C++, Rust y muchos otros lenguajes. JavaScript se ejecuta directamente, mientras que lenguajes como C++ se compilan a WebAssembly.
El código tiene muchas responsabilidades en una aplicación web espacial:
- Renderizado: Crear las imágenes que se muestran en el smartphone o dispositivo VR. Los gráficos de computadora son un campo complejo de la informática. Para manejarlo, los desarrolladores de WebXR utilizan frameworks de renderizado para encargarse de tareas comunes por ellos.
- Cargar Activos: Cargar cualquier modelo 3D, texturas, audio, videos y otros datos cuando se necesite. Los frameworks generalmente proporcionarán funcionalidades para leer datos de diferentes formatos de archivo 3D, y en la web, el navegador puede encargarse de cargar formatos de archivos de imagen y audio por ti.
- Interacción del Usuario: Reaccionar a la entrada del usuario, dar retroalimentación y aplicar acciones como respuesta a las acciones del usuario.
- Lógica de la Aplicación: Los cálculos, el procesamiento y las interacciones de datos que la aplicación está destinada a realizar, desde consultas a bases de datos hasta generación de datos.
Librerías, frameworks y motores 3D como Wonderland Engine ayudan con todas estas tareas y proporcionan funcionalidades comúnmente utilizadas para empoderar a los desarrolladores web espaciales a construir sus aplicaciones de manera más eficiente.
Servicios Web
La aplicación podría interactuar con servicios en línea para cuentas, almacenar información individual, consultar grandes bases de datos, transmitir medios y mucho más.