ייבוא ותצוגה מקדימה של נכסי תלת-ממד

כאן מוסבר איך מייבאים מודלים תלת-ממדיים, ממירים אותם לפורמט Squareform וצופים בהם בתצוגה מקדימה ב-Android Studio.

ייבוא נכס תלת-ממד חדש

אפשר ליצור נכסי תלת-ממד בפורמט הבא ב-Square:

  • OBJ
  • glTF (האנימציות לא נתמכות)
  • FBX, עם או בלי אנימציות.

כדי לייבא נכס תלת-ממד חדש:

  1. צריך לוודא שתיקיית app של הפרויקט מכילה תיקייה sampledata.

    כדי ליצור את התיקייה, לוחצים לחיצה ימנית על התיקייה app בחלון Project (פרויקט), ואז בוחרים באפשרות New > Sample Data Directory (ספריית נתונים לדוגמה).

    התיקייה sampledata היא חלק מפרויקט Android Studio שלכם, אבל התוכן שלה לא ייכלל ב-APK.

  2. מעתיקים את קובץ המקור של המודל בתלת-ממד (*.obj, *.fbx או *.gltf), ואת כל יחסי התלויות שלו (*.mtl, *.bin, *.png, *.jpg וכו') לתיקיית ה-sampledata.

    אין להעתיק את קובצי המקור האלה לתיקייה assets או res בפרויקט, כי הם יצורפו לחבילות ה-APK שלך שלא לצורך.

  3. לוחצים לחיצה ימנית על נכס המקור של המודל בתלת-ממד ובוחרים באפשרות ייבוא נכס של תבנית נוף כדי להתחיל את תהליך הייבוא.

    הערכים משמשים את הערך sceneform.asset() ב-app's build.gradle, וקובעים היכן ייווצרו הקבצים *.sfa ו-*.sfb בפרויקט.

    אם אתם מייבאים מודל בפעם הראשונה, צריך להשתמש בערכי ברירת המחדל.

    שדה תיאור
    נתיב נכס המקור שם הקובץ של נכס המודל OBJ , FBX או glTF 3D לייבוא.
    נתיב של חומר default אומר ל-Squareform's להשתמש בקובץ המוגדר כברירת מחדל או בנתיב לקובץ חומר מותאם אישית *.mat.
    נתיב פלט sfa. עליך להשתמש בברירת המחדל או לציין נתיב אחר בתיקייה sampledata.

    קובץ ה- .sfa נוצר אם חסר. ניתן לשנות אותה כדי לשלוט בהיבטים מסוימים של תהליך הייבוא.

    כך ניתן לוודא ש-*.sfa לא נכלל ב-APK שלך באופן מיותר.

    נתיב פלט ssfb. כברירת מחדל נעשה שימוש בתיקייה src/main/assets/, שמאפשרת להשתמש בשמות קבצים שרירותיים של נכסים.

    אם שם הקובץ (ללא סיומת הקובץ) הוא מזהה משאב חוקי (למשל, R.raw.filename), אפשר להשתמש בתיקיית src/main/res/raw/ אם ברצונך להמשיך.

    לפרטים נוספים על השימוש בתיקיות assets/ ו-res/ באפליקציה, עיין ב-Android's סקירה כללית של משאבי האפליקציה.

    קובצי אנימציה

    אם מייבאים *.fbx קובצי אנימציה, לוחצים על סימן הפלוס (+) ומוסיפים את שאר הקבצים בנפרד.

  4. לוחצים על סיום כדי להתחיל את תהליך הייבוא.

כדי לייבא את הנכס, הפלאגין יבצע את הפעולות הבאות:

  1. מוסיף את הפלאגין של דרגה של schemaform ל-project's build.gradle אם הוא עדיין לא קיים:

    dependencies {
        …
        classpath 'com.google.ar.sceneform:plugin:1.15.0'
    }
    
  2. עדכון הקובץ app's build.gradle כך שיכלול שורת 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> יוצרת קובץ של הגדרת תצורה ב-Square (*.sfa) אם הוא עדיין לא קיים.

      המשימה הזו לא תחליף קובץ *.sfa קיים, כלומר כל שינוי שתבצעו בקובץ SFA לאחר הייבוא לא יוחלף.

      הקובץ *.sfa הוא קובץ טקסט שמכיל תיאור מלא וקריא של הגדרות הייבוא של הנכס. הוא מפנה למודלים ולמרקמים בנכס המקור שלכם, ומגדיר גם חומרים על סמך חומרים מהותיים לחומרים המבוססים על סצינה פיזית.

    • compileAsset-<asset-name> מבצע הידור של הקובץ *.sfa לקובץ מצגת בינארי של נכס (*.sfb).

      קובץ *.sfb זה מובנה ב-APK של האפליקציה והוא נטען בזמן הריצה כדי ליצור את הרינדור.

    למידע נוסף, עיינו בהפניה ל-Sceneform Gradle Plugin.

  3. פותח את *.sfa בחלון טקסט ואת *.sfb בחלון צופה.

עדכון נכס תלת-ממד שיובאו בעבר

כשמעדכנים קובץ נכס מקור של מודל OBJ, FBX או glTF (*.obj, *.fbx או *.gltf), הערך התואם ב-sceneform.asset() ב-app's build.gradle גורם לפלאגין ליצור באופן אוטומטי קובץ *.sfb מעודכן, על סמך הפרמטרים *.sfa הנוכחיים.

כדי לחזור על הפרמטרים של נכס שכבר יובא:

  • משנים את קובץ הטקסט *.sfa ומשתמשים בפורמט בפורמט קובץ SFA כמדריך.
  • שומרים את השינויים. כתוצאה מכך, מהדור מחדש של הנכס מתעדכן הקובץ *.sfb.
  • כדי לפתוח תצוגה מקדימה של הנכס המעודכן, לוחצים לחיצה כפולה על הקובץ *.sfb כדי לפתוח את חלון הצופה של הנכס.

אם אתם מעדכנים נכס שיובא בעבר ושכולל נתוני אנימציה, עליכם לייבא כל אחד מקובצי ה-*.fbx המעודכנים בנפרד באמצעות סימן הפלוס (+) בקטע קובצי אנימציה בתיבת הדו-שיח של הייבוא.

הגדרות של נכסים

תהליך הייבוא מוסיף קובצי אנימציה של *.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;
    });

