بعد إضافة تصميم ثلاثي الأبعاد إلى تطبيقك، يمكنك تحسين التجربة المرئية والتفاعلية من خلال تخصيصه. على سبيل المثال، يمكنك تشغيل الرسوم المتحركة المضمّنة بتنسيق glTF والتحكّم فيها، وتحديد خصائص مواد مخصّصة (مثل الألوان الأساسية أو خشونة المعدن)، وتطبيق مواد مخصّصة على تصاميمك الثلاثية الأبعاد. تتيح لك هذه الإمكانات تغيير مظهر الكائن وسلوكه بشكل ديناميكي في وقت التشغيل.
تحريك التصاميم الثلاثية الأبعاد
كجزء من مواصفات glTF، يمكن أن تتضمّن التصاميم الثلاثية الأبعاد صورًا متحركة مضمّنة.
تتوافق حزمة تطوير البرامج (SDK) الخاصة بـ Jetpack XR مع الصور المتحركة الهيكلية (المزوّدة بنظام تحكّم) والصلبة والمستهدِفة للتشكّل (أشكال الدمج). يمكن أيضًا استخدام الصور المتحركة الخاصة بالمواد التي تم إنشاؤها باستخدام
إضافة KHR_animation_pointer glTF.
لتشغيل حركة، حدِّد اسم المسار المحدّد من قائمة animations. اتّصِل على
GltfAnimation.start() لبدء التشغيل. يمكنك اختياريًا تحديد السرعة ووقت البحث وما إذا كان يجب تكرار الصورة المتحركة باستخدام GltfAnimationStartOptions.
val animation = gltfEntity.animations.find { it.name == "Walk" } animation?.start(GltfAnimationStartOptions(shouldLoop = true))
يمكنك أيضًا استخدام الصور المتحركة pause() وresume() وstop()، بالإضافة إلى استخدام seekTo() للانتقال إلى وقت معيّن في مسار الصورة المتحركة. للاستعلام عن الحالة الحالية للصورة المتحركة، استخدِم GltfAnimation.AnimationState.
تخصيص خصائص المواد في التصميم الثلاثي الأبعاد
يستند نظام المواد في Jetpack XR إلى مواصفات glTF™ 2.0، ويتم عرض التصاميم الثلاثية الأبعاد باستخدام العرض المستند إلى الفيزياء (PBR). يمكنك تعديل سمات المواد أثناء وقت التشغيل لتغيير مظهر أحد العناصر بشكل ديناميكي استنادًا إلى بيانات أدخلها المستخدم أو الحالة الحالية للتطبيق.
تحدّد Material مجموعة من الخصائص المرئية لسطح أحد العناصر، وتحدّد كيفية تفاعل هذا السطح مع الضوء في المشهد.
في Jetpack XR، يتم استخدام الفئتين KhronosPbrMaterial وKhronosUnlitMaterial
لإنشاء هذه المواد ومعالجتها. وكما يوحي الاسم، فإنّ KhronosUnlitMaterials لا تضيء ولا تتأثر بإضاءة المشهد. تتيح لك KhronosPbrMaterial تخصيص مجموعة أكبر من الخصائص، مثل لون اللمعان ومدى معدنية أو خشونة العنصر وما إذا كان يصدر ضوءًا.
لمزيد من المعلومات حول كل سمة متوافقة والمَعلمات القابلة للتخصيص في Android XR، يُرجى الاطّلاع على المستندات المرجعية. لفهم هذه السمات بشكل أفضل، يُرجى الاطّلاع على مسرد مصطلحات Khronos.

لتخصيص خصائص المواد في تصميمك الثلاثي الأبعاد، عليك أولاً إنشاء المادة الجديدة باستخدام KhronosPbrMaterial. عليك ضبط
AlphaMode المناسب للمظهر المرئي الذي تحاول تحقيقه:
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
بعد ذلك، حدِّد الخصائص التي تريد تعديلها. في هذا المثال، نستخدم
setBaseColorFactor لتغيير اللون الأساسي. تتطلّب هذه الطريقة
Vector4، حيث تتوافق المكوّنات x وy وz وw مع قيم RGBA
(الأحمر والأخضر والأزرق والألفا) على التوالي:
pbrMaterial.setBaseColorFactor( Vector4( x = 0.5f, y = 0.0f, z = 0.5f, w = 1.0f ) )
إنشاء مواد مخصّصة للتصميم الثلاثي الأبعاد
Texture هو مادة عرض صورة يمكنك تطبيقها على سطح تصميم ثلاثي الأبعاد لتوفير اللون أو التفاصيل أو معلومات أخرى عن السطح. تتيح واجهة برمجة التطبيقات Jetpack XR
Texture API تحميل بيانات الصور، مثل ملفات PNG، من مجلد /assets/ في تطبيقك بشكل غير متزامن.
عند تحميل مادة، يمكنك تحديد TextureSampler، ما يتحكّم في طريقة عرض المادة. يحدّد أداة أخذ العيّنات خصائص الفلترة (عندما يظهر النسيج أصغر أو أكبر من حجمه الأصلي) وأوضاع الالتفاف (للتعامل مع الإحداثيات خارج النطاق [0, 1] العادي).
إنّ الكائن Texture وحده هو مجرد بيانات، ويجب تعيينه إلى Material
لإحداث تأثير مرئي على تصميم ثلاثي الأبعاد.

لإنشاء نسيج مخصّص، عليك أولاً حفظ ملف الصورة في مجلد /assets/. كأفضل ممارسة، ننصحك بإنشاء textures
مجلد فرعي في هذا المجلد أيضًا.
بعد حفظ الملف في الدليل المناسب، أنشئ الملمس باستخدام واجهة برمجة التطبيقات Texture. يمكنك أيضًا إضافة TextureSampler اختيارية إذا لزم الأمر:
val texture = Texture.create( session = xrSession, path = Path("textures/texture_file.png") )
بعد ذلك، حدِّد نوع الملمس واضبط المَعلمات المناسبة له. في هذا المثال، نطبّق زخرفة انسداد ونضبط القوة:
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
تطبيق المواد والتركيبات على العناصر الثلاثية الأبعاد
لتطبيق المادة أو السطح الجديدَين، عليك تجاهل المادة الحالية لعقدة معيّنة في عقدة glTF. يمكنك إجراء ذلك من خلال استدعاء setMaterialOverride على GltfModelNode:
gltfModelNode.setMaterialOverride( material = pbrMaterial )
لإزالة المواد التي تم إنشاؤها حديثًا، استدعِ الدالة clearMaterialOverride على العقدة التي تم استبدالها سابقًا في GltfModelNode. سيؤدي ذلك إلى إعادة تصميمك الثلاثي الأبعاد إلى حالته التلقائية:
gltfModelNode.clearMaterialOverride()
glTF وشعار glTF هما علامتان تجاريتان مسجّلتان تملكهما شركة Khronos Group Inc.