Ottimizza gli asset dell'ambiente

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo

A partire dalla release alpha04 delle librerie Jetpack XR, sono stati apportati importanti aggiornamenti al modo in cui devi fornire gli asset dell'ambiente spaziale per prestazioni e qualità visiva ottimali. Queste modifiche hanno un impatto sulla compatibilità e richiedono l'aggiornamento delle app esistenti che impostano ambienti spaziali.

Per fornire ambienti spaziali, sono necessari due componenti principali:

  • Un file .glb o .gltf per la geometria dell'ambiente (ad esempio, il piano di terra, gli oggetti vicini) e la texture skybox visiva principale che gli utenti vedono.
  • Un file ZIP separato contenente le informazioni sull'illuminazione basata su immagini (IBL) generate da un'immagine EXR ad alta gamma dinamica utilizzando lo strumento cmgen. Il file ZIP viene utilizzato per i calcoli dell'illuminazione, ad esempio i riflessi sugli oggetti, e non per la texture della skybox visiva stessa.

Perché questo approccio?

Questa struttura degli asset aggiornata offre i seguenti vantaggi:

  • Dimensioni dei file più piccole:rispetto ai metodi precedenti, come l'utilizzo di un singolo file skybox HDR ad alta risoluzione sia per la visualizzazione visiva che per le informazioni sull'illuminazione, questo approccio riduce le dimensioni dei file.
  • Prestazioni migliorate:la separazione della texture della skybox visiva (integrata nel file GLB) dai dati IBL (nel file ZIP) consente di ottimizzare ogni componente in modo indipendente. Ciò comporta una minore larghezza di banda di lettura della memoria delle texture e un minore consumo energetico.
  • Illuminazione ottimizzata: l'utilizzo di una risorsa skybox a risoluzione inferiore specificamente per la mappa di illuminazione è vantaggioso per le prestazioni senza influire in modo significativo sui risultati visivi dell'illuminazione sugli oggetti.

Per scoprire di più su come aggiungere un ambiente spaziale alla tua app, consulta la nostra guida su come aggiungere ambienti alla tua app.

Ottimizzare il file GLB

Il file GLB rappresenta la geometria intorno all'utente e include la texture visiva della skybox. Per la geometria, prova a mantenere le dimensioni dei file pari o inferiori a 80 MB.

Per farlo, esistono diverse opportunità per rendere il tuo ambiente più efficiente mantenendo una qualità elevata. Ad esempio, la densità della mesh deve essere massima vicino all'utente e puoi diminuirla per le mesh più lontane dall'utente.

  • Distanza di visualizzazione:la distanza di visualizzazione per gli ambienti in Android XR è di 200 metri dal punto di vista dell'utente e la texture della skybox deve rispettare questo vincolo. In questo modo si ottiene un'esperienza ottimale perché la parallasse diventa indiscernibile a quella distanza.
  • Altezza utente:la geografia può variare, ma posiziona l'utente su un tumulo a circa 1,5 metri di altezza per evitare il clipping con elementi dell'interfaccia utente più grandi nelle app.

  • Conteggio dei poligoni:presta attenzione al conteggio dei poligoni nei file GLB, in quanto un conteggio elevato può comportare un consumo di energia non necessario. Ogni patch di geometria non deve superare i 10.000 vertici.

  • Compressione KTX:ottimizza le prestazioni della GPU del file GLB assicurandoti che utilizzi mipmap e texture KTX2.

Che cosa serve per ottimizzare l'IBL

Scarica l'utilità a riga di comando cmgen:

  • Puoi trovare l'ultima versione nel repository di Filament.
  • Trova il file .tgz contenente la versione precompilata di cmgen per la tua piattaforma ed estrailo.
  • Lo strumento precompilato si trova nella directory /bin del file .tgz estratto.

Asset da preparare per generare il file ZIP per l'IBL:

  • Un file EXR a bassa risoluzione che corrisponde alla texture della skybox
    • L'input della texture skybox deve essere un file EXR. Sebbene cmgen supporti altri formati, i file EXR sono consigliati perché forniscono le informazioni sull'alta gamma dinamica fondamentali per fornire IBL di alta qualità. L'utilizzo di altri formati come PNG produce un'illuminazione meno precisa.
    • L'immagine di origine (EXR) deve avere proporzioni 2:1 e dimensioni che siano una potenza di 2. Utilizza un EXR di 1024 x 512 pixel. Nota: potrebbe sembrare che 1024 x 512 sia una risoluzione troppo bassa, ma ciò è vantaggioso per le prestazioni. Per l'IBL, i risultati visivi per l'utente sono molto simili a quelli di asset IBL con una risoluzione molto più elevata.
  • Un PNG nero pieno
    • Anche questo asset deve avere proporzioni 2:1. Utilizza una dimensione di 100 x 50 pixel.
    • che funge da texture ottimizzata per accompagnare l'IBL. Gli utenti non lo vedranno, quindi ci concentriamo sull'ottimizzazione dell'asset per il rendimento.

Di seguito è riportato un esempio di utilizzo di cmgen per creare il file ZIP per IBL. In questo esempio utilizziamo i file di input denominati my_360_skybox_1024_x_512.exr e black_skybox.png e creiamo un file .zip denominato my_ibl.zip

# Produce black cubemaps for the texture of the IBL asset.
./cmgen --format=rgb32f --size=128 --extract=./skybox_ibl ./black_skybox.png

# Produce lighting cubemaps and a Spherical Harmonics from EXR
./cmgen --format=rgb32f --size=128 --deploy=./skybox_ibl --ibl-ld=. --ibl-samples=1024 --extract-blur=0.0 --sh-irradiance --sh-shader --sh-output=./skybox_ibl/sh.txt ./my_360_skybox_1024_x_512.exr

# Copy all of the black cubemaps into the other folder.
cp -rf ./skybox_ibl/black_skybox/* ./skybox_ibl/my_360_skybox_1024_x_512

# Rename the directory to reflect that these are old assets.
mv ./skybox_ibl/black_skybox ./skybox_ibl/black_skybox_old

# Rename the directory to reflect that these are your cubemap assets.
mv ./skybox_ibl/my_360_skybox_1024_x_512 ./skybox_ibl/black_skybox

# Change into the child directory.
cd ./skybox_ibl

# Zip all of the cubemap and the Spherical Harmonics assets together.
zip -q my_ibl.zip black_skybox/*

# Return to the directory you started in.
cd ..