Cesium para Unity: Crea aplicaciones geoespaciales 3D para la web

Brendan Duncan es un ingeniero de personal de Unity Technologies que se centra en gráficos web, implementando el controlador gráfico WebGL y WebGPU utilizado por el reproductor web de Unity.
¿Qué es Cesium para Unity?
Cesium para Unity es un potente complemento que integra la plataforma geoespacial de Cesium en el motor Unity. Empodera a los desarrolladores para transmitir terrenos, imágenes y edificios 3D de alta resolución desde Cesium ion u otras fuentes. El resultado es la capacidad de crear globos virtuales fotorrealistas y visualizaciones geográficas detalladas dentro de un proyecto de Unity.
Los desarrolladores pueden construir y desplegar sus aplicaciones 3D geoespacialmente precisas directamente en la web. Esta importante actualización, comenzando con Cesium para Unity 1.20.0, combina el poder del contenido 3D global de Cesium con la accesibilidad del despliegue web de Unity, eliminando la necesidad de tiendas de aplicaciones o instalaciones por parte del usuario.
En su núcleo, el complemento utiliza el 3D Tiles Estándar Comunitario OGC, pionero por Cesium. Este estándar abierto está diseñado específicamente para transmitir conjuntos de datos geoespaciales 3D masivos. Con él, puedes renderizar ciudades enteras, países o incluso un gemelo digital a escala completa de la Tierra sin abrumar la memoria de tu sistema o el ancho de banda de tu usuario.
Combinar Cesium para Unity con el despliegue web desbloquea posibilidades notables. Los usuarios pueden explorar entornos 3D del mundo real intrincados con nada más que una URL, reduciendo la barrera para aplicaciones y experiencias de uso amplio. Esto lo convierte en una solución ideal para herramientas de capacitación, visualizaciones de planificación urbana, experiencias de mapeo interactivas y muchas más.

