Consigli per esportare in GLB
Per garantire la stessa esperienza su ogni device, My AR Studio supporta solo le caratteristiche comuni tra ogni piattaforma (Web, Android, IOS). Fate riferimento a quanto di seguito riportato per ottimizzare l'esportazione GLB delle vostre scene per l'utilizzo in realtà aumentata.
Anche se In questo video useremo Blender, i concetti espressi si applicano a qualsiasi altro editor 3d.
Geometria
Ogni mesh può avere un solo UV set. In caso di UV set multipli viene utilizzato solo il primo.
Non è possibile associare dati ai vertici. Quindi non sono supportati ne vertex color ne vertex animation (conosciuti anche come morph targets, blend shapes, shapekeys).
È possibile istanziare la stessa geometria per risparmiare peso nel file di esportazione. Ogni istanza può avere la propria animazione indipendente.
Gli oggetti vengono posizionati in Realtà Aumentata usando il punto più basso del bounding-box che contiene tutta la geometria della scena. Attenzione che su android e chrome viene considerato il bounding-box del solo primo frame di animazione, mentre su IOS viene considerato il bounding-box dell'intera animazione.
Per scene con oggetti sospesi, inserire un oggetto a livello del terreno in modo da abbassare la base del bounding-box. Se si desidera nasconderlo basterà rimpicciolirlo senza però farlo arrivare a zero.
I flag di visibilità degli oggetti non vengono esportati nel GLB. Per far apparire/sparire un oggetto basta scalarlo dallo 0% al 100% nello spazio di un frame.
Materiali
Và utilizzato un solo materiale per oggetto. Più oggetti possono condividere lo stesso materiale. Multiple istanze dello stesso oggetto possono utilizzare ognuna un materiale diverso.
I formati texture supportati sono jpeg e png. Non sono utilizzabili altri formati immagine, texture animate o file video.
I parametri di un materiale e le coordinate di mappatura delle texture non sono animabili.
Non tutti i tipi di materiale sono sempre esportabili in GLB. Per esempio in blender è necessario usare sempre lo shader principled. Qualunque altro shader (es: diffuse, glossy, volume) sarà ignorato in fase di esportazione. Fare riferimento alla documentazione del proprio software per verificare la compatibilità dei materiali con lo standard GLB.
Rig
È possibile utilizzare un solo scheletro con una sola mesh associata. Ogni vertice può essere deformato da un massimo di 4 ossa, le restanti ossa vengono ignorate.
La mesh associata allo scheletro verra deformata con interpolazione lineare. Può essere necessario utilizzare ossa di supporto per deformare al meglio le articolazioni di personaggi organici. La mesh può essere deformata da ossa con scalatura non uniforme
Animazione
È consigliato impostare l'animazione a 30 fotogrammi al secondo per sincronizzare i fotogrammi con la frequenza di refresh dello schermo della maggior parte dei telefoni. È possibile esportare l'animazione a framerate minori (per esempio 24fps) ma, dato che la frequenza di refresh rimarrà a 30 frame al secondo, potrebbero verificarsi degli sfarfallamenti o interpolazioni indesiderate.
L'inizio e la fine di un animazione coincideranno con il primo e l'ultimo keyframe esportato. Se si desidera avere dei momenti di pausa a inizio o fine animazione basta duplicare i keyframe iniziale/finale e creare lo spazio necessario.
Android e IOS possono calcolare le interpolazioni tra i keyframe in maniera differente. Per mantenere il risultato il più fedele possibile all'originale sarà necessario fare il baking delle tracce di animazione al momento dell'esportazione in GLB. Il baking sarà necessario anche nel caso si utilizzino oggetti pilotati da constraint o driver.
Il formato GLB non supporta i sistemi particellari. Fare riferimento alla documentazione del software utilizzato per l'eventuale conversione delle particelle in oggetti animati.
Per esportare più oggetti animati in un file GLB, bisogna assicurarsi di esportare una singola traccia globale di animazione, invece di multiple tracce indipendenti per ogni oggetto. Le impostazioni di esportazione possono variare a seconda del software utilizzato. Per esempio in Blender bisogna disabilitare Group by NLA Track.