Table of Contents

Visualizzazione di contenuti in 3D

Quando si utilizza la realtà aumentata (AR), è spesso necessario visualizzare oggetti virtuali. In semplici esempi di test, si possono utilizzare forme geometriche elementari, ma quando si sviluppa per un pubblico di consumatori, generalmente è necessario visualizzare modelli 3D e animazioni ad alta fedeltà, potenzialmente attivando eventi e interazioni quando si clicca su nodi specifici del modello.

Modelli

I modelli 3D attualmente più popolari sono generalmente costituiti da una maglia triangolare (triangle mesh). Affinché un modello appaia realistico, è necessario assegnare un materiale (material) a ciascun triangolo. Un materiale implementa tipicamente un qualche modello di illuminazione (lighting model) e i suoi contenuti sono costituiti da texture (texture) e parametri del modello di illuminazione.

  • Una texture determina il colore di base di ogni punto all'interno di un triangolo. Le texture di tutti i triangoli sono solitamente combinate in una o più texture diffuse. In utilizzi più avanzati, le texture possono anche rappresentare la direzione normale (normale) o altri parametri in ciascun punto.
  • Il modello di illuminazione definisce come l'oggetto interagisce con la luce, un esempio comune è il PBR (Physically Based Rendering). I modelli di illuminazione sono generalmente implementati utilizzando shader. I parametri del modello PBR includono colore, metallicità (metallic), rugosità (roughness), ecc.

Nello sviluppo di applicazioni, generalmente non si caricano direttamente modelli 3D su OpenGL / Metal / Vulkan / Direct3D, ma si utilizza un motore 3D per il caricamento. I motori 3D richiedono l'uso di formati specifici per i modelli 3D, come il vecchio e più leggibile formato obj/mtl, o il più recente e popolare formato glTF.

Animazione

Per animare un modello, si utilizza l'animazione scheletrica (skeletal animation). Lo scheletro (skeleton) si riferisce ai nodi del modello 3D che rappresentano blocchi di mesh che si muovono in modo coerente come corpi rigidi.

Per visualizzare un'animazione, è necessario aggiornare continuamente in runtime la posizione e l'orientamento (matrice di trasformazione) dei nodi del modello. La maggior parte dei motori 3D fornisce funzionalità di animazione; è sufficiente modificare l'animazione in un software di animazione, esportarla in un formato supportato dal motore 3D e quindi utilizzarla all'interno del motore. Anche il formato glTF menzionato supporta le animazioni.

Interazione

Quando un utente fa clic su un nodo del modello, a volte è necessario attivare eventi e interazioni. Generalmente, si assegnano nomi alle ossa (bones) nell'animazione scheletrica e, utilizzando il rilevamento delle collisioni (collision detection) o il rilevamento a raggi (raycasting), al momento del clic viene attivato un evento che restituisce il nome dell'osso cliccato. La gestione degli eventi può essere effettuata utilizzando script o il codice dell'applicazione.

Nota

Se si ha poca esperienza con i motori 3D, si consiglia vivamente di considerare l'utilizzo di Unity per lo sviluppo dell'applicazione. L'EasyAR Sense Unity Plugin offre un buon supporto per Unity. Se si utilizzano altri motori 3D, si potrebbero riscontrare problemi di supporto e minore disponibilità di risorse.