Scegliere un motore 3D prima dello sviluppo di realtà aumentata
Il primo passo nello sviluppo AR è scegliere un motore 3D adatto. Questo capitolo spiega perché è necessario un motore 3D, quali motori 3D sono comuni nello sviluppo AR e i rispettivi vantaggi e svantaggi.
Perché AR ha bisogno di un motore 3D
La realtà aumentata non consiste semplicemente nel sovrapporre immagini 2D o 3D alla vista della camera, ma è un sistema 3D in tempo reale. Le sue capacità principali possono includere anche:
Modellazione della camera reale
Per fare in modo che gli oggetti virtuali renderizzati appaiano più realistici nel mondo reale, la matrice di proiezione della camera nel motore 3D usato per il rendering deve essere regolata in base ai parametri usati dall'immagine della camera reale, come intrinseci, estrinseci e modello di distorsione.
Gestione del sistema di coordinate spaziali
Gestione unificata di posizione e posa di dispositivi, ambiente, contenuti AR e altri elementi, inclusi selezione, impostazione e conversione tra coordinate del mondo, coordinate della camera e coordinate del dispositivo.
Rendering 3D in tempo reale
Implementa un'occlusione realistica tra oggetti virtuali e ambiente basata sulla profondità della scena stimata in tempo reale o sulla mesh ricostruita, e simula ombre tramite algoritmi di stima dell'illuminazione per ottenere una fusione realistica tra contenuti virtuali e reali.
Gestione di risorse e lifecycle
Gestisce risorse e contenuti AR virtuali, coprendo il lifecycle di caricamento, presentazione e scaricamento.
Queste capacità costituiscono le responsabilità principali di un tipico motore 3D. Pertanto, scegliere un motore 3D appropriato in base ai requisiti specifici del progetto è uno dei prerequisiti necessari per implementare rapidamente effetti AR.
Motori 3D comuni
EasyAR supporta diversi motori 3D, inclusi motori 3D comuni come Unity, Unreal o sviluppo native. EasyAR fornisce esempi e documentazione di sviluppo per Unity e Native.
Unity
Unity è posizionato come motore 3D real-time generico ed è attualmente la prima scelta per la maggior parte degli sviluppatori AR. Unity supporta nativamente lo sviluppo cross-platform per Windows/macOS e iOS/Android/visionOS. L'ecosistema Unity è maturo, con documentazione ed esempi completi.
Native
Rispetto all'uso di motori con incapsulamento di alto livello come Unity, sviluppare AR direttamente con API grafiche native come OpenGL, Vulkan e Metal offre i seguenti vantaggi: meno dipendenze di sistema, ambiente di runtime estremamente semplificato e personalizzazione profonda dei modelli di camera e degli algoritmi di basso livello. Lo sviluppo con API native ha costi di engineering e manutenzione elevati, manca di editor e strumenti di debug maturi, ha bassa efficienza di iterazione ed è difficile da rendere cross-platform. Non favorisce la consegna rapida a livello di prodotto e di solito viene usato per implementare funzionalità semplici.
Web
Web non richiede installazione e può essere usato direttamente nel browser, quindi i costi di distribuzione e raggiungimento degli utenti sono estremamente bassi. È naturalmente cross-platform, adatto a lanci rapidi e accesso utenti su larga scala, e ha una soglia di sviluppo relativamente bassa con un ecosistema frontend maturo.
Attualmente Web è ancora relativamente limitato nelle applicazioni AR. I limiti principali sono che le prestazioni sono vincolate da browser e security sandbox, il supporto per capacità AR fondamentali come motion tracking, occlusion e illuminazione accurata è insufficiente, l'accesso alle capacità del dispositivo è limitato e stabilità e coerenza sono difficili da garantire. Pertanto Web AR è adatto a presentazioni leggere e marketing, ma non ad applicazioni AR complesse ad alta precisione e forte interazione.