הקובץ 'הגדרת נכס של 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
), ניתן לעיין ברשימת הפרמטרים הנתמכים:- נכסי OBJ:
obj_material.sfm
- נכסי FBX:
fbx_material.sfm
- נכסי glTF:
gltf_material.sfm
עבור חומרים מותאמים אישית (
*.mat
), רשימת הפרמטרים הנתמכים מופיעה בקובץ*.mat
:- להצגת קובץ העזר חומר בהתאמה אישית
- נכסי OBJ:
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
.