הפניה לקובץ נכס של צורה

הקובץ 'הגדרת נכס של schema' (*.sfa) הוא תיאור שקריא אנושי של הנכס הבינארי של schemaform (*.sfb). הוא מפנה למודלים, להגדרות של החומרים ולמרקמים בנכס המקור שלך, וכולל גם פרמטרים מהותיים לחומרים המבוססים על טקסטים ב-Square.

הקובץ הזה נוצר אוטומטית בייבוא הראשון של פלאגין ה-Android Studio Studio, אבל אפשר לשנות את המאפיינים כדי לשנות את המראה של הנכס. קובץ העזר הזה מתאר מאפיינים שאפשר להגדיר כדי לשנות את המראה של הנכס. המאפיינים האופציונליים שלא קיימים ב-sfa יקבלו את ערך ברירת המחדל שלהם. התחביר של sfa הוא jsonnet, שהוא תוסף של JSON.

תחביר

{
   materials: [
      {
         name: "<name>",
         parameters: [
            {
               <parameterName>: <parameterDefaultValue>,
            },
            …
         ],
         source: "path/to/source_material.sfm",
      },
      …
   ],
   model: {
      attributes: [
         "Position",
         "TexCoord",
         "Orientation",
      ],
      file: "path/to/source_asset.ext",
      name: "<Name>",
      scale: 1.0,
      recenter: false,
      smoothing_angle: 45.0,
      flip_texture_coordinates: false,
      fix_infacing_normals: false,
   },
   samplers: [
      {
         file: "path/to/source_texture.ext",
         name: "<name>",
         params: {
            usage_type: "Color",
            mag_filter: "Linear",
            min_filter: "NearestMipmapLinear",
            wrap_s: "Repeat",
            wrap_t: "Repeat",
         },
         pipeline_name: "<pipeline_name>",
      },
      …
   ]
}

מאפיינים

materials[].parameters

התוכן של הבלוק הזה תלוי בהגדרת החומר שצוינה במאפיין source.

לחומרים המוגדרים כברירת מחדל (*.sfm), ניתן לעיין ברשימת הפרמטרים הנתמכים:

עבור חומרים מותאמים אישית (*.mat), רשימת הפרמטרים הנתמכים מופיעה בקובץ *.mat:

materials[].source
ההגדרה קובעת את הקובץ של הגדרת החומר, קובץ הגדרת ברירת מחדל (*.sfm) או קובץ חומר מותאם אישית (*.mat).
model.attributes

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

ערך תיאור
"Color" קודקוד COLOR.
"Orientation" קודקוד TANGENT.
"Position" קודקוד POSITION.
"TexCoord" TEXCOORD0, קואורדינטה UV הראשונה.
model.file
מאפיין חובה, מכיל נתיב של מערכת קבצים לקובץ נכס מקור. הפורמטים הנתמכים כרגע הם *.fbx, *.obj, *.gltf ו-*.glb.
model.scale

מאפיין אופציונלי, ברירת המחדל היא 1.0. ההגדרה קובעת את קנה המידה של המודל המיוצא לעומת התוכן של נכסי המקור. היקף של 2.0 יהפוך את הנכס גדול פי שניים.

ערכי המיקום של העיצוב מצוינים במטרים. כדי להתאים את ההבדלים ביחידות רגילות, מונח ההתאמה מחושב באופן אוטומטי במהלך הייבוא הראשוני, כך שהציר הגדול ביותר לא יהיה קטן מ-5 ס"מ, והציר הקטן ביותר לא גדול ממטר אחד. אנחנו קובעים זאת רק כדי לספק את חוויית הייבוא הראשונית.

model.recenter

מאפיין אופציונלי, ברירת המחדל היא false. המדיניות קובעת את המיקום של הגיאומטריה המיוצאת. הערכים האפשריים הם:

