مرجع ملف مادة العرض

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

يتم إنشاء هذا الملف تلقائيًا عند الاستيراد الأول بواسطة مكوّن Sceneform Android Android 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، وهو أول إحداثيات للأشعة فوق البنفسجية.
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) سيتم إنشاء قيم عادية لكل انعكاسية باستخدام ناعمة زاوية للحد من مجموعة تعبيرات الوجوه المُستخدَمة في حساب قيمة النص العادي العادية. سيظهر حواف لا يتجاوز حجمها هذه الزاوية و#39;صعب&#39؛ أو ذات وجوه، ستظهر حواف لا تتجاوز سلسة.
model.flip_texture_coordinates
سمة اختيارية والإعداد التلقائي هو false. إذا كانت القيمة صحيحة، يتم عكس الإحداثي الرأسي ((u, v) -> (u, 1 - v)) أثناء الاستيراد. ويساعد ذلك في استيعاب الاختلافات السابقة بين OpenGL/Direct3D.
model.fix_infacing_normals
سمة اختيارية والإعداد التلقائي هو false. في حال ضبط هذه السياسة على "صحيح"، ستحاول عملية الاستيراد العثور على الحالات المصحّحة فيها (العادية 'into' والسطح الخارجي) ومقابلها#، بدلاً من ' الواجهة.
samplers[].params.usage_type
يحدد هذا الإعداد كيفية تفسير وقت التشغيل لبيانات الصورة المشفرة. يمكنك استخدام "Color" لتحديد زخارف الصور في تنسيق sRGB. يمكنك استخدام "Data" أو "Normal" للتعامل مع محتوى الصورة كما لو كان في مساحة خطية. القيمة التلقائية هي "Color".
samplers[].params.mag_filter

لتعريف فلتر التصغير المُستخدَم عندما تكون عينة mpmap أكبر من حجم البكسل للهندسة الهندسية التي يتم أخذ عينات منها. القيمة التلقائية هي "Linear". القيم المحتمَلة هي:

القيمة الوصف
"Nearest" يتطابق مع GL_NEAREST. تعرض قيمة عنصر النسيج الأقرب (في مسافة مانهاتن) إلى وسط وحدة البكسل التي يتم زخرفةها.
"Linear" يتطابق مع GL_LINEAR. تعرض المتوسط المُرجَّح لعناصر النسيج الأربعة الأقرب إلى مركز وحدة البكسل التي يتم زخرفةها. يمكن أن يتضمّن ذلك عناصر الزخرفة على الحدود، وذلك وفقًا لقيم الزخرفة wrap_s والزخارف wrap_t والتعيين الدقيق.
samplers[].params.min_filter

لتعريف فلتر التصغير المُستخدَم عندما تكون عينة mpmap أكبر من حجم البكسل للهندسة الهندسية التي يتم أخذ عينات منها. والقيمة التلقائية هي "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" (المتوسط المرجّح لعناصر النسيج الأربعة الأقرب إلى مركز وحدات البكسل) لإنتاج قيمة نسيج من كل خريطة mipmap. قيمة النسيج النهائية هي متوسط مرجَّح لهذه القيمتَين.
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.

معلّمات المواد التلقائية

يوفر تطبيق Sceneform ثلاثة تعريفات جوهرية تلقائية: أحدهما لأصول OBJ وأحد مواد عرض 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> استخدِم القناة الخضراء من العيّنة لقياس درجة الخشنة (يتم قياسها بنسبة 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.

قد لا يتم استيراد الزخارف المُعلَنة بالكامل أو جزئيًا في مادة العرض المصدر إلى مادة العرض تلقائيًا، وفي هذه الحالة يمكن إضافتها إلى الهيئة غير الربحية. يمكن إضافة زخارف إلى أي نموذج يتضمّن 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.