استيراد مواد العرض الثلاثية الأبعاد ومعاينتها

تعرّف على كيفية استيراد نماذج ثلاثية الأبعاد وتحويلها إلى تنسيق Sceneform ومعاينتها في Android Studio.

استيراد مادة عرض جديدة ثلاثية الأبعاد

يدعم Sceneform مواد العرض الثلاثية الأبعاد بالتنسيقات التالية:

  • OBJ
  • glTF (الصور المتحركة غير متاحة)
  • FBX، باستخدام الصور المتحركة أو بدونها

اتّبِع الخطوات التالية لاستيراد مادة عرض جديدة ثلاثية الأبعاد:

  1. تحقق من أن مجلد app في مشروعك يحتوي على مجلد sampledata.

    لإنشاء المجلد، انقر بزر الماوس الأيمن على المجلد app في نافذة المشروع، ثم اختَر جديد &gt؛ نموذج دليل بيانات.

    يُعدّ مجلد sampledata جزءًا من مشروع"استوديو Android"، ولكن لن يتم تضمين محتواه في حزمة APK.

  2. انسخ ملف مادة عرض مصدر النموذج ثلاثي الأبعاد (*.obj أو *.fbx أو *.gltf) وجميع تبعياته (*.mtl أو *.bin أو *.png أو *.jpg أو غير ذلك) إلى مجلد sampledata.

    لا تنسخ ملفات المصدر هذه إلى مجلد assets أو res لمشروعك، حيث سيؤدي ذلك إلى تضمينها في حزمة APK بدون داعٍ.

  3. انقر بزر الماوس الأيمن على مادة عرض مصدر النموذج ثلاثي الأبعاد واختر استيراد مادة عرض Sceneform لبدء عملية الاستيراد.

    يتم استخدام القيم من خلال إدخال sceneform.asset() في app's build.gradle، وتحديد مكان إنشاء ملفات *.sfa و*.sfb في مشروعك.

    إذا كنت تستورد نموذجًا للمرة الأولى، استخدِم القيم التلقائية.

    الحقل الوصف
    مسار مادة العرض المصدر اسم ملف مادة العرض الخاصة بنموذج OBJ أو FBX أو glTF الذي سيتم استيراده.
    المادة الأساسية default يطلب Sceneform's أن يستخدم المادة المدمجة. أو المسار إلى المادة المخصّصة. *.mat
    .sfa إخراج المسار يمكنك استخدام المسار التلقائي أو تحديد مسار آخر ضمن المجلد sampledata.

    يتم إنشاء ملف sfa .في حال فقدانه. ويمكن تعديلها للتحكّم في بعض جوانب عملية الاستيراد.

    يضمن هذا الإجراء عدم تضمين *.sfa في ملف APK الخاص بك بدون ضرورة.

    .sfb إخراج المسار ويتم استخدام المجلد src/main/assets/ تلقائيًا، ما يتيح استخدام أسماء ملفات الأصول العشوائية.

    إذا كان اسم الملف (بدون امتداد الملف) هو معرّف مورد صالح (مثل R.raw.filename)، يمكنك بدلاً من ذلك استخدام المجلد src/main/res/raw/ إذا أردت.

    اطّلِع على نظرة عامة على مراجع التطبيقات في نظام التشغيل Android لمعرفة المزيد من المعلومات عن استخدام المجلدين assets/ وres/ في تطبيقك.

    ملفات الصور المتحركة

    إذا كنت تستورد *.fbx ملفات رسوم متحركة، انقر على علامة الجمع (+) وأضِف بقية الملفات بشكل فردي.

  4. انقر على Finish (إنهاء) لبدء عملية الاستيراد.

