تعيين المواد لتنسيقات النماذج

عندما يتم تحويل أصل مصدر كنموذج، يقوم المحول بإنشاء مواد لكل شبكة. يمكن تجاوز الطريقة التي يتم بها إنشاء المواد. ومع ذلك ، سيؤدي التحويل افتراضيا إلى إنشاء مواد PBR. نظرا لأن كل تنسيق ملف مصدر، مثل FBX، يستخدم اصطلاحاته الخاصة لتعريف المواد، فيجب تعيين هذه الاتفاقيات إلى معلمات مواد PBR الخاصة ب Azure Remote Rendering.

تسرد هذه المقالة التعيينات الدقيقة المستخدمة لتحويل المواد من أصول المصدر إلى مواد وقت التشغيل.

جي إل تي إف

يتم دعم كل شيء تقريبا من مواصفات glTF 2.0 في العرض عن بعد Azure ، باستثناء EmissiveFactor و EmissiveTexture.

يوضح الجدول التالي التعيين:

جي إل تي إف Azure Remote Rendering
قاعدةعامل اللون البياض اللون
قاعدةاللونالملمس خريطة البياض
ميتاليك فاكتور المعادن
معدني الملمس المعادنخريطة
عامل الخشونة خشونه
خشونةالملمس خشونةالخريطة
انسدادعامل الانسداد انسداد
انسدادالملمس خريطة الانسداد
طبيعيالملمس normalMap
ألفا كوتوف ألفا كليب عتبة
ألفا مود.معتمة alphaClipEnabled = false, isTransparent = false
ألفا مود.قناع alphaClipEnabled = true, isTransparent = false
ألفا مود.بليند isTransparent = true
على الوجهين isDoubleSide
عامل انبعاثي -
انبعاثيةالملمس -

يمكن أن يكون texCoord لكل نسيج في glTF قيمة ، وهو ما يتم دعمه أيضا في مواد العرض عن بعد Azure.

القوام المضمن

يتم دعم القوام المضمنة في ملفات *.bin أو *.glb.

تمديد glTF المدعوم

بالإضافة إلى مجموعة الميزات الأساسية، يدعم Azure Remote Rendering ملحقات glTF التالية:

إف بي إكس

تنسيق FBX مغلق المصدر ومواد FBX غير متوافقة مع مواد PBR بشكل عام. يستخدم FBX وصفا معقدا للأسطح مع العديد من المعلمات والخصائص الفريدة ولا يتم استخدامها جميعا بواسطة خط أنابيب Azure Remote Rendering.

هام

يدعم خط أنابيب تحويل نموذج العرض عن بعد Azure FBX 2011 والإصدارات الأحدث فقط.

يحدد تنسيق FBX نهجا محافظا للمواد ، وهناك نوعان فقط في مواصفات FBX الرسمية:

  • Lambert - لا يستخدم عادة لبعض الوقت بالفعل ، ولكنه لا يزال مدعوما بالتحويل إلى Phong في وقت التحويل.
  • Phong - تستخدم جميع المواد تقريبا ومعظم أدوات المحتوى هذا النوع.

نموذج Phong أكثر دقة ويتم استخدامه كنموذج وحيد لمواد FBX. أدناه سيتم الإشارة إليها باسم مواد FBX.

تستخدم Maya ملحقين مخصصين ل FBX من خلال تحديد خصائص مخصصة لأنواع PBR و Stingray للمادة. لا يتم تضمين هذه التفاصيل في مواصفات FBX، لذلك فهي غير مدعومة من قبل Azure Remote Rendering حاليا.

تستخدم مواد FBX مفهوم Diffuse-Specular-SpecularLevel ، لذلك للتحويل من نسيج منتشر إلى خريطة بياض ، نحتاج إلى حساب المعلمات الأخرى لطرحها من المنتشرة.

