Cesium pour Unity : Créer des applications géospatiales 3D pour le web

Brendan Duncan est ingénieur chez Unity Technologies, se concentrant sur les graphiques web, en mettant en œuvre le pilote graphique WebGL et WebGPU utilisé par le Unity Web Player.
Qu'est-ce que Cesium pour Unity ?
Cesium pour Unity est un puissant plugin qui intègre la plateforme géospatiale de Cesium dans le moteur Unity. Il permet aux développeurs de diffuser des terrains, des images et des bâtiments 3D haute résolution depuis Cesium ion ou d'autres sources. Le résultat est la capacité de créer des globes virtuels photoréalistes et des visualisations géographiques détaillées au sein d'un projet Unity.
Les développeurs peuvent créer et déployer leurs applications 3D géospatialement précises directement sur le web. Cette mise à jour majeure, à partir de Cesium pour Unity 1.20.0, combine la puissance du contenu 3D global de Cesium avec l'accessibilité du déploiement web de Unity, supprimant le besoin de magasins d'applications ou d'installations par les utilisateurs.
Au cœur du plugin, on utilise la norme communautaire OGC 3D Tiles, pionnière par Cesium. Cette norme ouverte est spécifiquement conçue pour diffuser d'énormes ensembles de données géospatiales 3D. Avec cela, vous pouvez rendre des villes entières, des pays, ou même un jumeau numérique à l'échelle de la Terre sans surcharger la mémoire de votre système ou la bande passante de vos utilisateurs.
Combiner Cesium pour Unity avec le déploiement web ouvre des possibilités remarquables. Les utilisateurs peuvent explorer des environnements 3D réels et complexes avec rien de plus qu'une URL, abaissant la barrière à des applications et expériences à large usage. Cela en fait une solution idéale pour des outils de formation, des visualisations de planification urbaine, des expériences de cartographie interactive, et bien d'autres.

