تكوين معلمات تحويل النموذج

في هذه المقالة، تعرف على كيفية تكوين المعلمات لتحويل نموذج.

ملف الإعدادات

إذا كان ملف يسمى <modelName>. تم العثور على conversion الإعدادات.json في حاوية الإدخال بجانب نموذج الإدخال modelName<>.<ext>، ثم يتم استخدام الملف لتوفير تكوين إضافي لعملية تحويل النموذج. على سبيل المثال، عند تحويل box.gltf، يمكنك استخدام المربع. التحويل الإعدادات.json لتعيين معلمات لتحويل النموذج.

يجب أن تحتوي محتويات ملف إعدادات تحويل JSON على هذا المخطط:

{
    "$schema" : "http://json-schema.org/schema#",
    "description" : "ARR ConversionSettings Schema",
    "type" : "object",
    "definitions" : 
    {
        "position_attribute" : {"type" : "string", "description" : "Destination format of the position attribute", "enum" : [ "32_32_32_FLOAT", "16_16_16_16_FLOAT" ]},
        "color_attribute" : {"type" : "string", "description" : "Destination format of the color attribute", "enum" : [ "NONE", "8_8_8_8_UNSIGNED_NORMALIZED" ]},
        "vector_attribute" : {"type" : "string", "description" : "Destination format of the normals, tangents and binormals attributes", "enum" : [ "NONE", "8_8_8_8_SIGNED_NORMALIZED", "16_16_16_16_FLOAT" ]},
        "texcoord_attribute" : {"type" : "string", "description" : "Destination format of the texture coordinates attribute", "enum" : [ "NONE", "32_32_FLOAT", "16_16_FLOAT" ]}
    },
    "properties" : 
    {
        "scaling" : { "type" : "number", "exclusiveMinimum" : 0, "default" : 1.0 },
        "recenterToOrigin" : { "type" : "boolean", "default" : false },
        "opaqueMaterialDefaultSidedness" : {" type" : "string", "enum" : [ "SingleSided", "DoubleSided" ], "default" : "DoubleSided" },
        "material-override" : { "type" : "string", "default" : "" },
        "gammaToLinearMaterial" : { "type" : "boolean", "default" : false },
        "gammaToLinearVertex" : { "type" : "boolean", "default" : false },
        "sceneGraphMode" : { "type" : "string", "enum" : [ "none", "static", "dynamic" ], "default" : "dynamic" },
        "generateCollisionMesh" : { "type" : "boolean", "default" : true },
        "unlitMaterials" : { "type" : "boolean", "default" : false },
        "deduplicateMaterials" : {"type" : "boolean", "default" : true },
        "fbxAssumeMetallic" : {"type" : "boolean", "default" : true },
        "axis" : {
            "type" : "array",
            "items" : {
                "type" : "string",
                "enum" : [ "default", "+x", "-x", "+y", "-y", "+z", "-z" ]
            },
            "minItems" : 3,
            "maxItems" : 3
        },
        "vertex" : {
            "type" : "object",
            "properties" : {
                "position" : { "$ref" : "#/definitions/position_attribute" },
                "color0" : { "$ref" : "#/definitions/color_attribute" },
                "color1" : { "$ref" : "#/definitions/color_attribute" },
                "normal" : { "$ref" : "#/definitions/vector_attribute" },
                "tangent" : { "$ref" : "#/definitions/vector_attribute" },
                "binormal" : { "$ref" : "#/definitions/vector_attribute" },
                "texcoord0" : { "$ref" : "#/definitions/texcoord_attribute" },
                "texcoord1" : { "$ref" : "#/definitions/texcoord_attribute" }
            },
            "additionalProperties" : false
        },
        "metadataKeys" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
        }
    },
    "additionalProperties" : false
}

صندوق. قد يبدو ملف conversion الإعدادات.json مثل هذا المثال:

{
    "scaling" : 0.01,
    "recenterToOrigin" : true,
    "material-override" : "box_materials_override.json"
}

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