ערך תיאור
false הגיאומטריה תיוצא כמחבר, ללא טרנספורמציה.
true מרכז הגיאומטריה ימוקם במקור.
"root" הגיאומטריה תיוצא, כך שהיא תמוק אפשר להשתמש במודל הזה כדי לוודא שהמודל המיוצא, הממוקם בעוגן או במטוס, יעמוד מעל נקודת העוגן.
{x:float, y:float, z:float} הייצוא של הגיאומטריה יתבצע כך שהמקור ימוקם בהתאם לנקודה שצוינה.
{x:0, y:0, z:0} תואם למינימום של תיבת התוחם התואם לציר של הגיאומטריה.
{x:1, y:1, z:1} תואם לגבול המקסימלי של
model.smoothing_angle
מאפיין אופציונלי צוין במעלות, ברירת המחדל היא 45. בנכסי מקור ללא נורמליות לכל קודק (למשל obj) יופיעו נורמליות לכל קודקוד שנוצרת באמצעות smoothing_angle כדי להגביל את קבוצת נורמליות הפנים שמשמשת לחישוב של נורמליות קיצונית. קצוות במודל שחורגים מהזווית הזו יופיעו'יתבצע קעקועים, או שלא יופיעו בהם קצוות שלא חורגים מהם.
model.flip_texture_coordinates
מאפיין אופציונלי, ברירת המחדל היא false. אם True, הקואורדינטות האנכיות הופכות ((u, v) -> (u, 1 - v)) במהלך הייבוא. כך ניתן להתאים הבדלים היסטוריים בין OpenGL/Direct3D.
model.fix_infacing_normals
מאפיין אופציונלי, ברירת המחדל היא false. אם זה נכון, יתבצע ניסיון למצוא ולתקן את הערכים הנורמליים שנכנסות לתמונה (נורמלי שמצביע על'בשטח וה&
samplers[].params.usage_type
ההגדרה קובעת איך זמן הריצה מפרש את נתוני התמונה המקודדת. יש להשתמש ב-"Color" למרקמים של תמונות SRGB. משתמשים ב-"Data" או ב-"Normal" כדי להתייחס לתוכן של התמונה כאילו הם במרחב לינארי. ערך ברירת המחדל הוא "Color".
samplers[].params.mag_filter

מגדיר את מסנן ההפחתה המשמש לדגימה של מיקמית גדולה מהגודל של הפיקסל של הגיאומטריה. ערך ברירת המחדל הוא "Linear". הערכים האפשריים הם:

ערך תיאור
"Nearest" תואם ל-GL_NEAREST. מחזירה את הערך של רכיב המרקם הקרוב ביותר (המרחק במנהטן) למרכז הפיקסל שמכיל את המרקם.
"Linear" תואם ל-GL_LINEAR. מחזירה את הממוצע המשוקלל של ארבעת רכיבי המרקם הקרובים ביותר למרכז הפיקסל בעל מרקם. הם יכולים לכלול רכיבי מרקם בינלאומי, בהתאם לערכי המרקם wrap_s והמרקם wrap_t, ולמיפוי מדויק.
samplers[].params.min_filter

מגדיר את מסנן ההפחתה המשמש לדגימה של מיקמית גדולה מהגודל של הפיקסל של הגיאומטריה. ערך ברירת המחדל הוא "NearestMipmapLinear". הערכים האפשריים הם:

ערך תיאור
"Nearest" תואם ל-GL_NEAREST. הפונקציה מחזירה את הערך של רכיב המרקם הקרוב ביותר (במרחק של מנהטן) למרכז הפיקסל שמכיל את המרקם.
"Linear" תואם ל-GL_LINEAR. מחזירה את הממוצע המשוקלל של ארבעת רכיבי המרקם שקרובים ביותר למרכז הפיקסל, בעל מרקם. הם יכולים לכלול רכיבי מרקם של גבול, בהתאם לערכי המרקם wrap_s והמרקם wrap_t ולמיפוי המדויק.
"NearestMipmapNearest" תואם ל-GL_NEAREST_MIPMAP_NEAREST. בוחר את המפה האמצעית שתואמת ביותר לגודל הפיקסל בעל המרקם, ומשתמש בקריטריון "Nearest" (רכיב המרקם הקרוב ביותר למרכז הפיקסל) כדי ליצור ערך מרקם.
"LinearMipmapNearest" תואם ל-GL_NEAREST_MIPMAP_LINEAR. בוחר את שתי המפות המתאימות ביותר לגודל הפיקסל בעל המרקם, ומשתמש בקריטריון "Nearest" (רכיב המרקם הקרוב ביותר למרכז הפיקסל) כדי להפיק ערך מרקם מכל מפה. ערך המרקם הסופי הוא ממוצע משוקלל של שני הערכים.
"LinearMipmapLinear" תואם ל-GL_LINEAR_MIPMAP_LINEAR. בוחר את שתי המפות המתאימות ביותר לגודל הפיקסל בעל המרקם, ומשתמש בקריטריון "Linear" (ממוצע משוקלל של ארבעת רכיבי המרקם הקרובים ביותר למרכז הפיקסל) כדי להפיק ערך מרקם מכל מיילים. ערך המרקם הסופי הוא ממוצע משוקלל של שני הערכים.
samplers[].params.wrap_s

מאפיין אופציונלי, ברירת המחדל היא "Repeat". מגדירה את התנהגות העטיפה האופקית.

ערך תיאור
"ClampToBorder" תואם ל-GL_CLAMP_TO_BORDER.
"ClampToEdge" תואם ל-GL_CLAMP_TO_BORDER.
"MirroredRepeat" תואם ל-GL_MIRRORED_REPEAT.
"MirrorClampToEdge" תואם ל-GL_MIRROR_CLAMP_TO_EDGE.
"Repeat" תואם ל-GL_REPEAT.
samplers[].params.wrap_t

מאפיין אופציונלי, ברירת המחדל היא "Repeat". מגדירה את התנהגות העטיפה האנכית.

ערך תיאור
"ClampToBorder" תואם ל-GL_CLAMP_TO_BORDER.
"ClampToEdge" תואם ל-GL_CLAMP_TO_BORDER.
"MirroredRepeat" תואם ל-GL_MIRRORED_REPEAT.
"MirrorClampToEdge" תואם ל-GL_MIRROR_CLAMP_TO_EDGE.
"Repeat" תואם ל-GL_REPEAT.

פרמטרים לחומרים המוגדרים כברירת מחדל

ב-Squareform מספקת שלוש הגדרות ברירת מחדל לחומרים: אחת לנכסי OBB, אחת לנכסי FBX, ואחת לנכסי glTF.

בקטע הזה מפורטים הפרמטרים מהותיים שנתמכים על ידי כל הגדרת ברירת מחדל לחומר.

obj_material.sfm

פרמטר ערך תיאור
baseColor <sampler_name> מחשבים את baseColor בתור הערך מהדגימה כפול צבע אינטרפולציה.
null מחשבים את baseColor כצבע המחולק, או את הצבע הלבן אם לא קיים אינטרפולציה.
baseColorTint <vec4> רלוונטי גוון לערך המחושב baseColor, המצוין כ-[r, b, g, a].
metallic <float_value> קובעת את רמת המתכתיות של החומר.
אפשר להשתמש ב0.0 עבור חומרים שאינם מתכתיים.
צריך להשתמש במאפיין 1.0 בשביל חומרים מתכתיים.
roughness <float_value> קובע את הגסות של החומר.
אפשר להשתמש בערכים נמוכים כדי לראות את החומר המבריק (0.0 מייצג מראה מושלם).
אפשר להשתמש בערכים גבוהים בשביל חומרים דיפרנציאליים (1.0 מייצג חומר ללא ברק).
opacity null אטום מלא.
<float_value> השקיפות מופעלת.
1.0 אטום לחלוטין.
0.0 שקוף לחלוטין.

fbx_material.sfm

פרמטר ערך תיאור
baseColor <vec4> גורם גוון בתוצאה של baseColorMap, שצוין כ-[r, g, b, a].
baseColorMap <sampler_name> התוצאה היא הערך של הדוגמה baseColorMap.
null משתנה ללבן.
normalMap <sampler_name> מפרש את תוצאת הדגימה כנורמלית בחלל, שמשמשת בחישובים של תאורה.
null צריך להשתמש בפונקציה קבועה של [0, 0, 1] כרגיל בטנגנס.
metallic <float_value> משנה את הגודל metallicMap כדי לשלוט במתכתיות של החומרים.
מומלץ להשתמש ב0.0 עבור חומרים שאינם מתכתיים
מומלץ להשתמש ב1.0 לחומרים מתכתיים.
metallicMap <sampler_name> השתמשו בערך האדום האדום מהדגימה כערך metallicMap שלנו.
null שימוש בערך 1.0 קבוע, כדי להתאים את הגודל לפי metallic.
roughness <float_value> ניתן לשנות את הגודל של roughnessMap כדי לשלוט על הגסות של החומר.
ניתן להשתמש בחומר גלם נמוך.
ניתן להשתמש בקפסולות גבוהה לחומרים מפזרים.
roughnessMap <sampler_name> השתמשו בערך האדום האדום מהדגימה כערך roughnessMap שלנו.
null שימוש בערך 1.0 קבוע, כדי להתאים את הגודל לפי roughness.
reflectance <float_value> הגדרת ההשתקפות של חומר כלשהו.
ברירת המחדל של 0.5 מכסה כמעט את כל החומרים האפשריים.
opacity null לא הוגדרה בקרת שקיפות מפורשת.
אם ציינת מפת שקיפות בנתוני המקור, החומר יעובד באמצעות שילוב שקוף.

gltf_material.sfm

פרמטר ערך תיאור
baseColorFactor <vec4> גורם גוון בתוצאה של baseColor, שמצוין בתור [r, g, b, a].
normal <sampler_name> מפרש את תוצאת הדוגמה כרגיל טנגנס בשימוש, בחישובים של תאורה.
null צריך להשתמש בנוסחה [0, 0, 1] קבועה בטווח הטנגנס.
metallicFactor <float_value> קנה מידה metallicRoughness כדי לשלוט במתכתיות של החומר.
אפשר להשתמש ב-0.0 עבור חומרים שאינם מתכתיים.
מומלץ להשתמש ב-1.0 כדי להשתמש בחומרים מתכתיים.
roughnessFactor <float_value> קנה מידה metallicRoughness כדי לשלוט בקירות של החומר.
שימוש בחומר גלם נמוך.
שימוש בחומרי גלם חיצוניים.
metallicRoughness <sampler_name> השתמשו בערוץ הירוק מהדגימת Grusly (התאמה להיקף עד roughnessFactor).
השתמשו בערוץ הכחול מהדגימה לבדיקת מטאל (התאמה להיקף לפי metallicFactor).
null יש להשתמש ב-metallicFactor וב-roughnessFactor.
occlusion <sampler_name> השתמשו בערוץ האדום מהדגימה לחסימה בסביבה.
null אם המרקם של metallicRoughness קיים, השתמשו בערוץ האדום כדי לחסום את האווירה.
emissiveFactor <float_value> ניתן לשנות את קנה המידה emissive כדי לשלוט בפליטת החומר.
אפשר להשתמש בשיטה 0.0 עבור חומרים שלא יוצרים את האור שלהם.
emissive <sampler_name> השתמשו בצבע מהדגימה כערך המרהי.
null אין פליטה.
reflectance <float_value> הגדרת ההשתקפות של חומר מסוים.
ברירת המחדל של 0.5 כוללת כמעט את כל החומרים האפשריים.


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

החלפת מרקמים או הוספתם

הבלוק samplers מגדיר את המרקמים הזמינים לחומרים שלכם. רשומות דגימה שמקורן בנכס המקור מצהירות pipeline_name, ולכן הן מזוהות באופן ייחודי על ידי נתיב התמונה המקורית בנכס המקור. ניתן לשנות את השדה file כך שיכלול נתיב יחסי של קובץ app/. לדוגמה, הקוד:

  {
     file: "sampledata/models/textures/dandy_andy.png",
     name: "andy",
     pipeline_name: "andy.png",
  },

מחליף את מרקם המקור, שנקרא andy.png בנכסי המקור, בתוכן הקובץ../sampledata/models/textures/dandy_andy.png

ייתכן שלא ניתן לייבא באופן אוטומטי לנכס מרקמים שהוצהרו באופן מלא או חלקי בנכס המקור. במקרה כזה, ניתן להוסיף אותם ל-SFA. ניתן להוסיף מרקמים לכל מודל שיש לו TexCoord ברשימת המאפיינים. במקום pipeline_name, שחל רק על דוגמיות המיובאים באופן אוטומטי, המשתמש מציין בלוק injections.

דוגמה ל-FBX עם מאפיינים TexCoord אבל לא כולל מרקמים. ניתן להוסיף קובץ תמונה לתיקיית הפרויקט ולקשר אותו בבלוק חדש של דגימה, ולאחר מכן ההזרקות מצהירות שהשימוש בו הוא "Normal", כמו בקוד הבא:

  {
     file: "sampledata/models/cragly_normal.png",
     name: "bumps",
     injections: [
       {usage: "Normal",},
     ],
  },

בשלב הזה, המרקם זמין לחומרים שלכם. כדי להציג אותו, יש לוודא שבקשות החומר לדגימה כוללות את הפרמטר normalMap (אחרת, הדוגמן ייראה לא בשימוש ושהוא יוזן). בהתאם לשם bumps בבלוק הדגימה שלנו, פירוש הדבר הוא שבבלוק החומרי שלנו צריך להופיע הקוד הבא:

    {
      normalMap: 'bumps',
    },

השימושים הזמינים בבלוק ההזרקה הם BaseColor, Metallic,Normal,Emissive, Roughness ו-Occlusion.