لاستيراد مادة العرض، عليك تنفيذ ما يلي:

  1. تُضيف المكوّن الإضافي Sceneform gradle إلى project's build.gradle إذا لم يكن متوفّرًا حاليًا:

    dependencies {
        …
        classpath 'com.google.ar.sceneform:plugin:1.15.0'
    }
    
  2. يتم تعديل ملف build.gradle app's لتضمين سطر apply plugin، وإدخال sceneform.asset() لمادة العرض التي تم استيرادها حديثًا:

    apply plugin: 'com.google.ar.sceneform.plugin'
    
    sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import.
            'default',                            // 'Material Path' specified during import.
            'sampledata/models/andy.sfa',         // '.sfa Output Path' specified during import.
            'src/main/res/raw/andy')              // '.sfb Output Path' specified during import.
    

    تُنشئ هذه الإدخالات الجديدة في app's build.gradle مهمّتَين:

    • تنشئ createAsset-<asset-name> ملف تعريف مادة عرض Sceneform (*.sfa) إذا لم يكن متوفّرًا بعد.

      لن تؤدي هذه المهمة إلى استبدال ملف *.sfa الحالي، ما يعني أنّه لن يتم استبدال أي تعديلات تُجريها على ملف SFA بعد استيراده.

      وملف *.sfa هو ملف نصي يتضمّن وصفًا كاملاً يمكن للمستخدمين قراءته حول إعدادات استيراد مواد العرض. وهو يشير إلى النماذج والزخارف في مادة عرض المصدر، ويعرّف أيضًا المواد من خلال تقديم معلَمات جوهرية للمواد القائمة على الطراز البيئي.

    • تُجمِّع compileAsset-<asset-name> الملف *.sfa في ملف Syeneform الثنائي (*.sfb).

      يتم تضمين ملف *.sfb هذا في ملف APK لتطبيقك، ويتم تحميله في وقت التشغيل لإنشاء العرض القابل للعرض.

    للحصول على مزيد من المعلومات، يمكنك الاطّلاع على مرجع Syneform Gradle المكوّن الإضافي.

  3. يتم فتح *.sfa في نافذة نصية و*.sfb في نافذة مُشاهد.

تعديل مادة عرض ثلاثية الأبعاد تم استيرادها سابقًا

عند تعديل ملف مصدر مصدر نموذج OBJ أو FBX أو glTF الذي تم استيراده مسبقًا (*.obj أو *.fbx أو *.gltf)، يؤدي إدخال sceneform.asset() المقابل في app's build.gradle إلى إنشاء المكوّن الإضافي تلقائيًا لملف *.sfb محدّث بناءً على معلمات *.sfa الحالية.

لإعادة ضبط المعلمات على مادة عرض تم استيرادها من قبل:

  • يمكنك تعديل ملف *.sfa النصي، باستخدام مرجع تنسيق ملف SFA كدليل.
  • احفظ التغييرات. ويؤدي ذلك إلى إعادة تجميع مادة العرض وتعديل ملف *.sfb.
  • عايِن مادة العرض المعدَّلة من خلال النقر مرّتين على الملف *.sfb لفتح نافذة مُشاهد مادة العرض.

إذا كنت تريد تعديل مادة عرض تم استيرادها سابقًا تتضمّن بيانات الصور المتحركة، يمكنك استيراد كل ملف من ملفات *.fbx المعدّلة بشكل فردي باستخدام علامة الإضافة (+) في قسم ملفات الصور المتحركة ضمن مربّع حوار الاستيراد.

تعريفات مواد العرض في Gradle

تضيف عملية الاستيراد أي ملفات صور متحركة بتنسيق *.fbx في نهاية ملفbuild.gradle.

sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])

إنشاء إعلان قابل للعرض

بعد تجميع مادة العرض بتنسيق *.sfb، يمكنك إنشاء ModelRenderable وإرفاقها بعقدة على النحو التالي:

ModelRenderable.builder()
    // To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
    .setSource(this, Uri.parse("andy.sfb"))

    // Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
    //.setSource(this, R.raw.andy)

    .build()
    .thenAccept(renderable -> andyRenderable = renderable)
    .exceptionally(
        throwable -> {
          Log.e(TAG, "Unable to load Renderable.", throwable);
          return null;
    });

استخدام مواد مخصّصة

Sceneform's المواد التلقائية تسهّل على مطوّري البرامج الحصول على نتائج رائعة. يمكنك أيضًا استخدام المواد المخصّصة لتخصيص شكل مواد العرض بشكل كبير.

لتخصيص مادة مخصّصة لمادة العرض:

  1. يمكنك إنشاء ملف تعريف مادة مخصّصة (*.mat) باستخدام [مرجع المواد المخصّصة](/sceneform/develop/custom-material كدليل.

  2. تطبيق المادة المخصّصة على مادة العرض:

    عند استيراد مادة عرض جديدة:

    لتعديل مادة عرض تم استيرادها سابقًا:

    • إذا لم يتم تخصيص محتوى *.sfa، احذف ملفَي *.sfa و*.sfb الحاليَين وأدخِل sceneform.asset() في التطبيقات&39;s build.gradle، ثم إعادة استيراد مادة العرض. يضمن ذلك أن تكون سمات *.sfa ومعلّمات المواد المُعاد إنشاؤها مطابقة للسمات التي تدعمها المادة المخصّصة الخاصة بك.

    • للحفاظ على أي عمليات تخصيص أجريتها على *.sfa، افتح ملف *.sfa وغيِّر سمة source إلى المسار إلى ملف المادة المخصّصة *.mat، ثم عدِّل سمات *.sfa ومعلّمات المواد يدويًا لتتطابق مع المادة المخصّصة.