الإعدادات الشبكات الثلاثية

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

معلمات هندسية

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

    هام

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

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

  • opaqueMaterialDefaultSidedness: يفترض محرك العرض أن المواد المبهمة ذات وجهين. إذا لم يكن هذا الافتراض صحيحا لنموذج معين، يجب تعيين هذه المعلمة إلى SingleSided. لمزيد من المعلومات، راجع العرض من جانب واحد.

إلغاء تكرار المواد

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

  • إذا كان النموذج يحتوي على أكثر من 65535 مادة حتى بعد إلغاء التكرار، تحاول الخدمة دمج المواد التي لها خصائص مماثلة. كخيار أخير، يتم استبدال أي مواد تتجاوز الحد بمواد خطأ حمراء.

يظهر الشكل التالي مكعبين من 68,921 مثلث ملون. المثال الأيسر هو قبل إلغاء التكرار، مع 68921 مادة ملونة. المثال الصحيح هو بعد إلغاء التكرار، مع 64000 مادة ملونة. الحد الأقصى هو 65535 مادة. لمزيد من المعلومات حول حدود المواد، راجع الحدود.

Screenshot that shows two cubes of 68,921 colored triangles and the effect of deduplication.

معلمات مساحة اللون

يتوقع محرك العرض أن تكون قيم الألوان في مساحة خطية. إذا تم تعريف نموذج باستخدام مساحة غاما، يجب تعيين الخيارات التالية إلى true:

  • gammaToLinearMaterial: تحويل ألوان المواد من مساحة غاما إلى مساحة خطية.
  • gammaToLinearVertex: تحويل ألوان الذروة من مساحة غاما إلى مساحة خطية.

إشعار

بالنسبة لتنسيقات ملفات FBX وE57 وPLY وLAS وLAZ وXYZ، يتم تعيين هذه الإعدادات إلى true بشكل افتراضي. بالنسبة لكافة تنسيقات الملفات الأخرى، يكون الإعداد الافتراضي هو false.

معلمات المشهد

  • sceneGraphMode: يحدد كيفية تحويل الرسم البياني للمشهد في الملف المصدر.
    • dynamic(افتراضي): يتم عرض جميع الكائنات في الملف ككيانات في واجهة برمجة التطبيقات ويمكن تحويلها وإعادة توجيهها بشكل عشوائي. في وقت التشغيل، يكون التسلسل الهرمي للعقدة متطابقا مع البنية في الملف المصدر.
    • static: مشابه ل dynamic، ولكن لا يمكن إعادة توجيه الكائنات في الرسم البياني للمشهد إلى كائنات أخرى ديناميكيا في وقت التشغيل. بالنسبة للنماذج الديناميكية التي تحتوي على العديد من الأجزاء المتحركة، مثل عرض الانفجار، dynamic ينشئ الخيار نموذجا أكثر كفاءة في العرض، ولكن static الوضع لا يزال يسمح بالتحويلات الفردية للجزء. إذا لم يكن إعادة التوجيه الديناميكي مطلوبا، فإن static الخيار هو الأنسب للنماذج التي تحتوي على العديد من الأجزاء الفردية.
    • none: يتم طي الرسم البياني للمشهد إلى كائن واحد.

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

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

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

تلميح

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

معلمات الفيزياء

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

مواد غير مضاءة

  • unlitMaterials: بشكل افتراضي، ينشئ التحويل مواد العرض المستندة فعليا (PBR). عند تعيين هذا الخيار، يعامل المحول بدلا من ذلك جميع المواد كمواد ملونة. إذا كانت لديك بيانات تتضمن الإضاءة بالفعل، مثل النماذج التي تم إنشاؤها من خلال القياس الضوئي، فإن هذا الخيار يسمح لك بفرض التحويل الصحيح لجميع المواد بسرعة. لن تحتاج إلى تجاوز كل مادة على حدة.

