Visualizzazione di contenuti spaziali 3D
Quando si usa AR, di solito è necessario mostrare oggetti virtuali. Nei sample di test semplici si possono usare forme geometriche semplici, ma per lo sviluppo destinato ai consumatori di solito è necessario mostrare modelli 3D e animazioni ad alta precisione, e possono essere attivati eventi e interazioni quando si cliccano i nodi del modello.
Modelli
I modelli 3D attualmente più diffusi sono generalmente composti da triangle mesh. Per rendere realistico un modello, dobbiamo assegnare material a ogni triangolo. Material di solito implementa un lighting model, e il suo contenuto è composto da texture e parametri del lighting model.
- Texture determina il colore base di ogni punto del triangolo. Le texture di tutti i triangoli vengono collocate in una o più diffuse texture. In alcuni usi avanzati, texture può anche essere usata per rappresentare la direzione normale o altri parametri di ogni punto.
- Lighting model definisce come un oggetto interagisce con la luce. Un esempio comune è PBR. Lighting model è di solito implementato con shader. I parametri di un PBR lighting model includono colore, metallic, roughness e così via.
Nello sviluppo di applicazioni, i modelli 3D di solito non vengono caricati direttamente su OpenGL / Metal / Vulkan / Direct3D, ma vengono caricati usando un 3D engine. Un 3D engine richiede alcuni formati specifici di modello 3D, come il formato obj / mtl, storico e relativamente leggibile, e il formato glTF attualmente popolare.
Animazione
Per far muovere il modello, è necessaria skeletal animation. Bones indica grandi nodi del modello 3D che mantengono un movimento coerente durante il movimento rigid-body.
Per mostrare l'animazione, la posizione e la pose (transformation matrix) dei nodi del modello devono essere aggiornate continuamente a runtime. La maggior parte dei 3D engine offre funzioni di animazione. È sufficiente modificare l'animazione nel software di authoring e esportarla in un formato supportato dal 3D engine, quindi può essere usata nel 3D engine. Anche il formato glTF sopra indicato include funzioni di animazione.
Interazione
Quando l'utente clicca un nodo del modello, a volte è necessario attivare eventi e interazioni. Di solito si assegnano nomi ai bones in skeletal animation e si usa collision detection o ray detection per attivare eventi al clic e restituire il nome del bone cliccato. La gestione degli eventi può essere eseguita con script o codice applicativo.
Nota
Se non si ha esperienza con 3D engine, si consiglia vivamente di considerare Unity per sviluppare l'applicazione. EasyAR Sense Unity Plugin supporta bene Unity. Se si usano altri 3D engine, si potrebbero incontrare meno supporto e meno risorse disponibili.