خرائط عادية مثالية للوحدة (وبرامج أخرى)

... وكيفية معرفة ما هو الخطأ في إنشاء المحتوى الخاص بك.


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


شاهد عظمة هذا النموذج التقليدي لاختبار الخرائط العادية!

ثم تضعها الفنانة في اللعبة ، وتبدو ... خاطئة بعض الشيء.


ألا يجب أن تكون هذه الوجوه مسطحة؟

لا تزال الأسطح ، التي يجب أن تكون مسطحة ، مستديرة قليلاً ، وبعضها مكتئب ، والأسوأ من ذلك ، أن هناك خطوطًا غريبة تتداخل معها. وضع مألوف؟ ربما صادف بعضكم ذلك ، فكر: "حسنًا ، ربما ، لن يعمل بشكل أفضل" ، وانتقل إلى الأمام. ربما تم تطبيق القليل من الأوساخ لإخفاء الحالات الشديدة.

ولكن هناك بالفعل شيء خاطئ في مسار إنشاء المحتوى الخاص بك. هذا ليس واضحًا دائمًا ، ولكن يمكن حل المشكلة! *

* إذا افترضت أنه في بعض الحالات ، يمكنك إجراء تغييرات على مسار المحتوى.

مقدمة


تتناول هذه المقالة كيفية تصدير الخرائط العادية المثالية من تطبيقات أخرى للاستخدام في Unity 5.3 والإصدارات الأحدث. لا يتحدث عن كيفية الحصول على خرائط عادية عالية الجودة ، وهناك العديد من البرامج التعليمية الأخرى لهذا ، لذلك لن أتطرق إلى هذا الموضوع.



أساس الفضاء المماس


تكمن المشكلة في كيفية عمل الخرائط العادية لمساحة الظل. على وجه الخصوص ، كيف يعمل الفضاء المماس (أو الأساس المماس). لن أذهب بعيداً جداً في الجوانب التقنية لما يقومون به. لقد تحدثت بالفعل ، مثل المؤلفين الآخرين ، عن هذا الأمر ، ولكن باختصار ، فإن الفضاء المماس يحدد ما يجب أن يمثله اتجاه الاتجاه في الخريطة العادية. أي اتجاه على الخريطة العادية هو في الواقع "للأمام" أو "لأعلى" أو "لليمين". على وجه التقريب ، هذا الاتجاه هو اتجاه إحداثيات الأشعة فوق البنفسجية من نسيج القمم ومعاييرها.

من المهم أن نفهم أن البرنامج المستخدم لخبز الخريطة العادية من شبكة highpoly إلى شبكة lowpoly يجب أن يحسب مساحته المماسكةتمامًا مثل البرنامج الذي سيتم فيه استخدام الخرائط العادية . نظرًا لأن البرامج المختلفة يمكنها استخدام مساحة التماس بطرق مختلفة ، فلن تكون الخرائط المخبوزة العادية للشبكة هي نفسها بالضرورة لجميع التطبيقات. حتى بالنسبة للتطبيقات التي تستخدم نفس الفضاء المماس!

اعرف عدوك


انقلاب بسبب خطأ واضح


الخطأ الأكثر شيوعًا هو مشكلة "OpenGL vs Direct3D". ويطلق عليها أيضًا الخرائط العادية Y + و Y-. أدرجتها هنا فقط من أجل الاكتمال. على الأرجح ، معظم الناس الذين واجهوا هذه المشكلة يعرفون بالفعل عن ذلك ، أو على الأقل تعلموا كيفية حلها. نظرًا لأن الخرائط العادية يتم إنشاؤها في اتجاه واحد ، فهي في الأساس غير مجدية للاستخدام في تطبيق مصمم لاستخدام آخر.


الخرائط العادية في اتجاه Direct3D في محرك الوحدة ، والتي تتوقع اتجاه OpenGL.

يمكن فهم ذلك من خلال حقيقة أن الإضاءة تبدو معكوسة أو تسقط من الجانب الآخر ، ولكن فقط في بعض اتجاهات الإضاءة. قد تبدو بعض الزوايا أو الوجوه طبيعية تمامًا حتى تحرك مصدر الضوء.

