Unity 3D con Cesium e Meta Quest 3
Uno degli aspetti principali delle attività ALPHA SI riguarda lo sviluppo di applicativi con grafica avanzata nel settore industriale, principalmente manufatturiero ed elettronica per la difesa.
Già da tempo, nel corso di vari progetti, sono state utilizzate diverse tecnologie di grafica avanzata: OpenGL, OpenSceneGraph, VTK ed altri.
Di recente, l’attenzione si è spostata verso l’utilizzo di Unity, nota piattaforma di Game Development, per la realizzazione di applicazioni in ambito industriale.
INDICE
Unity 3D: non solo videogiochi
Unity è un framework di sviluppo per Real-Time 3D Application creato da Unity Technologies. È nato per lo sviluppo di videogiochi ma ormai da diverso tempo è utilizzato anche in altri ambiti. Nel nostro caso l’interesse riguarda lo sviluppo di applicativi di Industrial Digital Twin (rappresentazioni digitali di sistemi industriali), Simulation e VR/AR.
Unity è noto per la sua flessibilità e potenza, rendendolo una scelta popolare nel settore dei giochi e delle applicazioni interattive. Le caratteristiche principali sono:
- Multiplatform: Unity permette di sviluppare applicazioni per una vasta gamma di piattaforme, tra cui Windows, macOS, Linux, Android, iOS, console di gioco come PlayStation e Xbox, e piattaforme web tramite WebGL.
- Ambiente di sviluppo integrato (IDE): L’interfaccia di Unity è intuitiva e user-friendly, con una finestra principale che include la vista della scena, la vista del gioco, la gerarchia degli oggetti e il pannello delle proprietà.
- Grafica e Fisica: Unity offre un potente motore grafico che supporta rendering in tempo reale, illuminazione avanzata, ombre, effetti particellari e shader personalizzati. Include anche un motore fisico integrato che supporta collisioni, rigid body dynamics e simulazioni basate sulla fisica.
- Programmazione: Gli script in Unity sono generalmente scritti in C#. L’ambiente di sviluppo include un editor di script e strumenti di debugging.
- Realità Aumentata e Virtuale: Unity è ampiamente utilizzato per lo sviluppo di applicazioni di realtà aumentata (AR) e realtà virtuale (VR), supportando dispositivi come Oculus Rift, HTC Vive, Microsoft HoloLens e ARKit/ARCore.
- Asset Store: Unity ha un Asset Store integrato dove gli sviluppatori possono acquistare e vendere asset come modelli 3D, textures, suoni, script e plugin. Questo consente di accelerare lo sviluppo fornendo risorse pronte all’uso.
Il Progetto
Nel caso specifico, la necessità era quella di creare un “Mission Viewer” per un complesso sistema di simulazione radaristica. Lo scopo era quello di visualizzare in tempo reale il movimento dei vari target che compongono lo scenario all’interno di una mappa 3d reale (utilizzando le mappe Google).
Il risultato finale è stato più che soddisfacente, confermando la validità di Unity anche al di fuori del Gaming.
Cesium & Google Maps
Per fornire dati geospaziali 3D di alta precisione è stato scelto il framework Cesium, una soluzione specializzata nella visualizzazione di modelli 3D del pianeta in tempo reale, sfruttando immagini satellitari e dati topografici avanzati.
Cesium è stato scelto in quanto perfettamente integrabile in Unity. Cesium for Unity è un plugin sviluppato da Cesium che consente l’integrazione di dati geospaziali 3D in tempo reale all’interno del motore di gioco Unity. Il plugin si integra direttamente nell’editor di Unity, permettendo di utilizzare gli strumenti standard per manipolare e interagire con i dati geospaziali.
Per ottenere il massimo realismo nell’applicazione, il framework Cesium è stato integrato con le mappe 3D fornite da Google Maps.
La combinazione di Unity, Cesium e Google Maps ha permesso di ottenere un livello di dettaglio straordinario, consentendo di esplorare terreni, edifici e altre strutture geografiche in modo estremamente realistico.
Visore 3d
Meta Quest 3, con le sue capacità avanzate di VR standalone, è stato il dispositivo utilizzato per ottenere un’esperienza immersiva nel nostro progetto. Grazie ai suoi sensori di tracciamento avanzati e alla risoluzione ad alta fedeltà, gli utenti possono interagire con ambienti virtuali come se fossero fisicamente presenti al loro interno. La combinazione di Meta Quest 3 con Unity ha permesso di creare un’interazione fluida e reattiva, ottimizzata per garantire il massimo coinvolgimento dell’utente.
Il visore Meta Quest 3 è stato scelto principalmente per la sua facilità d’integrazione in Unity e per la sua doppia funzione di visore standalone (ovvero in grado di eseguire in autonomia l’applicativo) e di “display” secondario collegabile via USB o WiFi al PC (dove è eseguito l’applicativo).
GUI
Quando si realizzano applicativi ingegneristici ed industriali l’interfaccia utente ha sicuramente caratteristiche molto diverse rispetto a quelle di un videogioco. Questo era uno dei primi aspetti da valutare per l’utilizzo di Unity. L’introduzione in Unity dell’UI Toolkit, lo strumento di design interfacce utente GUI, ha sicuramente permesso di colmare questa significativa differenza tra videogiochi e applicativi professionali. L’UI Toolkit permette di realizzare interfacce utente 2D in modo simile a quanto avviene nel web, ci sono quindi forti analogie: l’HTML è sostituito dall’ UXML, i CSS dagli USS e il javascript dal C#.
Conclusioni
Unity si è confermato un valido strumento per la realizzazione di applicativi industriali con grafica 3D. La natura multi-platform (Desktop, Mobile, Web) è poi un punto veramente importante, tra l’altro, come visto nel progetto specifico, estesa al mondo visori VR/AR.
L’UI Toolkit, seppure con un numero limitato di widget predefiniti rispetto ad altri framework, è uno strumento efficace per progettare GUI avanzate. Sfruttando le risorse disponibili nell’Unity Asset Store è comunque possibile ottenere molti oggetti senza necessariamente ricorrere ad uno sviluppo custom.