بدءًا من الإصدار alpha04 من مكتبات Jetpack XR، ستتوفّر تحديثات مهمة حول كيفية توفير مواد عرض البيئة المكانية لتحقيق أفضل أداء وجودة مرئية. هذه التغييرات لها تأثير على التوافق وتتطلّب تعديل التطبيقات الحالية التي تضبط البيئات المكانية.
لتوفير بيئات مكانية، تحتاج إلى مكوّنَين رئيسيَّين:
- ملف .glb أو .gltf خاص بهندسة البيئة (مثل مستوى الأرض والأجسام القريبة) ونسيج skybox المرئي الأساسي الذي يراه المستخدمون
- ملف ZIP منفصل يحتوي على معلومات حول الإضاءة المستندة إلى الصور (IBL) تم إنشاؤها من صورة EXR بنطاق عالي الديناميكية باستخدام أداة cmgen. يُستخدم ملف ZIP لاحتساب الإضاءة، مثل الانعكاسات على العناصر، وليس لإنشاء نسيج صندوق السماء المرئي نفسه.
لماذا هذا النهج؟
يوفّر هيكل مواد العرض المعدَّل المزايا التالية:
- أحجام ملفات أصغر: مقارنةً بالطرق السابقة، مثل استخدام ملف واحد عالي الدقة لنطاق HDR لإنشاء صندوق سماء لكل من العرض المرئي ومعلومات الإضاءة، يقلل هذا الأسلوب من أحجام الملفات.
- تحسين الأداء: يتيح لك فصل نسيج صندوق السماء المرئي (المضمّن في ملف glb) عن بيانات الإضاءة المستندة إلى الصور (في ملف ZIP) تحسين كل مكوّن بشكل مستقل. ويؤدي ذلك إلى خفض النطاق الترددي لقراءة بيانات الزخرفة من الذاكرة وخفض استهلاك الطاقة.
- الإضاءة المحسّنة: يمكن تحسين الأداء باستخدام مصدر skybox بدقة أقل مخصّص لخريطة الإضاءة، بدون التأثير بشكل كبير في النتائج المرئية للإضاءة على العناصر.
لمزيد من المعلومات حول إضافة بيئة مكانية إلى تطبيقك، راجِع دليلنا حول إضافة بيئات إلى تطبيقك.
تحسين ملف glb

يمثّل ملف glb الهندسة حول المستخدم، ويتضمّن نسيجًا مرئيًا لـ skybox. بالنسبة إلى الأشكال الهندسية، يجب محاولة الحفاظ على أحجام الملفات عند 80 ميغابايت أو أقل.
لتحقيق ذلك، تتوفّر فرص عديدة لتحسين كفاءة بيئتك مع الحفاظ على الجودة العالية. على سبيل المثال، يجب أن تكون كثافة الشبكة هي الأعلى بالقرب من المستخدم، ويمكنك تقليل الكثافة للشبكات التي تبعد عن المستخدم.
- مسافة العرض: تبلغ مسافة العرض للبيئات في Android XR 200 متر من نقطة المستخدم، ويجب أن يلتزم نسيج صندوق السماء بهذا القيد. ويوفّر ذلك تجربة مثالية لأنّ اختلاف المنظر يصبح غير ملحوظ عند هذه المسافة.
طول المستخدم: يمكن أن تختلف الجغرافيا، ولكن يجب وضع المستخدم على تلّ بارتفاع يبلغ حوالي 1.5 متر لتجنُّب التداخل مع عناصر واجهة المستخدم الأكبر حجمًا في التطبيقات.
عدد المضلّعات: يجب الانتباه إلى عدد المضلّعات في ملفات glb، لأنّ العدد الكبير من المضلّعات قد يؤدي إلى استهلاك غير ضروري للطاقة. يجب ألا يتجاوز عدد الرؤوس في كل رقعة هندسية 10,000 رأس.
ضغط KTX: يمكنك تحسين أداء وحدة معالجة الرسومات لملف glb من خلال التأكّد من أنّ ملف glb يستخدم خرائط mip ونسيج ktx2.
المتطلبات اللازمة لتحسين أداء "الروابط داخل الصفحة"
نزِّل أداة سطر الأوامر cmgen:
- يمكنك العثور على أحدث إصدار في مستودع Filament.
- ابحث عن ملف .tgz الذي يحتوي على الإصدار المُنشأ مسبقًا من cmgen لمنصتك، ثم استخرِجه.
- تتوفّر الأداة المُنشأة مسبقًا في الدليل /bin الخاص بملف .tgz الذي تم استخراجه.
مواد العرض التي يجب إعدادها لإنشاء ملف ZIP لـ IBL:
- ملف EXR منخفض الدقة يتطابق مع نسيج صندوق السماء
- يجب أن يكون ملف إدخال نسيج صندوق السماء بتنسيق EXR. على الرغم من أنّ cmgen يتوافق مع تنسيقات أخرى، ننصح باستخدام ملفات EXR لأنّها توفّر معلومات النطاق الديناميكي العالي الضرورية لتقديم إضاءة IBL عالية الجودة. يؤدي استخدام تنسيقات أخرى، مثل PNG، إلى إضاءة أقل دقة.
- يجب أن تكون نسبة العرض إلى الارتفاع في الصورة المصدر (EXR) هي 2:1، وأن تكون الأبعاد من مضاعفات الرقم 2. استخدِم ملف EXR بحجم 1024 × 512 بكسل. ملاحظة: قد تبدو درجة الدقة 1024 × 512 منخفضة جدًا، ولكنّها مفيدة لتحسين الأداء. بالنسبة إلى IBL، تكون النتائج المرئية للمستخدم مشابهة جدًا للأصول ذات دقة IBL الأعلى بكثير.
- ملف png باللون الأسود الخالص
- يجب أن تكون نسبة العرض إلى الارتفاع في مادة العرض هذه 2:1. استخدِم حجم 100 × 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 ..