Jetpack XR kitaplıklarının alpha04 sürümünden itibaren, optimum performans ve görsel kalite için uzamsal ortam öğelerini nasıl sağlamanız gerektiğiyle ilgili önemli güncellemeler yapıldı. Bu değişiklikler uyumluluğu etkiler ve uzamsal ortamlar ayarlayan mevcut uygulamaların güncellenmesini gerektirir.
Uzamsal ortamlar sağlamak için iki ana bileşene ihtiyacınız vardır:
- Ortamın geometrisi (ör. zemin düzlemi, yakındaki nesneler) ve kullanıcıların gördüğü birincil görsel gökyüzü dokusu için .glb veya .gltf dosyası.
- cmgen aracı kullanılarak yüksek dinamik aralıklı bir EXR resminden oluşturulan, görüntü tabanlı aydınlatma (IBL) bilgilerini içeren ayrı bir ZIP dosyası. ZIP dosyası, nesnelerdeki yansımalar gibi aydınlatma hesaplamaları için kullanılır. Görsel gökyüzü dokusu için kullanılmaz.
Neden bu yaklaşım?
Bu güncellenmiş öğe yapısı şu avantajları sunar:
- Daha küçük dosya boyutları: Hem görsel ekran hem de aydınlatma bilgileri için tek bir yüksek çözünürlüklü HDR gökyüzü dosyası kullanmak gibi önceki yöntemlere kıyasla bu yaklaşım, dosya boyutlarını küçültür.
- Daha iyi performans: Görsel gökyüzü dokusunu (glb'ye yerleştirilmiş) IBL verilerinden (ZIP dosyasında) ayırarak her bileşeni bağımsız olarak optimize edebilirsiniz. Bu durum, daha düşük doku belleği okuma bant genişliğine ve daha düşük güç tüketimine yol açar.
- Optimize edilmiş aydınlatma: Özellikle aydınlatma haritası için daha düşük çözünürlüklü bir gökyüzü kutusu kaynağı kullanmak, nesnelerdeki aydınlatmanın görsel sonuçlarını önemli ölçüde etkilemeden performansı artırır.
Uygulamanıza uzamsal bir ortam ekleme hakkında daha fazla bilgi edinmek için uygulamanıza ortam ekleme başlıklı kılavuzumuzu inceleyin.
glb dosyanızı optimize etme

glb dosyanız, kullanıcının etrafındaki geometriyi temsil eder ve gökyüzü kutunuzun görsel dokusunu içerir. Geometriniz için dosya boyutlarını 80 MB veya daha küçük tutmaya çalışmalısınız.
Bunu yapmak için yüksek kaliteyi korurken ortamınızı daha verimli hale getirebileceğiniz çeşitli fırsatlar vardır. Örneğin, ağınızın yoğunluğu kullanıcıya en yakın yerde en yüksek olmalıdır. Kullanıcıdan daha uzakta olan ağların yoğunluğunu azaltabilirsiniz.
- Görünüm mesafesi: Android XR'deki ortamlar için görünüm mesafesi, kullanıcının bulunduğu noktadan 200 metre uzaklıktadır ve gökyüzü kutusu dokunuz bu kısıtlamaya uymalıdır. Bu, en iyi deneyimi sağlar. Çünkü paralaks bu mesafede ayırt edilemez.
Kullanıcı yüksekliği: Coğrafya farklılık gösterebilir ancak uygulamalarda daha büyük kullanıcı arayüzü öğeleriyle kırpılmayı önlemek için kullanıcıyı yaklaşık 1, 5 metre yüksekliğinde bir tümsek üzerine yerleştirin.
Poligon sayısı: Yüksek poligon sayısı gereksiz güç tüketimine yol açabileceğinden, glb dosyalarınızdaki poligon sayısına dikkat edin. Her geometri yaması 10.000 köşeyi aşmamalıdır.
KTX sıkıştırma: glb dosyanızın mipmap'ler ve ktx2 dokular kullandığından emin olarak glb dosyanızın GPU performansını optimize edin.
IBL'nizi optimize etmek için gerekenler
cmgen komut satırı yardımcı programını indirin:
- En son sürümü Filament deposunda bulabilirsiniz.
- Platformunuz için cmgen'in önceden oluşturulmuş sürümünü içeren .tgz dosyasını bulun ve dosyayı çıkarın.
- Önceden oluşturulmuş araç, çıkarılan .tgz dosyasının /bin dizininde bulunur.
IBL için .zip dosyası oluşturmak üzere hazırlanacak öğeler:
- Gökyüzü dokunuza uygun düşük çözünürlüklü bir EXR
- Gökyüzü kutusu dokusu girişiniz bir EXR dosyası olmalıdır. cmgen diğer biçimleri desteklese de EXR'ler, yüksek kaliteli IBL sağlamak için kritik öneme sahip yüksek dinamik aralık bilgileri sağladığından önerilir. PNG gibi diğer biçimlerin kullanılması daha az hassas bir aydınlatma sağlar.
- Kaynak görüntünün (EXR) oranı 2:1 ve boyutları 2'nin kuvveti olmalıdır. 1024 x 512 piksel boyutunda bir EXR kullanın. Not: 1024 x 512 çözünürlüğün çok düşük olduğu düşünülebilir ancak bu çözünürlük performans açısından faydalıdır. IBL'de, kullanıcının gördüğü görsel sonuçlar, çok daha yüksek IBL çözünürlüklü öğelere çok benzer.
- Tamamen siyah bir PNG
- Bu öğenin en-boy oranı da 2:1 olmalıdır. 100 x 50 piksel boyutunu kullanın.
- Bu, IBL'ye eşlik eden optimize edilmiş bir doku görevi görür. Kullanıcılar buna bakmayacağından öğeyi performans için optimizasyona odaklıyoruz.

Aşağıda, IBL için .zip dosyası oluşturmak üzere cmgen'in kullanıldığı bir örnek gösterilmektedir. Bu örnekte, my_360_skybox_1024_x_512.exr ve black_skybox.png adlı giriş dosyalarını kullanıp my_ibl.zip adlı bir .zip dosyası oluşturuyoruz.
# 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 ..