ومع هذه المشكلة ، كل شيء واضح بما فيه الكفاية. تحتوي معظم تطبيقات إعداد الخرائط العادية على زر أو قائمة كبيرة لطيفة للتبديل بين خيار الاتجاه OpenGL / Direct3D أو Y. اكتشف الاتجاه الذي يستخدمه التطبيق المستهدف وخبز الخرائط فيه. تستخدم الوحدة OpenGL و Y +. يستخدم Unreal Direct3D و Y-. يمكن فهم ذلك بوضوح من خلال النظر إلى نسيج الخريطة العادية نفسها. إذا كان يبدو أنها في القناة الخضراء مضاءة "من فوق" ، فهذا هو اتجاه OpenGL. إذا كان من الأسفل ، فهذا Direct3D.

الشذوذ مع sRGB


خطأ شائع آخر هو استخدام مادة مميزة بنسيج sRGB. هذا يغير الطريقة التي يتم بها أخذ بنية GPU ، مما يجبرها على تحويل قيم الألوان من مساحة sRGB ، التي يختار الأشخاص عادةً قيم اللون منها ، إلى مساحة لون خطية. بالنسبة للخرائط العادية ، هذا ليس ضروريًا. إذا قمت بتعيين النوع على "الخريطة العادية" للنسيج في الوحدة ، فسوف يقوم المحرك بتعطيل هذا الخيار تلقائيًا ، ولكن يمكنك أيضًا تعطيل خيار "sRGB (Color Texture)" يدويًا ، وسيعمل النسيج كخريطة عادية. على الأقل في Unity 2017.1 والإصدارات الأحدث.


خريطة عادية مع تمكين نوع النسيج الافتراضي و sRGB.

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

مختلفة جدا لتكون طبيعية


مشكلة أخرى شائعة هي استخدام شبكات الخبز العادية المختلفة في أصول اللعبة. كما هو الحال مع الظل ، لكي يعمل كل شيء ، يجب أن تتطابق تمامًا . يحدث هذا الخطأ غالبًا إذا قام الفنانون بتصدير شبكات ذات معايير قمة غير صحيحة. في هذه الحالة ، يجب على أي تطبيق يفتح الشبكة أن يحسبها بنفسك. لا توجد طريقة صحيحة لحلها ، كل هذا يتوقف على الشبكة ، لذا تأكد من أنك (أو الفنانين) تقوم بتصدير النموذج بالمعايير النهائية!


خرائط عادية مخبوزة على شبكة ناعمة ، تُعرض على شبكة ذات حواف حادة


خرائط عادية مخبوزة على شبكة ذات حواف حادة ، تُعرض على شكل شبكة متجانسة

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

MikkTSpace مقابل أوتوديسك


هناك مشكلة أقل ملحوظة هي أنه عند خبز خرائط 3ds Max أو Maya العادية ، ستكون دائمًا غير صحيحة في محرك الوحدة. سيكونون مخطئين في Unreal ، وفي أي برنامج آخر تقريبًا ، باستثناء البرنامج الذي تم خبزهم فيه. لا تعمل خرائط 3ds Max العادية في Maya ، والعكس صحيح! يحسب كل تطبيق من هذه التطبيقات مساحة التماس بطريقته الفريدة الخاصة به ، والتي لا تتوافق مع التطبيقات الأخرى. عند استخدامها بشكل مستقل ، فإنها تبدو مثالية ، وإذا قمت بإنشاء خرائط عادية للاستخدام في هذه البرامج ، فحاول خبز الخرائط العادية فيها. لا يكاد آخرين البرنامج قادر على الخبز الخرائط العادية الصحيحة لهذه التطبيقات، لذلك يبدو أن لديها أي خيار.

الحل الوحيد في هذه الحالة هو عدم عمل خرائط عادية مع هذه التطبيقات إذا كنت تريد استخدامها في مكان آخر. إذا كنت بحاجة إلى برنامج مجاني ، فاستخدم xNormal . هذه أداة قياسية في الصناعة. إذا كنت تستخدم Substance في مكان ما في مسار إنشاء المحتوى ، فاستخدمه.


خبز 3ds Max على الخريطة العادية التي يستخدمها Unity

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

