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