عند العمل مع تصاميم ثلاثية الأبعاد، يتيح 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 الإلكتروني.
هناك طريقتان أساسيتان لتحميل التصاميم الثلاثية الأبعاد في التطبيقات التي تم إنشاؤها باستخدام Jetpack XR SDK.
- تحميل التصميم في
ActivitySpaceكما هو موضّح في وضع تصميم ثلاثي الأبعاد فيActivitySpace - استخدام Scene Viewer المضمّن من خلال هدف
وضع تصميم ثلاثي الأبعاد في ActivitySpace
بعد الحصول على ملف glTF، تكون الخطوة التالية هي إضافته إلى مجلّد الموارد في استوديو Android. ننصحك بإنشاء دليل models لتنظيم أنواع مواد العرض بشكل أفضل.

لتحميل نموذج 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) }
يجب أن يظهر لك الآن التصميم الثلاثي الأبعاد الذي تم تحميله عند تشغيل تطبيقك.

إضافة تصميم ثلاثي الأبعاد باستخدام 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 لوضع تصميم ثلاثي الأبعاد في تنسيقك.
تحميل تصميم ثلاثي الأبعاد باستخدام 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