تحولت العديد من التطبيقات غير Autodesk إلى طريقة حساب مساحة مماسة تسمى MikkTSpace.. كل من xNormal و Substance ، بالإضافة إلى Blender و Unity و Unreal و Godot و Marmoset و Houdini و Modo وبعض الآخرين ، يستخدمون بشكل افتراضي MikkTSpace أو على الأقل بطريقة ما يدعمها ، مما يحسن بشكل كبير من توافقها. في الواقع ، على مدى السنوات العشر الماضية ، أصبح في الواقع معيار الصناعة في جميع الحالات عند استخدام الخرائط العادية لمساحة التماس. من المفترض ، في مرحلة ما ، أن يضيف 3ds Max دعمه ، ولكن من غير الواضح ما إذا كان المطورون يخططون للسماح بخبز خرائط عادية باستخدام MikkTSpace أو ببساطة تقديم الدعم للعرض / التقديم بمساعدتهم.

شبكات التصدير ورسام المواد


هناك مشكلة أخرى مع 3ds Max و Maya وهي أنه عند تصدير الشبكات منها ، يوجد خيار تصدير بـ "المماس والمظاهر". لن تكون في الظل الفعلي لـ MikkTSpace ، ولكنها ستستند إليها. تفرض بعض التطبيقات إعادة الحساب الافتراضية لـ MikkTSpace الصحيحة (على سبيل المثال ، xNormal و Unity و Unreal) ، لكن التطبيقات الأخرى تستخدم شبكات الظل (إن وجدت) "كما هي" وتحسب MikkTSpace فقط إذا لم يكن للشبكة ظل. على سبيل المثال ، يستخدم Substance Painter شبكات الظل إذا كانت موجودة ، أي أن Painter ينشئ خرائط عادية مشابهة جدًا لـ 3 ds Max! مشابه ، ولكن ليس متشابهًا تمامًا ، لذلك إذا قمت باستيرادها مرة أخرى إلى 3ds Max ، فلن تبدو جيدة مثل خبزها في Max.

MikkTSpace مقابل MikkTSpace؟


المشكلة التالية هي أن هناك أكثر من إصدار من MikkTSpace! نعم ، لن يكون هذا هو المعيار إذا لم يُحدث التباسًا بطريقة أو بأخرى . يحدد MikkTSpace كيفية تخزين البيانات في الشبكة لكل قمة ، وكيفية استخدام البيانات للعرض. تقوم جميع التطبيقات التي تدعم MikkTSpace بحساب نفس بيانات الشبكة للقمم. ولكن هناك طريقتان مختلفتان لاستخدام هذه البيانات في العرض. يحدد MikkTSpace كيفية حساب متجه المماس وتوقيع كل قمة بناءً على اتجاه الأشعة فوق البنفسجية. ولكن عند استخدام الفضاء المماس ، يتم إعادة حساب المماس إلى نقطتين (bitangent) إما لكل قمة أو لكل بكسل. يجب أن تكون هذه المعلمة هي نفسها للخبز والعرض.

لدى xNormal و Substance خيار خبز الخرائط العادية باستخدام كلتا الطريقتين. تُسمى هذه الخيارات "مساحة التماس المحسوبة لكل جزء" في Substance و "حساب الحوسبة في تظليل البكسل" في xNormal. لا تحتاج إلى استخدامه إذا كنت تقوم بالخبز لطرق عرض Unity المضمنة. ومع ذلك ، قد يكون من المفيد القيام بذلك لـ SRP ، اعتمادًا على النوع الذي تختاره!


XNormal "ثنائيات تظليل البكسل" مع العارض الأمامي المدمج Unity

بصريًا ، يبدو هذا وكأنه يستخدم مساحة تماسية مختلفة تمامًا ، ولكن عادة ما يكون أقل وضوحًا. قد تبدو بعض الوجوه كما لو كان الوضع الطبيعي مشوهًا قليلًا ولن يكون له تأثير كبير. الحل هنا بسيط للغاية - لا تحدد هذا الخيار إذا كنت تقوم بالخبز لطرق العرض المدمجة في Unity. ضع علامة في المربع إذا كنت خبز محركات Unreal أو Unity لـ HDRP.

تقول العديد من المصادر أن الخلاط والوحدة متطابقان ، ولكن في الواقع هذا ليس صحيحًا أبدًا! يستخدم Blender ، مثل Unity ، MikkTSpace و OpenGL ، ولكن ، مثل Unreal ، يستخدم الثنائيات لكل ثنائيات القطع.

