Jetpack XR kitaplıklarının alpha04 sürümünden itibaren, en iyi performans ve görsel kalite için mekansal ortam öğelerini nasıl sağlamanız gerektiğiyle ilgili önemli güncellemeler yapıldı. Bu değişiklikler, uyumluluğu etkiler ve mekansal ortamlar ayarlayan mevcut uygulamaların güncellenmesini gerektirir.
Mekansal ortamlar sağlamak için iki ana bileşene ihtiyacınız vardır:
- Ortam geometrisi (ör. zemin düzlemi, yakındaki nesneler) ve kullanıcıların gördüğü birincil görsel gökyüzü kutusu dokusu için bir .glb veya .gltf dosyası.
- cmgen aracı kullanılarak yüksek dinamik aralık EXR görüntüsünden oluşturulan görüntü tabanlı ışıklandırma (IBL) bilgilerini içeren ayrı bir ZIP dosyası. ZIP dosyası, görsel gökyüzü kutusu dokusu için değil, nesnelerdeki yansımalar gibi aydınlatma hesaplamaları için kullanılır.
Bu yaklaşım neden tercih edildi?
Güncellenen bu öğe yapısı aşağıdaki avantajları sağlar:
- Daha küçük dosya boyutları: Hem görsel görüntüleme hem de ışıklandırma bilgileri için tek bir yüksek çözünürlüklü HDR gökyüzü kutusu dosyası kullanma gibi önceki yöntemlere kıyasla bu yaklaşım, dosya boyutlarını azaltır.
- Daha iyi performans: Görsel gökyüzü kutusu dokusunu (glb'ye yerleştirilmiş) IBL verilerinden (ZIP dosyasında) ayırmak, her bir bileşeni bağımsız olarak optimize etmenize olanak tanır. Bu da doku belleği okuma bant genişliğinin ve güç tüketiminin azalmasına yol açar.
- Optimize ışıklandırma: Özellikle ışıklandırma haritası için daha düşük çözünürlüklü bir gökyüzü kutusu kaynağı kullanmak, nesnelerdeki ışıklandırmanın görsel sonuçlarını önemli ölçüde etkilemeden performans açısından faydalıdır.
Uygulamanıza mekansal ortam ekleme hakkında daha fazla bilgi edinmek için uygulamanıza ortam ekleme konulu kılavuzumuza göz atın.
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 eklersiniz. Geometriniz için dosya boyutlarını 80 MB'ta veya altında tutmaya çalışmalısınız.
Bunu yapmak için, yüksek kaliteyi korurken ortamınızı daha verimli hale getirmenizi sağlayacak çeşitli fırsatlar vardır. Örneğin, ağınızın yoğunluğu kullanıcıya yakın yerlerde en yüksek olmalıdır. Kullanıcıdan daha uzaktaki ağların yoğunluğunu azaltabilirsiniz.
- Görüntüleme mesafesi: Android XR'deki ortamların görüntüleme mesafesi, kullanıcının bulunduğu noktadan 200 metredir ve gökyüzü kutusu dokusunuz bu kısıtlamaya uymalıdır. Paralaks bu mesafede ayırt edilemez hale geldiğinden bu, en iyi deneyimi sağlar.
Kullanıcı boyu: Coğrafya değişebilir ancak uygulamalardaki daha büyük kullanıcı arayüzü öğeleriyle kırpılmasını önlemek için kullanıcıyı yaklaşık 1, 5 metre yüksekliğinde bir höyükte konumlandırın.
Poligon sayısı: Yüksek poligon sayısı gereksiz güç tüketimine neden olabileceğinden, glb dosyalarınızdaki poligon sayısına dikkat edin. Her geometri parçası 10.000 köşeyi aşmamalıdır.
KTX sıkıştırma: GLB dosyanızda mipmap ve ktx2 dokularının kullanılmasını sağlayarak 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ı açın.
- Önceden oluşturulmuş araç, ayıklanan .tgz dosyasının /bin dizininde bulunur.
IBL için .zip dosyasını oluşturmak üzere hazırlanacak öğeler:
- Gökyüzü kutusu dokusunuzla eşleşen 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 yüksek kaliteli IBL sağlamak için kritik olan yüksek dinamik aralık bilgilerini sağladığı için EXR'ler önerilir. PNG gibi diğer biçimler kullanıldığında ışıklandırma daha az hassas olur.
- Kaynak görüntünün (EXR) 2:1 oranına ve 2'nin kuvveti olan boyutlara sahip olması gerekir. 1024 x 512 piksel boyutunda bir EXR kullanın. Not: 1024 x 512 çözünürlüğü çok düşük görünebilir ancak performans açısından faydalıdır. IBL için kullanıcının görsel sonuçları, çok daha yüksek IBL çözünürlüğündeki öğelere çok benzer.
- Düz siyah bir PNG
- Bu öğenin oranı da 2:1 olmalıdır. 100 x 50 piksel boyutunda bir resim kullanın.
- Bu, IBL'ye eşlik edecek optimize edilmiş bir doku görevi görür. Kullanıcılar bu öğeye bakmayacağından öğeyi performans için optimize etmeye odaklanırız.
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ı kullanır ve my_ibl.zip adlı bir .zip dosyası oluştururuz.
# 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 ..