عند العمل مع النماذج الثلاثية الأبعاد، يتيح Jetpack XR SDK استخدام معيار glTF
2.0 المفتوح. عندما يعرض Android XR التطبيقات التي تم إنشاؤها باستخدام الـ
Jetpack XR SDK، سيتم عرض النماذج الثلاثية الأبعاد باستخدام تقنيات العرض المستند إلى الخصائص الفيزيائية(PBR) المحدّدة في معيار glTF 2.0
(بالإضافة إلى الإضافات المتوافقة). يمكن لمعظم أدوات إنشاء المحتوى الرقمي (dcc)
، مثل Autodesk Maya وMaxon ZBrush و
Blender وSpline، تصدير النماذج الثلاثية الأبعاد إلى
تنسيق glTF (.gltf أو .glb ملفات).
إذا حدّد المستخدم أو تطبيقك خلفية SpatialEnvironment، سيتم إضاءة النماذج الثلاثية الأبعاد باستخدام معلومات الإضاءة التي توفّرها خلفية البيئة. ستعكس المواد العاكسة والإضاءات البارزة أيضًا خلفية البيئة. إذا تم تفعيل ميزة "الرؤية من خلال الكاميرا"، ستستند الإضاءة والانعكاسات والإضاءات البارزة إلى غرفة ساطعة ذات ضوء اتجاهي واحد.
للحصول على نظرة عامة سريعة على المواد المتوافقة، يُرجى الرجوع إلى خصائص glTF PBR على موقع Khronos الإلكتروني. للتعرّف على كيفية تخصيص النماذج الثلاثية الأبعاد باستخدام هذه الخصائص وغيرها، يُرجى الاطّلاع على مقالة تخصيص النماذج الثلاثية الأبعاد في تطبيقك
إضافة ملف glTF إلى مجلد مواد العرض
بعد الحصول على ملف glTF، تكون الخطوة التالية هي إضافته إلى مجلّد الموارد في استوديو Android. ننصحك بإنشاء دليل models لتنظيم أنواع مواد العرض بشكل أفضل.

إضافة كائن ثلاثي الأبعاد باستخدام SpatialGltfModel
يتوافق Android XR مع تنسيق glTF للنماذج الثلاثية الأبعاد، التي يتم حفظها عادةً كملفات
.glb. لإضافة هذه العناصر إلى تصميمك، استخدِم الدالة المركّبة
SpatialGltfModel. تسهّل واجهة برمجة التطبيقات هذه عملية تحميل مواد العرض وإدارة حالتها.
لعرض نموذج، حدِّد أولاً مصدره وحالته باستخدام
rememberSpatialGltfModelState. يمكنك تحميل
النماذج من مجلد assets في تطبيقك أو من URI أو
raw data.
val modelState = rememberSpatialGltfModelState( source = SpatialGltfModelSource.fromPath( Paths.get("models/model_name.glb") ) )
بعد تحديد الحالة، استخدِم الدالة المركّبة SpatialGltfModel لعرضها ضمن مساحة فرعية.
SpatialGltfModel(state = modelState, modifier = SubspaceModifier)
وضع نموذج ثلاثي الأبعاد باستخدام عنصر SceneCoreEntity في Compose
لوضع نموذج ثلاثي الأبعاد باستخدام SceneCoreEntity، عليك أولاً تحميل
ملف glTF في الذاكرة باستخدام GltfModel.create(). يمكنك بعد ذلك وضع نموذج ثلاثي الأبعاد
في SceneCoreEntity لربط مكوّنات SceneCore بتصاميم Compose لتطبيقات XR. يُرجى الرجوع إلى
مقالة استخدام SceneCoreEntity لوضع كائن ثلاثي الأبعاد في تصميمك.
وضع نموذج ثلاثي الأبعاد باستخدام Jetpack Scenecore
لتحميل نموذج glTF، استخدِم GltfModel.create().
val gltfModel = GltfModel.create(session, Paths.get("models", "saturn_rings.glb"))
في هذه المرحلة، يتم تحميل النموذج في الذاكرة، ولكن لم يتم عرضه بعد. إذا كان لديك العديد من النماذج الثلاثية الأبعاد لتحميلها أو كان حجم النموذج كبيرًا، ننصحك بتحميلها بشكل غير متزامن مسبقًا. بهذه الطريقة، لن يضطر المستخدمون إلى الانتظار حتى يتم تحميل نماذجك في الذاكرة.
أضِف ملف glTF إلى ActivitySpace. استخدِم
GltfModelEntity.create لإنشاء كيان ووضعه في الـ
ActivitySpace. من أفضل الممارسات التحقّق من أنّ التطبيق في حالة تسمح باستخدام الإمكانات المكانية.
if (session.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)) { val gltfEntity = GltfModelEntity.create(session, gltfModel) }
يجب أن يظهر لك الآن النموذج الثلاثي الأبعاد الذي تم تحميله عند تشغيل تطبيقك.

تحميل نموذج ثلاثي الأبعاد باستخدام Scene Viewer
إذا كنت تبحث عن أبسط طريقة لتحميل نموذج ثلاثي الأبعاد بإمكانات تفاعل أساسية، يمكنك اختيار استخدام Scene Viewer كما تفعل على الأجهزة الجوّالة. يتمثل الاختلاف الرئيسي بين Scene Viewer على Android XR وعلى الأجهزة الجوّالة في أنّ Scene Viewer لا يتيح سوى استخدام مَعلمة URI للملف التي تشير إلى ملف glTF، ويتم تجاهل جميع المَعلمات الأخرى.
Scene Viewer هو تطبيق منفصل يتم استدعاؤه باستخدام هدف ويتم تشغيله في وضع "المساحة الكاملة". نتيجةً لذلك، لن يظهر تطبيقك عندما تستدعيه، وسيركّز Scene Viewer على العرض. ستتم إعادة ضبط أي بيئات ربما غيّرتها إلى الإعدادات المفضّلة للنظام لدى المستخدم.
في ما يلي مثال على استخدام Intent لعرض ملف glTF في Scene Viewer
على Android XR:
val url = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf" val sceneViewerIntent = Intent(Intent.ACTION_VIEW) val intentUri = Uri.parse("https://arvr.google.com/scene-viewer/1.2") .buildUpon() .appendQueryParameter("file", url) .build() sceneViewerIntent.setData(intentUri) try { startActivity(sceneViewerIntent) } catch (e: ActivityNotFoundException) { // There is no activity that could handle the intent. }
لمزيد من المعلومات حول خيارات التفاعل في Scene Viewer، يُرجى الرجوع إلى مستندات تصميم النماذج الثلاثية الأبعاد .
إضافات glTF
يتوافق Jetpack XR SDK مع عدة إضافات gfTF توسّع إمكانات النماذج الثلاثية الأبعاد. تتوفّر هذه الإمكانات من خلال كل من الـ
GltfModelEntity وScene Viewer.
KHR_animation_pointerKHR_draco_mesh_compressionKHR_lights_punctualKHR_materials_clearcoatKHR_materials_sheenKHR_materials_unlitKHR_materials_variantsKHR_mesh_quantizationKHR_texture_basisuKHR_texture_transformEXT_texture_webp