والخبر السار هو أن تظليل LWRP و URP و Shader Graph يستخدم الثنائيات لكل قمة ، وتظليل HDRP المدمج لكل بكسل. في التحديث المستقبلي لـ Shader Graph (7.2.0) ، سيتم تنفيذ الانتقال إلى الحوسبة بكسل تلو الآخر ، وبعد مرور بعض الوقت ، سيتم تبديل تظليل URP المضمّن إليه أيضًا. ويمكن تغيير طرق العرض القياسية باستخدام تظليلك الخاص ، إذا اخترت مثل هذا المسار.

التثليث ، التثليث ، التثليث!


المشكلة الأخيرة هي طرق مختلفة للتثليث. إذا قمت بتصدير شبكات بدون تثليث أولي ، فليس هناك ما يضمن أن التطبيقات الأخرى ستقوم بتثليث النموذج بنفس الطريقة. هذا يضر أيضًا بالخرائط العادية! لذلك ، قم بتثليث الشبكات ، إما باستخدام خيارات التصدير ، أو من خلال معدّل التثليث.


Substance Painter , Unity , 3ds Max (quads)

يبدو هذا مشابهًا جدًا لمساحة التماس الخاطئة تمامًا ، كما لو أن الخرائط العادية تم خبزها في 3ds Max. ولكن في الحالة العامة ، فهي أكثر حدة قليلاً ، ومائلة تقريبًا ، ولا تبدو مثل التقعر السلس. في هذه الشبكة ، يظهر شكل X على الوجوه الخارجية. يمكن أن تكون هذه المشكلة صعبة ومزعجة عندما يعمل العديد من الأشخاص مع النموذج في خط إنتاج المحتوى في تطبيقات مختلفة ، لأنه من المفيد في كثير من الأحيان عدم تثليث الشبكة وحفظ المضلعات الجميلة. في هذه الحالة ، يجب عليك إما أن تتصالح مع الإزعاج ، أو أن تجعل الأداة الأخيرة في خط الأنابيب قبل تصدير النموذج إلى اللعبة تُستخدم أيضًا لإنشاء شبكة تُستخدم في الخبز العادي. مثل الفضاء المماس مع الأعراف من القمم (التي هي جزء من الفضاء المماس) ،يجب أن يتطابق التثليث تمامًا.

قائمة لإنشاء خرائط عادية مثالية للوحدة


لذا ، إليك بعض النصائح لتوليد خرائط عادية في الفضاء المماسي للشبكات منخفضة الاحتكاك من نماذج الاحتكار العالية الأصلية للاستخدام في الوحدة:

  • لا حاجة لخبز خرائط عادية باستخدام 3ds Max أو Maya أو أي تطبيق آخر لا يحتوي على خيار المماس MikkTSpace .
  • تصدير تنسجم كما المثلثات ، مع الأوضاع الطبيعية ، و ليس الظلال.
  • اختر OpenGL أو X + Y + Z + كتوجيه للخريطة العادية عند الخبز (وكذلك عند إنشاء مشروع لـ Substance Painter).
  • لا تحتاج إلى تمكين خيارات التماس إلى نقطتين " لكل بكسل " / " لكل جزء " عند الخبز لطرق العرض المدمجة (استباقية أو مؤجلة) أو LWRP.
  • قم بتضمين خياراتالتماس للنقطتين "لكل بكسل" / "لكل جزء" عند الخبز لـ HDRP وقريبًا لـ URP.
  • اترك خيارات استيراد النموذج الافتراضية للوحدة ، مع تعيين المعايير على "استيراد" والمماس على "حساب Mikktspace".

هذا كل شئ! في كل مرة تحصل على خرائط عادية مخبوزة تماما!


مرحى! الخريطة العادية المثالية!


... مع تأملات؟ مهم ..

حسنًا ، آخر واحد فقط نتجاهله. "مثالي" قدر الإمكان مع تنسيقات نسيج مضغوط مع 8 بت لكل قناة. قد تبدو الخريطة العادية المتدنية أفضل قليلاً من الخطوط ، ولكن للأسف ، لا توفر العديد من الأدوات هذا الخيار. خلاف ذلك ، يمكنك استخدام الخرائط العادية 16 بت. لكن هذا موضوع لمقال آخر.