Fonctionnalités clés pour le déploiement web
Cesium pour Unity comprend des capacités qui sont particulièrement efficaces dans les environnements web :
- L'architecture de streaming signifie que les utilisateurs n'ont pas à télécharger l'ensemble des ensembles de données au départ. Au lieu de cela, les tuiles de terrain et d'imagerie se chargent progressivement à mesure que les utilisateurs naviguent dans la scène. Cette approche maintient des temps de chargement initiaux courts et des performances fluides.
- Accès facile à un contenu géospatial 3D sélectionné et à des pipelines de tuilage 3D, via l'intégration avec les services cloud de Cesium ion. Les utilisateurs peuvent accéder à un terrain mondial, y compris Cesium World Terrain et Google Photorealistic 3D Tiles, ainsi qu'à des images, des bâtiments et des ensembles de données de photogrammétrie. Tous disponibles via un accès en un clic en utilisant l'interface utilisateur intégrée de Cesium ion dans l'éditeur Unity, et peuvent être déployés directement aux utilisateurs sur le web.
Applications du monde réel
La combinaison de Cesium pour Unity et du Web ouvre des portes à de nombreuses applications géospatiales, telles que :
- Les urbanistes peuvent partager des modèles de villes 3D interactifs avec les parties prenantes via des liens web simples.
- Les éducateurs peuvent créer des leçons géographiques explorables auxquelles les étudiants peuvent accéder depuis n'importe quel appareil.
- Les équipes de gestion des urgences peuvent visualiser des scénarios de catastrophe dans un terrain précis sans installations de logiciels spécialisés.
- Les applications touristiques peuvent permettre aux utilisateurs d'explorer virtuellement des destinations en 3D photoréaliste.
- Les promoteurs immobiliers peuvent présenter des propriétés dans un contexte géographique.
- Les chercheurs peuvent créer des visualisations de données interactives qui combinent des ensembles de données scientifiques avec une représentation géographique précise.
Commencer avec Cesium pour Unity pour le web
Si c'est votre première introduction à Cesium pour Unity, suivez le guide de démarrage rapide. Après avoir installé le plugin, configurez votre jeton d'accès Cesium ion, ajoutez le composant CesiumGeoreference pour définir le système de coordonnées de votre monde, et commencez à ajouter des ensembles de tuiles.
Pour construire pour le web, suivez ces étapes essentielles :
Mettez à jour vers v1.20.0+ : Assurez-vous d'avoir la dernière version du package Cesium pour Unity.
Utilisez Unity 6+: Ces versions sont optimisées pour les normes modernes WebGL et WebGPU.
Activer le multithreading: Vous devez activer le multithreading natif C/C++ dans les paramètres de votre lecteur pour la version web.
Augmenter les limites de mémoire : Les tuiles Cesium peuvent être gourmandes en mémoire. Vous devrez peut-être augmenter la limite de mémoire du lecteur web, qui peut être fixée jusqu'à 4 Go.
Configurer les en-têtes du serveur: Lorsque vous déployez votre projet sur un serveur web, votre serveur doit inclure des en-têtes COOP et COEP spécifiques pour activer le multithreading. C'est une exigence de sécurité.
Il est important de noter que le support web est actuellement classé comme "expérimental". Certaines fonctionnalités avancées ou tuiles à forte mémoire peuvent nécessiter une optimisation minutieuse pour bien fonctionner dans les contraintes de mémoire du navigateur.
Plongée technique : Portage vers le web
Compilation pour WebAssembly
Le cœur de Cesium Native est écrit en C++. Pour exécuter ce code dans un navigateur, il doit être compilé en WebAssembly à l'aide d'une chaîne d'outils appelée Emscripten. Un défi principal est que le code Cesium cible généralement des plateformes 64 bits, tandis que le support WebAssembly de Unity est actuellement 32 bits. Cela nécessite une modification du code pour être indépendant de l'architecture. De plus, certaines bibliothèques tierces utilisées par Cesium nécessitent des correctifs pour garantir la compatibilité.
Ré-ingénierie pour le multithreading
Cesium pour Unity s'appuie fortement sur le multithreading pour diffuser des tuiles 3D sans impacter le fil d'exécution principal de l'application. Cependant, la plateforme web de Unity ne prend en charge le multithreading que pour le code natif C++, pas pour le code géré C#. Un pool de threads C++ personnalisé a été mis en œuvre spécifiquement pour les builds web afin de gérer cette limitation. Les travaux qui doivent interagir avec Unity, comme la création de maillages, sont mis en file d'attente et exécutés sur le fil principal pour éviter les erreurs de mémoire, en gardant le travail en arrière-plan en C++ natif et en minimisant l'impact sur le fil principal.
APIs graphiques : WebGL et WebGPU
Les navigateurs offrent deux principales APIs graphiques 3D : l'établi WebGL et le plus récent WebGPU. Cesium pour Unity fonctionne en créant à la fois des objets Mesh et Texture standard de Unity, laissant le travail de rendu au moteur. Bien que largement équivalents pour le rendu de Cesium, il existe des différences mineures. Par exemple, le shader de point de Cesium utilise des fonctionnalités uniquement disponibles dans WebGPU, ce qui signifie que le rendu de nuages de points l'exige. WebGPU ouvre également la porte à d'autres fonctionnalités avancées de Unity comme le VFX Graph.
Considérations de performance sur le web
Les builds web ont naturellement des profils de performance différents de ceux des applications natives. Cesium est déjà bien adapté à ces contraintes, avec des systèmes de niveau de détail qui ajustent automatiquement la qualité pour maintenir des taux de rafraîchissement fluides. Son approche de streaming est également un avantage majeur, car seules les données visibles sont chargées.
Cependant, les développeurs doivent être conscients des limitations de WebAssembly. La vitesse d'exécution est proche de celle du natif mais pas identique en raison du sandboxing de sécurité. Les builds web ne peuvent pas accéder directement au système de fichiers, et la mémoire est actuellement limitée à 32 bits (4 Go). Un projet qui fonctionne bien sur un bureau peut nécessiter une optimisation, comme la réduction des paramètres de qualité ou de la portée, pour fonctionner de manière fluide sur le web.

Le futur de la géospatial sur le web
À mesure que la technologie des navigateurs et WebAssembly continuent de mûrir, l'écart entre les performances des applications web et natives se réduira. Cesium pour Unity est positionné à l'avant-garde de cette évolution, permettant aux développeurs de créer des expériences géospatiales à la fois puissantes et universellement accessibles.
Cette combinaison de la suite créative d'Unity, de la plateforme géospatiale de Cesium et de la portée du web, ouvre de nouvelles opportunités intéressantes pour les développeurs. Des outils de visualisation professionnels aux expériences éducatives immersives, cela fournit la base pour apporter des mondes 3D précis et magnifiques aux navigateurs du monde entier.




