تعيين المواد لتنسيقات النماذج
عندما يتم تحويل أصل مصدر كنموذج، يقوم المحول بإنشاء مواد لكل شبكة. يمكن تجاوز الطريقة التي يتم بها إنشاء المواد. ومع ذلك ، سيؤدي التحويل افتراضيا إلى إنشاء مواد 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 التالية:
- MSFT_packing_occlusionRoughnessMetallic
- KHR_materials_unlit: يتوافق مع المواد الملونة. بالنسبة للمواد الانبعاثية ، يوصى باستخدام هذا الامتداد.
- KHR_materials_pbrSpecularGlossiness: بدلا من القوام المعدني الخشن ، يمكنك توفير قوام منتشر - منظار - لامع. يتبع تنفيذ عرض Azure عن بعد مباشرة صيغ التحويل من الملحق.
إف بي إكس
تنسيق 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*SpecularFactorSpecularIntensity=Specular. أحمر ∗ 0.2125 +Specular. أخضر ∗ 0.7154 +Specular. ∗ أزرق 0.0721DiffuseBrightness= 0.299 *Diffuse. أحمر2 + 0.587 *Diffuse. أخضر 2 + 0.114 *Diffuse. أزرق2SpecularBrightness= 0.299 *Specular. أحمر2 + 0.587 *Specular. أخضر 2 + 0.114 *Specular. أزرق2SpecularStrength= الحد الأقصى(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 هذه الخصائص لأنها غير موثقة والتنسيق مغلق المصدر.