اعرف المزيد عن MikkTSpace.


يشرح الموقع شبه الرسمي لـ mikktspace.com الفوائد الرئيسية لـ MikkTSpace بشكل جيد. على وجه الخصوص ، تعمل هذه المساحة بشكل جيد لإعادة الحساب ونقل البيانات المماسة بين البرامج ذات المعالجة الشبكية المختلفة ، مع الحفاظ على سلامة النتائج. نص الموقع هو نسخة من صفحة Blender wik المعطلة بالفعل التي كتبها Morten S. Mikkelsen نفسه. لسوء الحظ ، فإنه يذكر فقط الإصدار ذو المماس بنقطتين لكل بكسل ، وليس الإصدار لكل قمة ، وهو الافتراضي الذي تستخدمه Unity و xNormal. نظرًا لأن Blender يستخدم مشتقات المماس لكل بكسل ، فمن المنطقي أن يتم ذكرها فقط.

فيما يلي تعليقات حول هذين الخيارين من ملف mikktspace.h الأصلي :

, /.

bitangent = fSign * cross(vN, tangent);



(/ ) , .

, , , «» , : vT, vB vN.

( )

vNout = normalize( vNt.x * vT + vNt.y * vB + vNt.z * vN );

vNt — . «» , , .



, , , .

لذا ، في المثال الأصلي ، يتم إعادة إنشاء الظل إلى نقطتين في تظليل الرأس وتمريره إلى تظليل البكسل كقيمة أخرى محرف. هذه هي الطريقة التي تتعامل بها تظليل الوحدة العادية حاليًا مع الخرائط العادية. مثال على أداء هذه المهمة في تظليل بكسل هو أكثر ارتجالًا وليس مجرد مثال "رئيسي". بالإضافة إلى ذلك ، منذ أن تم تنفيذ تطبيق Unity 5.3 (و xNormal؟) بواسطة Morten S. Mikkelsen نفسه ، وكلاهما يستخدم الظل في كل قمة ، وهذا دليل آخر على نظريتنا. ولكن بعد ذلك استخدم Blender ظلال بكسل لكل بكسل ، كما شارك مورتن. ربما ، في الواقع ، كان مجرد خيار تسبب في تغييرات صغيرة في تظليل الوحدة النهائية ، وبينما للرسومات في الوقت الفعلي ، لم يتم اعتبار أي من الطرق أفضل بكثير من الأخرى.

تتمثل ميزة تنفيذ البيكسل في التخلص من قيمتين محرفتين بتكلفة إضافية بسيطة لـ ALU (رياضيات تظليل البكسل). هذا يعني أنه بدلاً من القيم الثلاث لـ Vector3 (المماس ، المماس بنقطتين والعادي) ، نحن بحاجة فقط إلى Vector4 و Vector3 (المماس بعلامة وطبيعي). على وحدات معالجة الرسومات الحديثة ، يكون هذا أسرع قليلاً. وهو بالتأكيد أسرع عندما يتم تنفيذه في وحدة المعالجة المركزية ، حيث يمكن استخدامه للعرض غير الحقيقي. من وجهة النظر هذه ، من المنطقي أن معظم الصناعة قررت إعادة المماس إلى نقطتين في البكسل ، وليس في الأعلى.

من المضحك أنه عندما كتبت هذا المقال ، روّج مورتن للانتقال في Unity SRP إلى بكسل تلامس بكسل إلى نقطتين! إنه مجرد سوء حظ أن طرق العرض المدمجة في Unity لها إرث من الخيارات غير الملائمة.



الفضاء المماس في تطبيقات مختلفة


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

الوحدة (5.3+)


الاتجاه: OpenGL Y +
مساحة الظل: MikkTSpace
حساب المماس إلى نقطتين لـ MikkTSpace: للقمم أو للبيكسلات *