توجد جميع الألوان والقوام في FBX في مساحة sRGB (المعروفة أيضا باسم مساحة Gamma) ولكن Azure Remote Rendering يعمل مع المساحة الخطية أثناء التصور وفي نهاية الإطار يحول كل شيء مرة أخرى إلى مساحة sRGB. يقوم خط أنابيب أصول Azure Remote Rendering بتحويل كل شيء إلى مساحة خطية لإرساله كبيانات معدة إلى جهاز العرض.

يوضح هذا الجدول كيفية تعيين القوام من مواد FBX إلى مواد العرض عن بعد Azure. لا يتم استخدام بعضها مباشرة ولكن بالاقتران مع القوام الآخر المشارك في الصيغ (على سبيل المثال الملمس المنتشر):

إف بي إكس Azure Remote Rendering
المحيط اللوني خريطة الانسداد
منتشر اللون تستخدم ل البياض, المعادن
شفاف اللون تستخدم لقناة ألفا من البياض
عامل الشفافية تستخدم لقناة ألفا من البياض
العتامه تستخدم لقناة ألفا من البياض
مضاربالألوان تستخدم في البياض, المعادن, خشونة
عامل المنظار تستخدم في البياض, المعادن, خشونة
اللمعانالأس تستخدم في البياض, المعادن, خشونة
خريطة عادية خريطة عادية
نتوء تم التحويل إلى NormalMap
انبعاثي اللون -
عامل انبعاثي -
انعكاس اللون -
الإزاحةاللون -

رسم الخرائط أعلاه هو الجزء الأكثر تعقيدا من تحويل المواد ، بسبب العديد من الافتراضات التي يجب القيام بها. نناقش هذه الافتراضات أدناه.

بعض التعاريف المستخدمة أدناه:

  • Specular = SpecularColor * SpecularFactor
  • SpecularIntensity = Specular. أحمر ∗ 0.2125 + Specular. أخضر ∗ 0.7154 + Specular. ∗ أزرق 0.0721
  • DiffuseBrightness = 0.299 * Diffuse. أحمر2 + 0.587 * Diffuse. أخضر 2 + 0.114 * Diffuse. أزرق2
  • SpecularBrightness = 0.299 * Specular. أحمر2 + 0.587 * Specular. أخضر 2 + 0.114 * Specular. أزرق2
  • SpecularStrength = الحد الأقصى(Specular. أحمر، Specular. أخضر، Specular. أزرق)

يتم الحصول على صيغة كثافة المنظار من هنا. يتم وصف صيغة السطوع في هذه المواصفات.

خشونه

Roughnessيتم حسابها من Specularهذه الصيغة واستخدامهاShininessExponent. الصيغة هي تقريب للخشونة من الأس المنظاري فونغ:

Roughness = sqrt(2 / (ShininessExponent * SpecularIntensity + 2))

المعادن

Metalnessيتم حسابها من واستخدام Specular هذه الصيغة منDiffuse مواصفات glTF.

الفكرة هنا هي أننا نحل المعادلة: Ax2 + Bx + C = 0. في الأساس ، تعكس الأسطح العازلة حوالي 4٪ من الضوء بطريقة منظارية ، والباقي منتشر. لا تعكس الأسطح المعدنية أي ضوء بطريقة منتشرة ، ولكن كل ذلك بطريقة منظارية. تحتوي هذه الصيغة على بعض العيوب ، لأنه لا توجد طريقة للتمييز بين البلاستيك اللامع والأسطح المعدنية اللامعة. نفترض في معظم الأحيان أن السطح له خصائص معدنية ، وبالتالي فإن الأسطح البلاستيكية / المطاطية اللامعة قد لا تبدو كما هو متوقع.

dielectricSpecularReflectance = 0.04
oneMinusSpecularStrength = 1 - SpecularStrength

A = dielectricSpecularReflectance
B = (DiffuseBrightness * (oneMinusSpecularStrength / (1 - A)) + SpecularBrightness) - 2 * A
C = A - SpecularBrightness
squareRoot = sqrt(max(0.0, B * B - 4 * A * C))
value = (-B + squareRoot) / (2 * A)
Metalness = clamp(value, 0.0, 1.0);

