تحسين مواد عرض البيئة

اعتبارًا من الإصدار alpha04 من مكتبات Jetpack XR، تم إجراء تعديلات مهمة على كيفية تقديم ملفات أصول البيئة المكانية للحصول على أفضل أداء وجودة مرئية. تؤثر هذه التغييرات في التوافق، وتتطلّب تحديث التطبيقات الحالية التي تضبط البيئات المكانية.

لتوفير بيئات مكانية، تحتاج إلى مكوّنين رئيسيين:

  • ملف glb. أو gltf. لهندسة البيئة (على سبيل المثال، سطح الأرض، العناصر المجاورة) ونمذج السماء الأساسي الذي يراه المستخدمون
  • ملف ZIP منفصل يحتوي على معلومات الإضاءة المستندة إلى الصور (IBL) تم إنشاؤه من صورة EXR بنطاق ديناميكي عالٍ باستخدام أداة cmgen يتم استخدام ملف ZIP لاحتساب الإضاءة، مثل الانعكاسات على الأجسام، وليس لنسيج صندوق السماء المرئي نفسه.

لماذا هذا النهج؟

توفّر بنية مواد العرض المعدّلة هذه المزايا التالية:

  • أحجام ملفات أصغر: مقارنةً بالطرق السابقة، مثل استخدام ملف واحد لصندوق السماء بنطاق عالي الديناميكية (HDR) بدرجة دقة عالية لكل من العرض المرئي ومعلومات ملفّق الإضاءة، تعمل هذه الطريقة على تقليل أحجام الملفات.
  • تحسين الأداء: يتيح لك فصل نسيج صندوق السماء المرئي (المضمّن في glb) عن بيانات IBL (في ملف ZIP) تحسين كل عنصر بشكل مستقل. ويؤدي ذلك إلى انخفاض معدل نقل البيانات لقراءة ذاكرة الزخرفة وانخفاض استهلاك الطاقة.
  • الإضاءة المحسّنة: من المفيد للأداء استخدام مورد صندوق سماء بدرجة دقة أقل خصيصًا لخريطة الإضاءة بدون التأثير بشكل كبير في النتائج المرئية للإضاءة على الأجسام.

لمزيد من المعلومات عن إضافة بيئة مكانية في تطبيقك، يمكنك الاطّلاع على دليلنا حول إضافة بيئات إلى تطبيقك.

تحسين glb

يمثّل ملف glb الشكل الهندسي حول المستخدم، ويمكنك تضمين الملمس المرئي لصندوق السماء. بالنسبة إلى الأشكال الهندسية، يجب محاولة الحفاظ على حجم الملفات عند 80 ميغابايت أو أقل.

ولإجراء ذلك، هناك عدد من الفرص لجعل بيئتك أكثر فعالية مع الحفاظ على الجودة العالية. على سبيل المثال، يجب أن تكون كثافة الشبكة الأكثر كثافة بالقرب من المستخدم، ويمكنك تقليل الكثافة للشبكات البعيدة عن المستخدم.

  • مسافة العرض: تبلغ مسافة العرض للبيئات في Android XR ‏200 متر من نقطة المستخدم، ويجب أن يلتزم نسيج صندوق السماء بهذه المقياس. ويمنح ذلك تجربة مثالية لأنّ التأثير البصري للبعد النسبي يصبح غير محدّد على هذه المسافة.
  • طول المستخدم: يمكن أن تختلف المواقع الجغرافية، ولكن يجب وضع المستخدم على هضبة بارتفاع متر ونصف تقريبًا لتجنُّب اقتصاص عناصر واجهة المستخدم الأكبر حجمًا في التطبيقات.

  • عدد المضلّعات: يجب الانتباه إلى عدد المضلّعات في ملفات glb، لأنّ ارتفاع عددها قد يؤدي إلى استهلاك طاقة غير ضروري. يجب ألا يتجاوز عدد رؤوس كلّ قسم من الأسطح الهندسية 10,000 رأس.

  • ضغط KTX: يمكنك تحسين أداء وحدة معالجة الرسومات لملف glb من خلال التأكّد من أنّ ملف glb يستخدم خرائط mip وصور ktx2.

ما تحتاج إليه لتحسين نموذج IBL

نزِّل الأداة cmgen لسطر الأوامر:

  • يمكنك العثور على أحدث إصدار في مستودع Filament.
  • ابحث عن ملف tgz .الذي يحتوي على الإصدار المُنشئ مسبقًا من cmgen لنظامك الأساسي، ثم استخرِجه.
  • تتوفّر الأداة المُسبقة الإنشاء ضمن الدليل ‎ /bin من ملف ‎ .tgz المستخرَج.

مواد العرض التي يجب إعدادها لإنشاء ملف zip .لميزة "الإعلانات الصورية على شبكة البحث":

  • ملف EXR بدقة منخفضة يتطابق مع نسيج صندوق السماء
    • يجب أن يكون ملف إدخال نسيج صندوق السماء ملف EXR. على الرغم من أنّ أداة cmgen متوافقة مع تنسيقات أخرى، ننصح باستخدام ملفات EXR لأنّها توفّر معلومات عن كثافة التعديل الديناميكي العالية التي تُعدّ ضرورية لتقديم الإضاءة الداخلية الحقيقية ذات الجودة العالية. يؤدي استخدام تنسيقات أخرى مثل PNG إلى إضاءة أقل دقة.
    • يجب أن تكون الصورة المصدر (EXR) بنسبة عرض إلى ارتفاع تبلغ 2:1 وبأبعاد تشكل درجة أساسية من الدرجة الثانية. استخدِم ملف EXR بدقة 1024 × 512 بكسل. ملاحظة: قد يبدو أنّ دقة 1024 × 512 منخفضة جدًا، ولكنّ ذلك مفيد للأداء. بالنسبة إلى الإضاءة السينمائية، تكون النتائج المرئية للمستخدم مشابهة جدًا لمواد العرض ذات الدقة العالية جدًا للإضاءة السينمائية.
  • ملف png باللون الأسود الخالص
    • يجب أن تكون نسبة عرض إلى ارتفاع مادة العرض هذه أيضًا 2:1. استخدِم حجمًا أبعاده 100 x ‏50 بكسل.
    • ويكون هذا المظهر بمثابة نسيج محسّن لمواكبة الإضاءة الداخلية. لن ينظر المستخدمون إلى هذا، لذلك نركّز مادة العرض على تحسين الأداء.

يعرض ما يلي مثالاً على استخدام cmgen لإنشاء ملف zip .لـ IBL. في هذا المثال، نستخدم ملفَي الإدخال my_360_skybox_1024_x_512.exr و black_skybox.png، وننشئ ملفًا بتنسيق ‎.zip باسم 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 ..