ملاحظات:افتراضيًا ، يعيد المحرك تعريف ظل الشبكة بالقوة عند الاستيراد لاستخدام MikkTSpace. بالنسبة للمستخدمين المتقدمين ، لديه خيارات لاستخدام شبكة الظل ، ولكن هذا لا يضمن التوافق مع الخرائط العادية المخبوزة في أدوات أخرى ، خاصة عند استخدام أجهزة تظليل مدمجة. يمكن استبدالها بتظليل خاص بها تمامًا. وبالنسبة للتظليل المضمن ، يستخدم HDRP ظلًا بكسلًا تلو الآخر إلى نقطتين. في وقت كتابة هذا التقرير ، كان من المخطط أن يتحول تظليل URP و Shader Graph أيضًا إلى ظل بين بكسل لكل بكسل إلى نقطتين. قبل Unity 5.3 ، استخدم المحرك المماسح Lengyel ، والتي لا يزال من الممكن استخدامها عن طريق تحديد خيار Legacy Tangents في مستورد الشبكة ، لكن أجهزة التظليل المدمجة لم تعد تدعم هذه المساحة المماسكة.

إضافة: قبل URP 7.2.0 تم كسر معالجة الخرائط العادية في Shader Graph بالكامل! لا يتم استخدام MikkTSpace ولا حتى مساحة Lengyel المماس بشكل صحيح ، ومن المستحيل إصلاح ذلك داخل Shader Graph. إن أمكن ، قم بالترقية إلى 7.2.0.

محرك غير واقعي 4


الاتجاه: Direct3D Y-
مساحة الظل: MikkTSpace
حساب المماس إلى نقطتين لـ MikkTSpace: بكسل بعد بكسل
ملاحظات: بشكل افتراضي ، يعيد المحرك تعريف ظل الشبكة عند الاستيراد باستخدام MikkTSpace. بالنسبة للمستخدمين المتقدمين ، لديه خيارات لاستخدام شبكة تماس ، ولكن هذا لا يضمن التوافق مع الخرائط العادية المخبوزة في أدوات أخرى.

جودو


الاتجاه: OpenGL Y +
Tangent space: MikkTSpace
حساب المماس إلى نقطتين لـ MikkTSpace: لكل قمة
ملاحظات: إذا لم تكن هناك بيانات تماس ، فيمكنها حساب شبكات الظل في MikkTSpace عند الاستيراد. تقترح وثائق المحرك تصدير شبكات التماس المماس ، ولكن نظرًا لأن معظم الأدوات لا تقوم بتصدير شبكة التماس الصحيحة ، فسوف أتجاهل هذا التلميح. حتى إذا كنت تستخدم شبكة التماس الأصلية ، فليس هناك ما يضمن أن تظهر الخرائط العادية بشكل صحيح.

Playcanvas


الاتجاه: OpenGL Y +
مساحة الظل: Lengyel / Schüler *
حساب المماس إلى نقطتين: لكل قمة / بناءً على المشتقات
ملاحظات: يوفر عدة طرق لمعالجة مساحة الظل. لا تستخدم المماس الذي تم إنشاؤه بالكود MikkTSpace. لديها خيارات لاستخدام التماس إلى نقطتين لكل قمة والتي إما تطبيع متجهات الفضاء المماس في تظليل البكسل "fastTbn" دون تطبيع الفضاء المماس في تظليل الجزء (الذي نحتاجه، بما أن هذا يتوافق مع تنفيذ MikkTSpace مع حساب لكل قمة) ، أو يستخدمون TBN القائم على المشتقات ، المستعارة من Christian Schuler ؛ يتجاهل تمامًا ظل الشبكة ويحسب مساحة الظل في تظليل البكسل. الآن ، بشكل افتراضي ، يتم استخدام الخرائط العادية القائمة على المشتقات ، والتي ، حسب علمي ، لا توجد أدوات لخبز الخرائط العادية الدقيقة. من الممكن أنه يمكنك استيراد الشبكات مع المعايير الحالية وبيانات الظل من MikkTSpace ، ثم استخدام خيار المواد "fastTbn" لمطابقة طرق العرض المدمجة في Unity ، ولكن أعتقد أنه يجب أن يتم ذلك في التعليمات البرمجية ، وليس من خلال واجهة المحرر.

الشعيرة


الاتجاه: OpenGL Y +
Tangent space: MikkTSpace
حساب المماس إلى نقطتين لـ MikkTSpace: لكل قمة
ملاحظات: اعتمادًا على الأداء في المستقبل ، قد يتحول المحرك إلى المماس بكسل بعد بكسل إلى نقطتين.

3ds ماكس


