Mengoptimalkan aset lingkungan

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Headset XR
Kacamata XR Berkabel

Mulai rilis alpha04 library Jetpack XR, ada update penting tentang cara Anda harus menyediakan aset lingkungan spasial untuk performa dan kualitas visual yang optimal. Perubahan ini berdampak pada kompatibilitas dan mengharuskan update pada aplikasi yang sudah ada yang menyetel lingkungan spasial.

Untuk menyediakan lingkungan spasial, Anda memerlukan dua komponen utama:

  • File .glb atau .gltf untuk geometri lingkungan (misalnya, bidang tanah, objek di sekitar) dan tekstur skybox visual utama yang dilihat pengguna.
  • File ZIP terpisah yang berisi informasi Image Based Lighting (IBL) yang dihasilkan dari gambar EXR rentang dinamis tinggi menggunakan alat cmgen. File ZIP digunakan untuk penghitungan pencahayaan, seperti pantulan pada objek, dan bukan untuk tekstur skybox visual itu sendiri.

Mengapa pendekatan ini?

Struktur aset yang diperbarui ini memberikan keuntungan berikut:

  • Ukuran file yang lebih kecil: Dibandingkan dengan metode sebelumnya, seperti menggunakan satu file skybox HDR beresolusi tinggi untuk tampilan visual dan informasi pencahayaan, pendekatan ini mengurangi ukuran file.
  • Peningkatan performa: Dengan memisahkan tekstur skybox visual (yang dibuat ke dalam glb) dari data IBL (dalam file ZIP), Anda dapat mengoptimalkan setiap komponen secara terpisah. Hal ini menghasilkan bandwidth baca memori tekstur yang lebih rendah dan konsumsi daya yang lebih rendah.
  • Pencahayaan yang dioptimalkan: Menggunakan resource skybox beresolusi lebih rendah khusus untuk peta pencahayaan bermanfaat bagi performa tanpa memengaruhi hasil visual pencahayaan pada objek secara signifikan.

Untuk mempelajari lebih lanjut cara menambahkan Lingkungan spasial di aplikasi Anda, lihat panduan kami tentang menambahkan lingkungan ke aplikasi Anda.

Mengoptimalkan glb

glb Anda merepresentasikan geometri di sekitar pengguna, dan Anda menyertakan tekstur visual skybox Anda. Untuk geometri, Anda harus mencoba mempertahankan ukuran file sebesar atau lebih kecil dari 80 MB.

Untuk melakukannya, ada sejumlah peluang untuk membuat lingkungan Anda lebih efisien sekaligus mempertahankan kualitas tinggi. Misalnya, kepadatan mesh Anda harus paling padat di dekat pengguna, dan Anda dapat mengurangi kepadatan untuk mesh yang lebih jauh dari pengguna.

  • Jarak pandang: Jarak pandang untuk lingkungan di Android XR adalah 200 m dari titik pengguna, dan tekstur skybox Anda harus mematuhi batasan ini. Hal ini memberikan pengalaman yang optimal karena paralaks menjadi tidak terlihat pada jarak tersebut.
  • Tinggi pengguna: Geografi dapat bervariasi, tetapi posisikan pengguna di gundukan dengan tinggi sekitar 1,5 meter untuk menghindari pemotongan dengan elemen UI yang lebih besar di aplikasi.

  • Jumlah poligon: Perhatikan jumlah poligon dalam file glb Anda, karena jumlah poligon yang tinggi dapat menyebabkan konsumsi daya yang tidak perlu. Setiap patch geometri tidak boleh melebihi 10.000 verteks.

  • Kompresi KTX: Optimalkan performa GPU file glb Anda dengan memastikan glb Anda menggunakan mipmap dan tekstur ktx2.

Yang diperlukan untuk mengoptimalkan IBL

Download utilitas command line cmgen:

  • Anda dapat menemukan rilis terbaru di repositori Filament.
  • Temukan .tgz yang berisi versi cmgen yang telah dibuat sebelumnya untuk platform Anda dan ekstrak.
  • Alat yang telah dibuat sebelumnya berada di direktori /bin dari file .tgz yang diekstrak.

Aset yang perlu disiapkan untuk membuat file .zip untuk IBL:

  • EXR resolusi rendah yang cocok dengan tekstur skybox Anda
    • Input tekstur skybox Anda harus berupa file EXR. Meskipun cmgen mendukung format lain, EXR direkomendasikan karena memberikan informasi rentang dinamis tinggi yang penting untuk menyediakan IBL berkualitas tinggi. Menggunakan format lain seperti PNG akan menghasilkan pencahayaan yang kurang presisi.
    • Gambar sumber (EXR) harus memiliki rasio 2:1 dan dimensi yang merupakan pangkat 2. Gunakan EXR berukuran 1024 x 512 piksel. Catatan: Resolusi 1024 x 512 mungkin tampak terlalu rendah, tetapi hal ini bermanfaat untuk performa. Untuk IBL, hasil visual bagi pengguna sangat mirip dengan aset resolusi IBL yang jauh lebih tinggi.
  • PNG hitam solid
    • Aset ini juga harus memiliki rasio 2:1. Gunakan ukuran 100 x 50 piksel.
    • Tekstur ini berfungsi sebagai tekstur yang dioptimalkan untuk menyertai IBL. Pengguna tidak akan melihatnya, jadi kita memfokuskan aset untuk mengoptimalkan performa.

Berikut contoh penggunaan cmgen untuk membuat file .zip untuk IBL. Dalam contoh ini, kita menggunakan file input bernama my_360_skybox_1024_x_512.exr dan black_skybox.png, lalu kita membuat file .zip bernama 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 ..