כאן מוסבר איך מייבאים מודלים תלת-ממדיים, ממירים אותם לפורמט Squareform וצופים בהם בתצוגה מקדימה ב-Android Studio.
ייבוא נכס תלת-ממד חדש
אפשר ליצור נכסי תלת-ממד בפורמט הבא ב-Square:
- OBJ
- glTF (האנימציות לא נתמכות)
- FBX, עם או בלי אנימציות.
כדי לייבא נכס תלת-ממד חדש:
צריך לוודא שתיקיית
app
של הפרויקט מכילה תיקייהsampledata
.כדי ליצור את התיקייה, לוחצים לחיצה ימנית על התיקייה
app
בחלון Project (פרויקט), ואז בוחרים באפשרות New > Sample Data Directory (ספריית נתונים לדוגמה).התיקייה
sampledata
היא חלק מפרויקט Android Studio שלכם, אבל התוכן שלה לא ייכלל ב-APK.מעתיקים את קובץ המקור של המודל בתלת-ממד (
*.obj
,*.fbx
או*.gltf
), ואת כל יחסי התלויות שלו (*.mtl
,*.bin
,*.png
,*.jpg
וכו') לתיקיית ה-sampledata
.אין להעתיק את קובצי המקור האלה לתיקייה
assets
אוres
בפרויקט, כי הם יצורפו לחבילות ה-APK שלך שלא לצורך.לוחצים לחיצה ימנית על נכס המקור של המודל בתלת-ממד ובוחרים באפשרות ייבוא נכס של תבנית נוף כדי להתחיל את תהליך הייבוא.
הערכים משמשים את הערך
sceneform.asset()
ב-app'sbuild.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
קובצי אנימציה, לוחצים על סימן הפלוס (+) ומוסיפים את שאר הקבצים בנפרד.לוחצים על סיום כדי להתחיל את תהליך הייבוא.
כדי לייבא את הנכס, הפלאגין יבצע את הפעולות הבאות:
מוסיף את הפלאגין של דרגה של schemaform ל-project's
build.gradle
אם הוא עדיין לא קיים:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }
עדכון הקובץ 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.
פותח את
*.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;
});
שימוש בחומרים מותאמים אישית
סצנת ברירת המחדל של חומרים מעוצבים מאפשרת למפתחים לקבל תוצאות נהדרות. תוכלו גם להשתמש בחומרים מותאמים אישית כדי להתאים אישית את המראה של הנכסים.
כדי להקצות חומר מותאם אישית לנכס:
יוצרים קובץ של הגדרת חומר מותאם אישית (
*.mat
) באמצעות המדריך [חומרי עזר בהתאמה אישית](/sceneform/deveop/custom-material כמדריך.החלת החומר המותאם אישית על הנכס:
כשמייבאים נכס חדש:
- ציינו את קובץ ה-
*.mat
המותאם אישית במהלך תהליך הייבוא.
כדי לעדכן נכס שיובא בעבר:
אם התוכן של
*.sfa
לא הותאם אישית, יש למחוק את הקבצים הקיימים של*.sfa
ו-*.sfb
ואת הרשומהsceneform.asset()
ב-app'sbuild.gradle
. לאחר מכן, מייבאים מחדש את הנכס. כך ניתן להבטיח שהמאפיינים והפרמטרים של החומר שנוצר,*.sfa
, שנוצרו מחדש, יתאימו לאלו הנתמכים על ידי החומר המותאם אישית שלכם.כדי לשמור את ההתאמות האישיות של
*.sfa
שבוצעו, פותחים את הקובץ*.sfa
ומשנים את המאפייןsource
לנתיב אל הקובץ בהתאמה אישית*.mat
, ולאחר מכן מתאימים את המאפיינים והפרמטרים של החומר באופן ידני כך שיתאימו לחומר המותאם אישית.
- ציינו את קובץ ה-