الاتجاه: Direct3D Y- *
مساحة الظل:
خيارات تصدير الشبكة الأصلية : تصدير ملفات FBX مع تشغيل Triangulate مع إيقاف تشغيل Tangents و Binormals. يجب تصدير المعتاد دائما. يمكن ترك الأعطال العادية لكل انقسام.
ملاحظات: افتراضيًا ، يفترض 3ds Max استخدام اتجاه Direct3D في الخرائط العادية ، ولكن لديه خيارات لقلب اتجاهات X و Y عند استخدام مواد الخريطة العادية على المواد. يستخدم الخبز دائمًا الاتجاه Direct3D. سيظهر دعم MikkTSpace في الإصدارات المستقبلية.

مايا


الاتجاه: OpenGL Y +
Tangent space:
خيارات تصدير الشبكة الأصلية : تصدير ملفات FBX مع تشغيل Triangulate ، ولكن Tangents و Binormals متوقف. يتم تصدير المعتاد دائما. يمكن ترك الأعطال العادية لكل انقسام.
ملاحظات: أخبرني بعض الأشخاص أن Maya تدعم جزءًا من MikkTSpace بالفعل ، لكني لا أعرف إلى أي مدى.

خلاط (2.57+)


الاتجاه: OpenGL Y +
Tangent space: MikkTSpace
حساب المماس إلى نقطتين لـ MikkTSpace: لكل
خيارات تصدير شبكة البكسل : تصدير ملفات FBX بقيمة Smoothing من "Normals Only". يمكنك التصدير باستخدام Tangent Space أو بدونه إذا كان التطبيق الهدف يستخدم أيضًا MikkTSpace ، مثل Unity أو Unreal.
ملاحظات: لا يحتوي Blender على خيار التثليث عند التصدير إلى FBX ، لذا استخدم مُعدِّل Triangulate أولاً. لن تكون الخرائط العادية المخبوزة في Blender متوافقة بنسبة 100٪ مع Unity ، ولكن إذا قمت بقلب القناة الخضراء في تطبيق تابع لجهة خارجية أو في مواد مخصصة ، فإنها تعمل بشكل مثالي في Unreal.

xNormal (3.17.5+)


الاتجاه:
مساحة التماس المخصصة : MikkTSpace *
حساب المماس إلى نقطتين لـ MikkTSpace: مخصص (لكل رأس أو بكسل)
خيارات الخبز للخرائط العادية:لديه خيارات قلب جميع المحاور الثلاثة للخريطة العادية أثناء التصدير. الوحدة بحاجة إلى X + Y + Z +. هناك أيضًا خيار استخدام المماس إلى نقطتين لكل قمة أو بكسل (أي جزء). بشكل افتراضي ، يستخدم xNormal المماس لنقطتين لكل قمة ، ولكن يمكن تغيير ذلك في قائمة مدير المكونات الإضافية (رمز قابس الطاقة في الزاوية اليسرى السفلية) عن طريق النقر على "حاسبة أساس Tangent" و "Mikk - TSpace" والنقر على تكوين. ستظهر نافذة منبثقة مع الخيار الوحيد "حساب ثنائية في تظليل بكسل". يجب إيقاف تشغيله لـ Unity وتشغيله لـ Unreal.
ملاحظات:على الرغم من أن xNormal يدعم MikkTSpace فقط ، إلا أن نظام المكون الإضافي الخاص به يدعم نظريًا أي مساحة مماسة. حتى الآن ، تم تصميم المكوّن الإضافي الوحيد في الفضاء المماس الذي أعرفه لخبز مساحة الظل Unity 4 وهو عديم الفائدة بالفعل. أي ، إذا تم تناوله بشكل واقعي ، فإن التطبيق يدعم MikkTSpace فقط.

رسام المواد


