Scegliere un motore 3D prima dello sviluppo di realtà aumentata
Il primo passo nello sviluppo AR è selezionare un motore 3D appropriato. Questo capitolo spiega perché è necessario un motore 3D, i motori 3D comuni nello sviluppo AR e i loro rispettivi vantaggi e svantaggi.
Perché l'AR necessita di un motore 3D
La realtà aumentata non è semplicemente sovrapporre immagini 2D o 3D sul flusso della fotocamera, ma è un sistema tridimensionale in tempo reale. Le sue capacità fondamentali possono includere:
Modellazione della fotocamera reale
Per far apparire gli oggetti virtuali renderizzati più realistici nel mondo reale, è necessario regolare la matrice di proiezione della fotocamera nel motore 3D utilizzato per il rendering in base ai parametri utilizzati dall'immagine reale (ad esempio, parametri intrinseci ed estrinseci, modello di distorsione, ecc.).
Gestione del sistema di coordinate spaziali
Gestire in modo unificato la posizione e l'orientamento tra dispositivo, ambiente, contenuti AR, ecc., occupandosi della selezione, impostazione e conversione tra coordinate mondiali, coordinate della fotocamera e coordinate del dispositivo.
Rendering 3D in tempo reale
Realizzare effetti di occlusione realistici tra oggetti virtuali e ambiente in base alla profondità della scena stimata in tempo reale o alla mesh ricostruita, simulare ombre in base agli algoritmi di stima dell'illuminazione, ottenendo una fusione reale-virtuale convincente.
Gestione delle risorse e del ciclo di vita
Gestire le risorse e i contenuti AR virtuali, coprendone il caricamento, la visualizzazione, la rimozione e altre fasi del ciclo di vita.
Queste capacità costituiscono le responsabilità fondamentali di un tipico motore 3D. Pertanto, selezionare il motore 3D appropriato in base alle esigenze specifiche del progetto è uno dei prerequisiti necessari per implementare rapidamente effetti AR.
Motori 3D comuni
EasyAR supporta vari motori 3D, inclusi quelli comuni come Unity, Unreal o sviluppo nativo (Native). EasyAR fornisce esempi e documentazione di sviluppo per Unity e Native.
Unity
Unity si posiziona come motore 3D in tempo reale generico ed è attualmente la prima scelta per la maggior parte degli sviluppatori AR. Unity supporta nativamente lo sviluppo multipiattaforma per Windows/macOS, nonché iOS/Android/visionOS. L'ecosistema Unity è maturo, con documentazione ed esempi completi.
Native
Rispetto all'utilizzo di motori ad alto livello come Unity, lo sviluppo AR basato direttamente su API grafiche native (come OpenGL, Vulkan, Metal) offre vantaggi riassumibili come segue: minore dipendenza dal sistema, ambiente di esecuzione estremamente snello, possibilità di personalizzare profondamente il modello della fotocamera e gli algoritmi di basso livello. Tuttavia, lo sviluppo con API native comporta costi di progetto e manutenzione elevati, mancanza di editor e strumenti di debug maturi, bassa efficienza di iterazione, difficoltà nella cross-piattaforma e non favorisce una consegna rapida a livello di prodotto. Viene solitamente utilizzato per implementare funzionalità semplici.
Web
Il Web non richiede installazione, è utilizzabile tramite browser, con costi di distribuzione e raggiungimento estremamente bassi. È naturalmente multipiattaforma, adatto per il lancio rapido e l'accesso su larga scala. La soglia di sviluppo è relativamente bassa e l'ecosistema frontend è maturo.
Attualmente, il Web nelle applicazioni AR rimane piuttosto limitato, principalmente a causa delle restrizioni del browser e della sandbox di sicurezza che compromettono prestazioni e supporto per capacità AR fondamentali come il tracciamento del movimento, l'occlusione, l'illuminazione precisa. L'accesso alle capacità del dispositivo è limitato e la stabilità e coerenza sono difficili da garantire. Pertanto, il Web AR è adatto per "mostre e marketing leggeri", non per applicazioni AR complesse ad alta precisione e forte interazione.