Características clave para el despliegue web
Cesium para Unity incluye capacidades que son particularmente efectivas en entornos web:
- La arquitectura de streaming significa que los usuarios no tienen que descargar conjuntos de datos enteros al inicio. En su lugar, los terrenos y las imágenes se cargan progresivamente a medida que los usuarios navegan por la escena. Este enfoque mantiene cortos los tiempos de carga inicial y el rendimiento fluido.
- Fácil acceso a contenido geoespacial 3D curado y pipelines de mosaicos 3D, a través de la integración con los servicios en la nube de Cesium ion. Los usuarios pueden acceder a terrenos globales, incluyendo Terreno Mundial de Cesium y Tiles 3D Fotorealistas de Google, así como imágenes, edificios y conjuntos de datos de fotogrametría. Todo disponible a través de un acceso con un clic utilizando la interfaz de usuario de Cesium ion integrada en el Editor de Unity, y se puede desplegar directamente a los usuarios en la web.
Aplicaciones del mundo real
La combinación de Cesium para Unity y Web abre puertas a muchas aplicaciones geoespaciales, tales como:
- Los planificadores urbanos pueden compartir modelos de ciudades 3D interactivos con las partes interesadas a través de enlaces web simples.
- Los educadores pueden crear lecciones geográficas explorables a las que los estudiantes acceden desde cualquier dispositivo.
- Los equipos de gestión de emergencias pueden visualizar escenarios de desastre en terrenos precisos sin instalaciones de software especializadas.
- Las aplicaciones de turismo pueden permitir a los usuarios explorar virtualmente destinos en 3D fotorealista.
- Los desarrolladores inmobiliarios pueden mostrar propiedades en contexto geográfico.
- Los investigadores pueden crear visualizaciones de datos interactivas que combinan conjuntos de datos científicos con representación geográfica precisa.
Comenzando con Cesium para Unity para la web
Si esta es tu primera introducción a Cesium para Unity, sigue la guía de inicio rápido. Después de instalar el complemento, configura tu token de acceso de Cesium ion, agrega el componente CesiumGeoreference para definir el sistema de coordenadas de tu mundo y comienza a agregar conjuntos de mosaicos.
Para construir para la web, sigue estos pasos esenciales:
Actualiza a v1.20.0+: Asegúrate de tener la última versión del paquete de Cesium para Unity.
Usa Unity 6+: Estas versiones están optimizadas para los estándares modernos de WebGL y WebGPU.
Habilitar multithreading: Debes habilitar el multithreading nativo de C/C++ en la configuración de tu jugador para la compilación web.
Aumentar los límites de memoria: Los conjuntos de teselas de Cesium pueden ser intensivos en memoria. Es posible que necesites aumentar el límite de memoria del reproductor web, que se puede establecer hasta 4GB.
Configurar encabezados del servidor: Al desplegar tu proyecto en un servidor web, tu servidor debe incluir encabezados específicos de COOP y COEP para habilitar el multithreading. Este es un requisito de seguridad.
Es importante notar que el soporte web está actualmente categorizado como "experimental." Algunas características avanzadas o conjuntos de teselas de alta memoria pueden requerir una optimización cuidadosa para funcionar bien dentro de las limitaciones de memoria del navegador.
Profundización técnica: Portando al web
Compilando para WebAssembly
El núcleo de Cesium Native está escrito en C++. Para ejecutar este código en un navegador, debe ser compilado en WebAssembly utilizando una cadena de herramientas llamada Emscripten. Un desafío principal es que el código de Cesium generalmente está dirigido a plataformas de 64 bits, mientras que el soporte de WebAssembly de Unity es actualmente de 32 bits. Esto requiere modificaciones en el código para ser independiente de la arquitectura. Además, algunas bibliotecas de terceros utilizadas por Cesium necesitan parches para asegurar la compatibilidad.
Reingeniería para multithreading
Cesium para Unity depende en gran medida del multithreading para transmitir 3D Tiles sin afectar el hilo principal de la aplicación. Sin embargo, la plataforma web de Unity solo admite multithreading para código nativo en C++, no para código gestionado en C#. Se implementó un grupo de hilos personalizado en C++ específicamente para compilaciones web para manejar esta limitación. El trabajo que necesita interactuar con Unity, como la creación de mallas, se coloca en cola y se ejecuta en el hilo principal para evitar errores de memoria, manteniendo el trabajo en segundo plano en C++ nativo y minimizando el impacto en el hilo principal.
APIs gráficas: WebGL y WebGPU
Los navegadores ofrecen dos principales APIs gráficas 3D: la establecida WebGL y la más nueva WebGPU. Cesium para Unity funciona creando objetos estándar de Malla y Textura de Unity, dejando el trabajo de renderizado al motor. Si bien son en gran medida equivalentes para el renderizado de Cesium, hay diferencias menores. Por ejemplo, el shader de puntos de Cesium utiliza características disponibles solo en WebGPU, lo que significa que el renderizado de nubes de puntos lo requiere. WebGPU también abre la puerta a otras características avanzadas de Unity como el VFX Graph.
Consideraciones de rendimiento en la web
Las compilaciones web naturalmente tienen perfiles de rendimiento diferentes a las aplicaciones nativas. Cesium ya está bien adaptado a estas limitaciones, con sistemas de nivel de detalle que ajustan automáticamente la calidad para mantener tasas de fotogramas suaves. Su enfoque de streaming también es un gran beneficio, ya que solo se carga la data visible.
Sin embargo, los desarrolladores deben ser conscientes de las limitaciones de WebAssembly. La velocidad de ejecución es casi nativa pero no idéntica debido al sandboxing de seguridad. Las compilaciones web no pueden acceder directamente al sistema de archivos, y la memoria está actualmente limitada a 32 bits (4GB). Un proyecto que funciona bien en un escritorio puede requerir optimización, como reducir la configuración de calidad o el alcance, para funcionar sin problemas en la web.

El futuro de la geoespacial en la web
A medida que la tecnología de los navegadores y WebAssembly continúan madurando, la brecha entre el rendimiento de las aplicaciones web y nativas se reducirá. Cesium para Unity está posicionado a la vanguardia de esta evolución, permitiendo a los desarrolladores crear experiencias geoespaciales que son tanto potentes como universalmente accesibles.
Esta combinación de la suite creativa de Unity, la plataforma geoespacial de Cesium y el alcance de la web, abre nuevas oportunidades atractivas para los desarrolladores. Desde herramientas de visualización profesional hasta experiencias educativas inmersivas, esto proporciona la base para llevar mundos 3D precisos y hermosos a los navegadores de todo el mundo.