الاتجاه:
مساحة قابلة للتخصيص (OpenGL أو Direct3D) مساحة مواءمة : MikkTSpace
حساب المماس إلى نقطتين لـ MikkTSpace: قابل للتخصيص (للرؤوس أو وحدات البكسل)
خيارات الخبز للخرائط العادية: لديه خيارات الخبز في OpenGL أو Direct3D. وخيار لاستخدام المماس إلى نقطتين لكل قمة أو بكسل (جزء) ، والذي تم تكوينه بواسطة معلمة "حساب مساحة المماس لكل جزء". عند التصدير لطرق عرض Unity المضمنة ، تحتاج إلى تحديد OpenGL وتعطيل مساحة التماس المحسوبة لكل جزء في المشروع وخيارات التصدير ، وعند التصدير إلى Unreal أو Unity HDRP ، افعل العكس.
ملاحظات:يستخدم Substance Painter بشكل افتراضي بيانات الظل التي تستخدمها الشبكة المستوردة. ما لم تكن تقوم بالتصدير من Blender ، فأنت لا تحتاج إليها! ولكن لا توجد خيارات لتعطيل هذه الميزة. قبل الاستيراد إلى Substance Painter ، يتم تصدير شبكات دون ظل . في وقت سابق من وثائق Substance ، تم الادعاء عن طريق الخطأ أن حسابات المماس لنقطتين
في Blender تتوافق مع Unity ، ولكن تم إصلاح الخطأ الآن!

حقيبة أدوات Marmoset 3


التوجه: مخصص
الظل الفضاء: مخصص
حساب الظلال الى نقطتين لMikkTSpace: بكسل بكسل
ملاحظات: يبدو أن البرنامج لديه خيارات لعرض أو الخبز الخرائط العادية في تقريبا أي تكوين موجود. بما في ذلك إعدادات جاهزة لمساحات التماس 3ds Max و Maya! ومع ذلك ، فإن خيار الفضاء المماس "Mikk / xNormal" يستخدم المماس بكسل بعد بكسل إلى نقطتين ، ولا يمكن تغيير ذلك. بمعنى ، لا يمكن لـ Marmoset Toolbag 3 عرض الخرائط العادية أو خبزها بشكل صحيح لطرق عرض Unity المضمنة. ربما في الإصدارات المستقبلية سيتغير الوضع ، لأن المطورين يدركون المشكلة.

3DCoat


التوجه: مخصص
الظل الفضاء: مخصص
حساب الظلال الى نقطتين لMikkTSpace :
ملاحظات: لديها العديد من الخيارات لعرض وخبز الخرائط العادية. إنه قادر تمامًا على مطابقة Blender و UE4 ، وبالتالي فهو يدعم المماس بين البيكسل إلى نقطتين ، لكنني لا أعرف ما إذا كانت الظلات إلى نقطتين مستخدمة في إعداد الوحدة المسبق.

هوديني (16.0.514+)


الاتجاه:
مساحة التماس القابلة للتخصيص : قابلة للتخصيص *
حساب المماس إلى نقطتين لـ MikkTSpace: بكسل تلو بكسل
ملاحظات: يدعم التماس الخاص به أو أساس MikkTSpace ، سواء للعرض أو للخبز ، ولكن فقط في إصدار بكسل تلو بكسل. يبدو أنه بشكل افتراضي لا يستخدم MikkTSpace للعرض ، ولكن بدءًا من Houdini 17.5. يمكن تعديل الشبكات باستخدام العقد المدمجة لاستخدام MikkTSpace المماس.

مودو (10+؟)


الاتجاه:
مساحة الظل المخصصة :
حساب مخصص لنقطتين لميك سبيس: مخصص ( رأس أو بكسل لكل بكسل) *
ملاحظات: يبدو أنه يدعم العرض والخبز في مساحات ظلامية مختلفة ، بالإضافة إلى خيار ظل البيكسل إلى نقطتين للتصدير. لم أختبر هذا.

نالد


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



أخيرا


أحد الجوانب المهمة هو أنه إذا كان النموذج منخفض الكثافة الذي تخبز عليه مجرد مستوى (على سبيل المثال ، لتجانب الملمس) ، فإن كل شيء مكتوب غير مهم ويمكنك خبزه باستخدام أي أداة ... إذا احتفظت بكل شيء في الاتجاه الصحيح أو اقلب قنوات النسيج المقابلة لاحقًا.

بالإضافة إلى ذلك ، فإن معظم المشاكل المدرجة في المقالة ملحوظة فقط في النماذج الصلبة. يمكن أن تخفي الأشكال العضوية أكثر الاختلافات الدقيقة ، على سبيل المثال ، الفرق بين الذروة والبكسل بواسطة ظل البيكسل إلى نقطتين.

Source: https://habr.com/ru/post/undefined/


All Articles