البياض

Albedoيتم حسابها من Diffuse، و SpecularMetalness.

كما هو موضح في قسم المعادن ، تعكس الأسطح العازلة حوالي 4٪ من الضوء.
الفكرة هنا هي التقاطع الخطي بين Dielectric الألوان والألوان Metal باستخدام Metalness القيمة كعامل. إذا كان المعدن 0.0، فاعتمادا على المنظار ، سيكون إما لونا داكنا (إذا كان المنظار مرتفعا) أو لن يتغير المنتشر (إذا لم يكن هناك مضارب). إذا كان المعدن قيمة كبيرة ، فسيختفي اللون المنتشر لصالح اللون المنظار.

dielectricSpecularReflectance = 0.04
oneMinusSpecularStrength = 1 - SpecularStrength

dielectricColor = diffuseColor * (oneMinusSpecularStrength / (1.0f - dielectricSpecularReflectance) / max(1e-4, 1.0 - metalness))
metalColor = (Specular - dielectricSpecularReflectance * (1.0 - metalness)) * (1.0 / max(1e-4, metalness))
albedoRawColor = lerpColors(dielectricColor, metalColor, metalness * metalness)
AlbedoRGB = clamp(albedoRawColor, 0.0, 1.0);

AlbedoRGB بواسطة الصيغة أعلاه، ولكن قناة ألفا تتطلب المزيد من الحسابات. تنسيق FBX غامض حول الشفافية ولديه العديد من الطرق لتعريفه. تستخدم أدوات المحتوى المختلفة طرقا مختلفة. الفكرة هنا هي توحيدهم في صيغة واحدة. ومع ذلك ، فإنه يجعل بعض الأصول تظهر بشكل غير صحيح على أنها شفافة ، إذا لم يتم إنشاؤها بطريقة شائعة.

يتم حساب هذا من TransparentColor, , TransparencyFactorOpacity:

إذا Opacity تم تعريفه ، فاستخدمه مباشرة: = AlbedoAlphaOpacity آخر
إذا TransparencyColor تم تعريفه ، ثم AlbedoAlpha = 1.0 - ((TransparentColor. أحمر + TransparentColor. أخضر + TransparentColor. أزرق) / 3.0) آخر
إذا TransparencyFactor، ثم AlbedoAlpha = 1.0 - TransparencyFactor

يحتوي اللون النهائي Albedo على أربع قنوات ، تجمع AlbedoAlphaبين AlbedoRGB .

الملخص

للتلخيص هنا ، سيكون قريبا جدا من الأصل Diffuse، Albedo إذا كان Specular قريبا من الصفر. وإلا فإن السطح سيبدو وكأنه سطح معدني ويفقد اللون المنتشر. سيبدو السطح أكثر صقلا وانعكاسا إذا كان ShininessExponent كبيرا بما فيه الكفاية ومشرقا Specular . وإلا فإن السطح سيبدو خشنا وبالكاد يعكس البيئة.

مشكلات معروفة

  • الصيغة الحالية لا تعمل بشكل جيد للهندسة الملونة البسيطة. إذا Specular كانت مشرقة بما فيه الكفاية ، فإن جميع الأشكال الهندسية تصبح أسطح معدنية عاكسة بدون أي لون. الحل البديل هنا هو خفض Specular إلى 30٪ من الأصل أو استخدام إعداد التحويل fbxAssumeMetallic.
  • تمت إضافة مواد PBR مؤخرا إلى Maya أدوات إنشاء المحتوى وإليها 3DS Max . يستخدمون خصائص الصندوق الأسود المخصصة المعرفة من قبل المستخدم لتمريرها إلى FBX. لا يقرأ Azure Remote Rendering هذه الخصائص لأنها غير موثقة والتنسيق مغلق المصدر.

الخطوات التالية