تخصيص النماذج الثلاثية الأبعاد في تطبيقك

أجهزة XR المشمولة
تساعدك هذه الإرشادات في تطوير تجارب لهذه الأنواع من أجهزة الواقع الممتد (XR).
سماعات رأس بنظام الواقع الممتد
نظارات سلكية بنظام الواقع الممتد

بعد إضافة تصميم ثلاثي الأبعاد إلى تطبيقك، يمكنك تحسين التجربة المرئية من خلال تحديد خصائص مواد مخصّصة وتطبيق نقوش على العنصر. يستند نظام المواد في 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 على GltfModelEntity:

gltfModelEntity.setMaterialOverride(
    material = pbrMaterial,
    nodeName = "Node Name"
)

لإزالة المواد التي تم إنشاؤها حديثًا، استدعِ الدالة clearMaterialOverride على العقدة التي تم استبدالها سابقًا في GltfModelEntity. سيؤدي ذلك إلى إعادة تصميمك الثلاثي الأبعاد إلى حالته التلقائية:

gltfModelEntity.clearMaterialOverride(
    nodeName = "Node Name"
)


‫glTF وشعار glTF هما علامتان تجاريتان مسجّلتان تملكهما شركة Khronos Group Inc.