التحويل من تنسيقات FBX السابقة ونماذج مواد فونغ

  • fbxAssumeMetallic: تحدد الإصدارات السابقة من تنسيق FBX موادها باستخدام نموذج مواد Phong. يجب أن تستنتج عملية التحويل كيفية تعيين هذه المواد إلى نموذج PBR الخاص بالعارض. عادة ما يعمل هذا التعيين بشكل جيد، ولكن يمكن أن ينشأ غموض عندما لا تحتوي المادة على مواد، وقيم ذات مواصفات عالية، ولون البيدو غير الرمادي. في هذا السيناريو، يجب أن يختار التحويل بين تحديد أولويات القيم عالية المواصفات، وتحديد مادة انعكاسية ومعدنية للغاية حيث يذوب لون البيدو بعيدا، أو تحديد أولويات لون البيدو عن طريق تحديد شيء ما، كما هو الحال في البلاستيك الملون اللامع. بشكل افتراضي، تفترض عملية التحويل أن القيم ذات المواصفات العالية تعني مادة معدنية في سيناريوهات غامضة. يمكنك تعيين هذه المعلمة إلى false للتأثير المعاكس.

تجاوز نظام الإحداثيات

  • axis: استخدم هذه المعلمة لتجاوز متجهات وحدة النظام الإحداثية. القيم الافتراضية هي ["+x", "+y", "+z"]. من الناحية النظرية، يحتوي تنسيق FBX على عنوان يتم فيه تعريف تلك المتجهات، ويستخدم التحويل هذه المعلومات لتحويل المشهد. يحدد تنسيق GLTF أيضا نظام إحداثيات ثابتة. في الممارسة العملية، تحتوي بعض الأصول إما على معلومات غير صحيحة في رأسها أو تم حفظها باستخدام اصطلاح نظام إحداثيات مختلف. يسمح لك هذا الخيار بتجاوز نظام الإحداثيات للتعويض. على سبيل المثال، "axis" : ["+x", "+z", "-y"] يتبادل المحور Z والمحور ص ويحافظ على تسليم نظام الإحداثيات عن طريق عكس اتجاه المحور ص.

بيانات تعريف العقدة

  • metadataKeys: استخدم هذه المعلمة لتحديد مفاتيح خصائص بيانات تعريف العقدة التي تريد الاحتفاظ بها في نتيجة التحويل. يمكنك تحديد مفاتيح دقيقة أو مفاتيح بدل. مفاتيح أحرف البدل هي من التنسيق ABC* وتطابق أي مفتاح يبدأ ب ABC. أنواع قيم بيانات التعريف المدعومة هي boolو intfloatو و.string

    بالنسبة لملفات GLTF، تأتي هذه البيانات من كائن الإضافات على العقد. بالنسبة لملفات FBX، تأتي هذه البيانات من البيانات الموجودة Properties70 على Model nodes. لمزيد من المعلومات، راجع وثائق أداة الأصول ثلاثية الأبعاد.

عند تحميل نموذج مع تمكين بيانات التعريف، يمكن استرداد قائمة كيان معين بإدخالات بيانات التعريف من خلال الدالة QueryMetadataAsync غير المتزامنة.

تنسيق الذروة

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

تنبيه

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

يمكنك إجراء هذه التعديلات:

  • تضمين تدفقات بيانات معينة أو استبعادها بشكل صريح.
  • تقليل دقة تدفقات البيانات لتقليل بصمة الذاكرة.

المقطع التالي vertex في ملف JSON اختياري. لكل جزء لم يتم تحديده بشكل صريح، تعود خدمة التحويل إلى الإعداد الافتراضي الخاص بها.

{
    ...
    "vertex" : {
        "position"  : "32_32_32_FLOAT",
        "color0"    : "NONE",
        "color1"    : "NONE",
        "normal"    : "NONE",
        "tangent"   : "NONE",
        "binormal"  : "NONE",
        "texcoord0" : "32_32_FLOAT",
        "texcoord1" : "NONE"
    },
    ...
}

