بعد إضافة تصميم ثلاثي الأبعاد إلى تطبيقك، يمكنك تحسين التجربة المرئية من خلال تحديد خصائص مواد مخصّصة وتطبيق نقوش على العنصر. يستند نظام المواد في Jetpack XR إلى مواصفات glTF™ 2.0، ويتم عرض التصاميم الثلاثية الأبعاد باستخدام العرض المستند إلى الفيزياء (PBR). وهي معايير مفتوحة المصدر تحتفظ بها مجموعة Khronos.
يمكن تعديل سمات المواد أثناء وقت التشغيل لتغيير مظهر أحد العناصر بشكل ديناميكي استنادًا إلى بيانات أدخلها المستخدم أو الحالة الحالية للتطبيق.
للحصول على تفاصيل حول كل سمة متوافقة والمَعلمات القابلة للتخصيص في Android XR، يُرجى الاطّلاع على المستندات المرجعية. لفهم هذه السمات بشكل أفضل، يُرجى الاطّلاع على مسرد مصطلحات Khronos.
تخصيص خصائص المواد في التصميم الثلاثي الأبعاد
تحدّد Material مجموعة من الخصائص المرئية لسطح أحد العناصر، وتحدّد كيفية تفاعل هذا السطح مع الضوء في المشهد.
في Jetpack XR، يتم استخدام الفئتين KhronosPbrMaterial وKhronosUnlitMaterial
لإنشاء هذه المواد ومعالجتها. وكما يوحي الاسم، فإنّ KhronosUnlitMaterials لا تضيء ولا تتأثر بإضاءة المشهد. تتيح لك KhronosPbrMaterial تخصيص مجموعة أكبر من الخصائص، مثل لون اللمعان ومدى معدنية أو خشونة العنصر وما إذا كان يصدر ضوءًا.

لتخصيص خصائص المواد في تصميمك الثلاثي الأبعاد، عليك أولاً إنشاء المادة الجديدة باستخدام 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 = 0.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.