שימוש בחומרים מותאמים אישית

סצנת ברירת המחדל של חומרים מעוצבים מאפשרת למפתחים לקבל תוצאות נהדרות. תוכלו גם להשתמש בחומרים מותאמים אישית כדי להתאים אישית את המראה של הנכסים.

כדי להקצות חומר מותאם אישית לנכס:

  1. יוצרים קובץ של הגדרת חומר מותאם אישית (*.mat) באמצעות המדריך [חומרי עזר בהתאמה אישית](/sceneform/deveop/custom-material כמדריך.

  2. החלת החומר המותאם אישית על הנכס:

    כשמייבאים נכס חדש:

    כדי לעדכן נכס שיובא בעבר:

    • אם התוכן של *.sfa לא הותאם אישית, יש למחוק את הקבצים הקיימים של *.sfa ו-*.sfb ואת הרשומה sceneform.asset() ב-app's build.gradle. לאחר מכן, מייבאים מחדש את הנכס. כך ניתן להבטיח שהמאפיינים והפרמטרים של החומר שנוצר, *.sfa, שנוצרו מחדש, יתאימו לאלו הנתמכים על ידי החומר המותאם אישית שלכם.

    • כדי לשמור את ההתאמות האישיות של *.sfa שבוצעו, פותחים את הקובץ *.sfa ומשנים את המאפיין source לנתיב אל הקובץ בהתאמה אישית *.mat, ולאחר מכן מתאימים את המאפיינים והפרמטרים של החומר באופן ידני כך שיתאימו לחומר המותאם אישית.