من خلال فرض مكون على NONE، من المضمون أن شبكة الإخراج لا تحتوي على الدفق المعني.

تنسيقات المكونات لكل دفق ذروة

يصف الجدول التالي التنسيقات المسموح بها للمكونات المعنية:

مكون الذروة التنسيقات المدعومة الاستخدام في المواد
position 32_32_32_FLOAT (افتراضي16_16_16_16_FLOAT موضع الذروة. يجب أن يكون موجودا دائما.
color0 8_8_8_8_UNSIGNED_NORMALIZED (افتراضيNONE ألوان الذروة. راجع useVertexColor الخاصية في كل من المواد الملونة ومواد PBR والمواد vertexMixالملونة.
color1 8_8_8_8_UNSIGNED_NORMALIZED، NONE (افتراضي) غير مستخدمه. اتركه كافتراضي NONE.
normal 8_8_8_8_SIGNED_NORMALIZED (افتراضي16_16_16_16_FLOAT، NONE يستخدم للإضاءة في مواد PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED (افتراضي16_16_16_16_FLOAT، NONE يستخدم للإضاءة مع الخرائط العادية في مواد PBR.
binormal 8_8_8_8_SIGNED_NORMALIZED (افتراضي16_16_16_16_FLOAT، NONE يستخدم للإضاءة مع الخرائط العادية في مواد PBR.
texcoord0 32_32_FLOAT (افتراضي16_16_FLOAT، NONE الفتحة الأولى من إحداثيات الملمس. يمكن استخدام مواد فردية مثل albedo والخريطة العادية إما الفتحة 0 أو 1، والتي يتم تعريفها في الملف المصدر.
texcoord1 32_32_FLOAT (افتراضي16_16_FLOAT، NONE الفتحة الثانية من إحداثيات المادة. يمكن استخدام مواد فردية مثل albedo والخريطة العادية إما الفتحة 0 أو 1، والتي يتم تعريفها في الملف المصدر.

تنسيقات المكونات المدعومة

يصف الجدول التالي آثار ذاكرة تنسيقات المكونات المدعومة:

التنسيق ‏‏الوصف وحدات البايت لكل ذروة
32_32_FLOAT الدقة الكاملة للنقطة العائمة المكونة من مكونين 8
16_16_FLOAT دقة الفاصلة العائمة المكونة من مكونين 4
32_32_32_FLOAT دقة الفاصلة العائمة الكاملة المكونة من ثلاثة مكونات 12
16_16_16_16_FLOAT دقة الفاصلة العائمة المكونة من أربعة مكونات 8
8_8_8_8_UNSIGNED_NORMALIZED بايت مكون من أربعة مكونات، تمت تسويته إلى [0; 1] النطاق 4
8_8_8_8_SIGNED_NORMALIZED بايت مكون من أربعة مكونات، تمت تسويته إلى [-1; 1] النطاق 4

أفضل الممارسات لتغييرات تنسيق المكونات

  • position: من النادر أن تكون الدقة المنخفضة كافية. 16_16_16_16_FLOAT يقدم بيانات اصطناعية كمية ملحوظة، حتى بالنسبة للنماذج الصغيرة.
  • normal، tangentو، و binormal: عادة ما يتم تغيير هذه القيم معا. ما لم تكن هناك أدوات إضاءة ملحوظة تنتج عن التكميم العادي، فلا يوجد سبب لزيادة دقتها. ومع ذلك، في بعض الحالات، يمكن تعيين هذه المكونات إلى NONE:
    • normal، tangentو binormal مطلوبة فقط عندما يجب إضاءة مادة واحدة على الأقل في النموذج. في Azure Remote Rendering، يحدث هذا السيناريو عند استخدام مادة PBR على النموذج في أي وقت.
    • tangent ولا binormal تكون هناك حاجة إليها إلا عندما تستخدم أي من المواد المضاءة مادة خريطة عادية.
  • texcoord0 و texcoord1 : يمكن أن تستخدم إحداثيات المادة دقة مخفضة (16_16_FLOAT) عندما تظل قيمها في [0; 1] النطاق وعندما يكون الحد الأقصى لحجم المواد المعالجة 2048 × 2048 بكسل. إذا تم تجاوز هذه الحدود، تنخفض جودة تعيين الملمس.

مثال

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

بشكل افتراضي، يجب أن يفترض المحول أنك قد ترغب في استخدام مواد PBR على نموذج في وقت ما، لذلك يقوم بإنشاء normaltangentبيانات و و binormal لك. لذلك، فإن استخدام الذاكرة لكل ذروة هو position (12 بايت) + texcoord0 (8 بايت) + normal (4 بايت) + tangent (4 بايت) + binormal (4 بايت) = 32 بايت. يمكن أن تحتوي النماذج الأكبر من هذا النوع بسهولة على العديد من الملايين من الذروات، ما يؤدي إلى نماذج يمكن أن تستغرق عدة غيغابايت من الذاكرة. تؤثر هذه الكميات الكبيرة من البيانات على الأداء، وقد نفاد الذاكرة.

مع العلم أنك لا تحتاج أبدا إلى إضاءة ديناميكية على النموذج، ومعرفة أن جميع إحداثيات المادة موجودة في [0; 1] النطاق، يمكنك تعيين normalو tangentو binormalNONEوتعيين texcoord0 إلى نصف الدقة (16_16_FLOAT)، ما يؤدي إلى 16 بايت فقط لكل ذروة. عند قطع بيانات الشبكة إلى النصف، يمكنك تحميل نماذج أكبر، ومن المحتمل أن يتم تحسين الأداء.

الإعدادات للسحب النقطة

عند تحويل سحابة نقطة، يتم استخدام مجموعة فرعية صغيرة فقط من الخصائص من المخطط. يتم تجاهل الخصائص الأخرى ما لم يتم تحديدها.

الخصائص التي لها تأثير على تحويل سحابة النقطة هي:

  • scaling: نفس المعنى بالنسبة إلى الشبكات المثلثة.
  • recenterToOrigin: نفس المعنى بالنسبة إلى الشبكات المثلثة.
  • axis: نفس المعنى بالنسبة إلى الشبكات المثلثة. القيم الافتراضية هي ["+x", "+y", "+z"]، ولكن يتم تدوير معظم بيانات سحابة النقاط مقارنة بنظام الإحداثيات الخاص بالعارض. للتعويض، في معظم الحالات ["+x", "+z", "-y"] يقوم بإصلاح التدوير.
  • gammaToLinearVertex: على غرار الشبكات المثلثة، تشير هذه العلامة إلى ما إذا كان يجب تحويل ألوان النقطة من مساحة غاما إلى مساحة خطية. القيمة الافتراضية لتنسيقات سحابة النقاط (ملفات E57 وPLY وLAS وLAZ وXYZ) هي true.
  • generateCollisionMesh: على غرار الشبكات المثلثة، لدعم الاستعلامات المكانية، يجب تمكين هذه العلامة.

تحسينات الذاكرة

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

إشعار

تنطبق التحسينات التالية على الشبكات المثلثة. لا يمكنك تحسين إخراج سحب النقاط عن طريق تكوين إعدادات التحويل.

وضع المسند

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

أمثلة على حالات الاستخدام للقياس هي البراغي في نموذج محرك أو كراسي في نموذج معماري.

إشعار

يمكن أن يؤدي وضع الأداء إلى تحسين استهلاك الذاكرة (وبالتالي أوقات التحميل) بشكل كبير، ولكن التحسينات على أداء العرض غير هامة.

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

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

مثال: إعداد قياسي في 3ds Max

يحتوي Autodesk 3ds Max على أوضاع نسخ عناصر مميزة تسمى نسخ ومثيل ومرجع. تعمل الأوضاع بشكل مختلف للقياس في ملف .fbx الذي تم تصديره.

Screenshot that shows an example of cloning an object by using Autodesk 3ds Max.

  • نسخ: في هذا الوضع، يتم استنساخ الشبكة، لذلك لا يتم استخدام أي قاعدة ( = numMeshPartsInstanced0).
  • المثيل: يشترك الكائنان في نفس الشبكة، لذلك يتم استخدام instancing ( = numMeshPartsInstanced1).
  • المرجع: يمكن تطبيق المعدلات المميزة على الأشكال الهندسية، لذلك يختار المصدر نهجا محافظا ولا يستخدم البينة ( = numMeshPartsInstanced0).

وضع التكوين المستند إلى العمق

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

تصغير حجم الذروة

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

أحجام المادة

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

  • تنسيق ملف BC1 لملمس الألوان المبهمة
  • تنسيق ملف BC7 لملمس ألوان المصدر مع قناة ألفا

نظرا لأن تنسيق ملف BC7 يحتوي على ضعف بصمة الذاكرة لتنسيق ملف BC1، فمن المهم التأكد من أن مواد الإدخال لا توفر قناة ألفا غير ضرورية.

حالات الاستخدام النموذجية

يمكن أن يكون العثور على إعدادات استيراد جيدة لحالة استخدام معينة عملية مملة. من ناحية أخرى، قد يكون لإعدادات التحويل تأثير كبير على أداء وقت التشغيل.

بعض فئات معينة من حالات الاستخدام مؤهلة لتحسينات محددة. يتم وصف بعض الأمثلة في الأقسام التالية.

حالة الاستخدام: المرئيات المعمارية أو الخرائط الخارجية الكبيرة

بالنسبة للسيناريوهات التي تتضمن تصورا معماريا أو خرائط خارجية كبيرة، ضع في اعتبارك العوامل التالية:

  • تميل هذه الأنواع من المشاهد إلى أن تكون ثابتة. لا يحتاجون إلى أجزاء منقولة. وفقا لذلك، يمكنك تعيين sceneGraphMode إلى static، أو حتى إلى none، وتحسين أداء وقت التشغيل. في static الوضع، لا يزال من الممكن نقل عقدة جذر المشهد وتدويرها وتوسيع نطاقها. على سبيل المثال، يمكن التبديل ديناميكيا بين مقياس 1:1 (لعرض الشخص الأول) وطريقة عرض الجدول العلوي.

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

حالة الاستخدام: نماذج القياس الضوئي

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

  • قم بتعيين العلامة unlitMaterials لتحويل جميع المواد إلى مواد ملونة غير مضاءةtrue.
  • إزالة البيانات غير الضرورية من تنسيق الذروة. راجع المثال السابق.

حالة الاستخدام: تصور الأجهزة المضغوطة وغيرها

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

  • يجب أن تكون الأجزاء الفردية قابلة للتحديد ومنقولة، لذلك sceneGraphMode يجب تعيينها إلى dynamic.
  • عادة ما تكون قوالب الأشعة جزءا لا يتجزأ من التطبيق، لذلك يجب إنشاء شبكات الاصطدام.
  • تبدو المستويات المقصوصة أفضل عند تمكين العلامة opaqueMaterialDefaultSidedness .

الميزات المهملة

لا يزال تعيين معلمات تحويل النموذج باستخدام التحويل غير الخاص بالنموذج الإعدادات.json filename مدعوما، ولكنه مهمل. بدلا من ذلك، استخدم modelName> الخاص <بالنموذج. Conversion الإعدادات.json filename.

material-override لا يزال استخدام إعداد لتحديد ملف تجاوز المواد في ملف إعدادات التحويل مدعوما، ولكنه مهمل. بدلا من ذلك، استخدم modelName الخاص <بالنموذج>. اسم الملف MaterialOverrides.json .

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