عند العمل مع تصاميم ثلاثية الأبعاد، تتوافق حزمة تطوير البرامج (SDK) الخاصة بـ Jetpack XR مع المعيار المفتوح glTF 2.0. عندما يعرض Android XR التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج Jetpack XR، سيتم عرض التصاميم الثلاثية الأبعاد باستخدام تقنيات العرض المستند إلى الفيزياء(PBR) المحدّدة في معيار glTF 2.0 (بالإضافة إلى الإضافات المتوافقة). يمكن لمعظم أدوات إنشاء المحتوى الرقمي (dcc)، مثل Autodesk Maya وMaxon ZBrush وBlender وSpline، تصدير تصاميم ثلاثية الأبعاد بتنسيق glTF (ملفات .gltf أو .glb).
إذا تم تحديد SpatialEnvironment skybox من قِبل المستخدم أو تطبيقك، ستتم إضاءة التصاميم الثلاثية الأبعاد باستخدام معلومات الإضاءة التي يوفّرها skybox الخاص بالبيئة. ستعكس المواد العاكسة واللمعان أيضًا
صندوق السماء المحيط. إذا تم تفعيل ميزة "الرؤية المجسمة"، ستستند الإضاءة والانعكاسات واللمعان إلى غرفة مضاءة بنور واحد.
للحصول على نظرة عامة سريعة على المواد المتوافقة، يُرجى الرجوع إلى خصائص PBR في glTF على موقع 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)
وضع نموذج ثلاثي الأبعاد باستخدام Compose SceneCoreEntity
لوضع تصميم ثلاثي الأبعاد باستخدام SceneCoreEntity، عليك أولاً تحميل ملف glTF في الذاكرة باستخدام GltfModel.create(). يمكنك بعد ذلك وضع تصميم ثلاثي الأبعاد في SceneCoreEntity لربط مكونات SceneCore بتنسيقات Compose for 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
تتوافق حزمة تطوير البرامج (SDK) الخاصة بـ Jetpack XR مع العديد من إضافات glTF التي توسّع إمكانات التصاميم الثلاثية الأبعاد. تتوفّر هذه الإمكانات من خلال كل من
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