تكوين تحويل النموذج
يوثق هذا الفصل خيارات تحويل النموذج.
ملف الإعدادات
إذا تم العثور على ملف تم استدعاؤه <modelName>.ConversionSettings.json في حاوية الإدخال بجانب نموذج <modelName>.<ext>الإدخال ، استخدامه لتوفير تكوين إضافي لعملية تحويل النموذج.
على سبيل المثال ، box.ConversionSettings.json سيتم استخدامه عند التحويل box.gltf.
يجب أن تفي محتويات الملف بمخطط 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
}
مثال على الملف box.ConversionSettings.json قد يكون:
{
"scaling" : 0.01,
"recenterToOrigin" : true,
"material-override" : "box_materials_override.json"
}
معلمات الهندسة
scaling- تقوم هذه المعلمة بقياس نموذج بشكل موحد. يمكن استخدام القياس لنمو نموذج أو تقليصه، على سبيل المثال لعرض نموذج بناء على سطح طاولة. يعد التحجيم مهما أيضا عندما يتم تعريف النموذج بوحدات أخرى غير العدادات ، لأن محرك العرض يتوقع العدادات. على سبيل المثال ، إذا تم تعريف نموذج بالسنتيمترات ، فإن تطبيق مقياس 0.01 يجب أن يجعل النموذج بالحجم الصحيح. توفر بعض تنسيقات بيانات المصدر (على سبيل المثال .fbx) تلميحا لقياس الوحدة، وفي هذه الحالة يقوم التحويل ضمنيا بقياس النموذج إلى وحدات متر. سيتم تطبيق القياس الضمني الذي يوفره تنسيق المصدر أعلى معلمة القياس. يتم تطبيق عامل القياس النهائي على القمم الهندسية والتحويلات المحلية لعقد الرسم البياني للمشهد. يبقى تحجيم تحويل الكيان الجذري دون تعديل.recenterToOrigin- ينص على أنه ينبغي تحويل النموذج بحيث يتمركز صندوقه المحيط في الأصل. إذا تم إزاحة نموذج مصدر بعيدا عن المنشأ، فقد تتسبب مشكلات دقة النقطة العائمة في تقديم القطع الأثرية. يمكن أن يساعد توسيط النموذج في هذه الحالة.opaqueMaterialDefaultSidedness- يفترض محرك العرض أن المواد غير الشفافة ذات وجهين. إذا لم يكن هذا الافتراض صحيحا لنموذج معين ، فيجب تعيين هذه المعلمة على "SingleSided". لمزيد من المعلومات، راجع single sided rendering.
إزالة الازدواجية من المواد
deduplicateMaterials- تمكن هذه المعلمة أو تعطل إزالة الازدواجية التلقائية للمواد التي تشترك في نفس الخصائص والقوام. يحدث إلغاء الازدواجية بعد معالجة تجاوزات المواد. يتم تمكينه افتراضيًا.إذا كان النموذج يحتوي حتى بعد إزالة الازدواجية على أكثر من 65,535 مادة ، فستحاول الخدمة دمج المواد ذات الخصائص المماثلة. كملاذ أخير ، سيتم استبدال أي مواد تتجاوز الحد بمادة خطأ حمراء.

مكعبان من 68,921 مثلث ملون. على اليسار: قبل إزالة الازدواجية باستخدام 68,921 مادة ملونة. على اليمين: بعد إزالة الازدواجية مع 64000 مادة ملونة. الحد الأقصى هو 65,535 مادة. (انظر الحدود.)
معلمات مساحة اللون
يتوقع محرك العرض أن تكون قيم الألوان في الفضاء الخطي. إذا تم تعريف نموذج باستخدام مساحة غاما ، فيجب تعيين هذه الخيارات إلى true.
gammaToLinearMaterial- تحويل ألوان المواد من مساحة غاما إلى الفضاء الخطيgammaToLinearVertex- تحويل vertex الألوان من الفضاء غاما إلى الفضاء الخطي
ملاحظة
بالنسبة لملفات FBX ، يتم تعيين هذه الإعدادات إلى true افتراضيا. بالنسبة لجميع أنواع الملفات الأخرى ، يكون الإعداد الافتراضي هو false.
معلمات المشهد
sceneGraphMode- يحدد كيفية تحويل الرسم البياني للمشهد في الملف المصدر:dynamic(افتراضي): يتم عرض جميع الكائنات الموجودة في الملف ككيانات في واجهة برمجة التطبيقات ويمكن تحويلها وإعادة ترتيبها بشكل تعسفي. التسلسل الهرمي للعقدة في وقت التشغيل مطابق للبنية الموجودة في الملف المصدر.staticمشابهة لdynamic، ولكن لا يمكن إعادة إنشاء الكائنات الموجودة في الرسم البياني للمشهد إلى كائنات أخرى ديناميكيا في وقت التشغيل.: بالنسبة للنماذج الديناميكية التي تحتوي على العديد من الأجزاء المتحركة (على سبيل المثال "عرض الانفجارdynamic") ، يقوم الخيار بإنشاء نموذج أكثر كفاءة في العرض ، ولكنstaticالوضع لا يزال يسمح بتحويلات الأجزاء الفردية. في حالة عدم الحاجة إلى إعادة الأبوة والأمومة الديناميكية ، فإنstaticالخيار هو الأنسب للنماذج التي تحتوي على العديد من الأجزاء الفردية.noneيتم طي الرسم البياني للمشهد في كائن واحد.:
كل وضع له أداء وقت تشغيل مختلف. في الوضع، يتم قياس تكلفة الأداء خطيا مع عدد الكيانات في dynamic الرسم البياني، حتى عند عدم نقل أي جزء. استخدم dynamic الوضع فقط عندما يكون من الضروري نقل العديد من الأجزاء أو الرسوم البيانية الفرعية الكبيرة في وقت واحد ، على سبيل المثال لرسوم متحركة "عرض الانفجار".
يقوم static الوضع أيضا بتصدير الرسم البياني الكامل للمشهد. ستقوم الاستعلامات المكانية بإرجاع أجزاء فردية ويمكن تعديل كل جزء من خلال تجاوزات الحالة. باستخدام هذا الوضع ، تكون النفقات العامة لوقت التشغيل لكل كائن ضئيلة. إنه مثالي للمشاهد الكبيرة حيث تحتاج إلى فحص لكل كائن ، وتغييرات تحويل عرضية على أجزاء فردية ، ولكن لا توجد إعادة أبوة والأمومة للكائن.
يحتوي none الوضع على أقل وقت تشغيل عام وأيضا أوقات تحميل أفضل قليلا. فحص أو تحويل كائنات مفردة غير ممكن في هذا الوضع. حالات الاستخدام هي ، على سبيل المثال ، نماذج المسح التصويري التي لا تحتوي على رسم بياني ذي معنى للمشهد في المقام الأول.
تلميح
ستقوم العديد من التطبيقات بتحميل نماذج متعددة. يجب عليك تحسين معلمات التحويل لكل نموذج اعتمادا على كيفية استخدامه. على سبيل المثال ، إذا كنت ترغب في عرض طراز سيارة للمستخدم لتفكيكها وفحصها بالتفصيل ، فأنت بحاجة إلى تحويلها باستخدام dynamic الوضع. ومع ذلك ، إذا كنت ترغب أيضا في وضع السيارة في بيئة غرفة العرض ، فيمكن تحويل هذا الطراز مع sceneGraphMode تعيين إلى static أو حتى none.
معلمات الفيزياء
generateCollisionMesh- إذا كنت بحاجة إلى دعم للاستعلامات المكانية على نموذج ، فيجب تمكين هذا الخيار. في أسوأ الحالات ، يمكن أن يؤدي إنشاء شبكة تصادم إلى مضاعفة وقت التحويل. تستغرق الطرز ذات شبكات التصادم وقتا أطول للتحميل وعند استخدام رسم بياني للمشهدdynamic، يكون لديها أيضا أداء أعلى لوقت التشغيل. للحصول على الأداء الأمثل بشكل عام، يجب تعطيل هذا الخيار على جميع الطرز التي لا تحتاج إلى استعلامات مكانية عليها.
المواد غير المضاءة
unlitMaterials- بشكل افتراضي ، سيفضل التحويل إنشاء مواد PBR. يخبر هذا الخيار المحول بمعالجة جميع المواد كمواد ملونة بدلا من ذلك. إذا كانت لديك بيانات تتضمن بالفعل الإضاءة، مثل الطرز التي تم إنشاؤها من خلال المسح التصويري، فإن هذا الخيار يسمح لك بفرض التحويل الصحيح لجميع المواد بسرعة، دون الحاجة إلى تجاوز كل مادة على حدة.
التحويل من تنسيقات FBX القديمة ، باستخدام نموذج مادة Phong
fbxAssumeMetallic- تحدد الإصدارات القديمة من تنسيق FBX موادها باستخدام نموذج مواد Phong. يجب أن تستنتج عملية التحويل كيفية تعيين هذه المواد لنموذج PBR الخاص بالعارض. عادة ما يعمل هذا بشكل جيد ، ولكن يمكن أن ينشأ غموض عندما لا تحتوي المادة على قوام ، وقيم منظار عالية ، ولون بياض غير رمادي. في هذه الحالة ، يجب على التحويل الاختيار بين إعطاء الأولوية للقيم المضاربة العالية ، أو تحديد مادة معدنية عاكسة للغاية حيث يذوب لون البياض ، أو إعطاء الأولوية للون البياض ، وتحديد شيء مثل البلاستيك الملون اللامع. بشكل افتراضي ، تفترض عملية التحويل أن القيم المضاربة للغاية تنطوي على مادة معدنية في الحالات التي ينطبق فيها الغموض. يمكن تعيين هذه المعلمة للتبديلfalseإلى العكس.
تجاوز نظام الإحداثيات
axis- تجاوز متجهات وحدة نظام الإحداثيات. القيم الافتراضية هي["+x", "+y", "+z"]. من الناحية النظرية ، يحتوي تنسيق FBX على رأس حيث يتم تعريف هذه المتجهات ويستخدم التحويل تلك المعلومات لتحويل المشهد. يحدد تنسيق glTF أيضا نظام إحداثيات ثابت. في الممارسة العملية ، تحتوي بعض الأصول إما على معلومات غير صحيحة في رأسها أو تم حفظها باستخدام اتفاقية نظام إحداثيات مختلفة. يسمح لك هذا الخيار بتجاوز نظام الإحداثيات للتعويض. على سبيل المثال:"axis" : ["+x", "+z", "-y"]سيتم تبادل المحور Z والمحور Y والحفاظ على نظام الإحداثيات عن طريق عكس اتجاه المحور Y.
البيانات الوصفية للعقدة
metadataKeys- يسمح لك بتحديد مفاتيح خصائص البيانات الوصفية للعقدة التي تريد الاحتفاظ بها في نتيجة التحويل. يمكنك تحديد المفاتيح الدقيقة أو مفاتيح أحرف البدل. مفاتيح أحرف البدل هي بتنسيق "ABC*" وتتطابق مع أي مفتاح يبدأ ب "ABC". أنواع قيم بيانات التعريف المعتمدة هيbool، ، ،floatintوstring.بالنسبة لملفات GLTF ، تأتي هذه البيانات من كائن الإضافات على العقد. بالنسبة لملفات FBX ، تأتي هذه البيانات من البيانات الموجودة
Properties70علىModel nodes. يرجى الرجوع إلى وثائق أداة الأصول 3D الخاصة بك لمزيد من التفاصيل.
Vertex تنسيق
من الممكن ضبط vertex التنسيق لشبكة ، لاستبدال الدقة بتوفير الذاكرة. تسمح لك مساحة الذاكرة المنخفضة بتحميل طرز أكبر أو تحقيق أداء أفضل. ومع ذلك ، اعتمادا على بياناتك ، يمكن أن يؤثر التنسيق الخاطئ بشكل كبير على جودة العرض.
تنبيه
يجب أن يكون تغيير التنسيق هو الملاذ vertex الأخير عندما لا تتناسب الطرز مع الذاكرة بعد الآن ، أو عند التحسين للحصول على أفضل أداء ممكن. يمكن للتغييرات أن تقدم بسهولة تقديم القطع الأثرية ، سواء الواضحة منها أو الخفية. ما لم تكن تعرف ما الذي تبحث عنه ، يجب ألا تغير الإعداد الافتراضي.
هذه التعديلات ممكنة:
- يمكن تضمين تدفقات بيانات محددة أو استبعادها بشكل صريح.
- يمكن تقليل دقة تدفقات البيانات لتقليل بصمة الذاكرة.
القسم التالي 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التيار المعني.
تنسيقات المكونات لكل vertex دفق
يسمح بهذه التنسيقات للمكونات المعنية:
| Vertex مكون | التنسيقات المدعومة (غامق = افتراضي) |
|---|---|
| position | 32_32_32_FLOAT، 16_16_16_16_FLOAT |
| اللون0 | 8_8_8_8_UNSIGNED_NORMALIZED ، لا شيء |
| اللون1 | 8_8_8_8_UNSIGNED_NORMALIZED ، لا شيء |
| الطبيعي | 8_8_8_8_SIGNED_NORMALIZED ، 16_16_16_16_FLOAT ، لا شيء |
| مماس | 8_8_8_8_SIGNED_NORMALIZED ، 16_16_16_16_FLOAT ، لا شيء |
| غير طبيعي | 8_8_8_8_SIGNED_NORMALIZED ، 16_16_16_16_FLOAT ، لا شيء |
| تكسكوورد0 | 32_32_FLOAT، 16_16_FLOAT، لا شيء |
| تكسكوورد1 | 32_32_FLOAT، 16_16_FLOAT، لا شيء |
تنسيقات المكونات المدعومة
آثار الذاكرة للتنسيقات هي كما يلي:
| تنسيق | الوصف | بايت لكل vertex |
|---|---|---|
| 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، ،tangentbinormal: عادة ما يتم تغيير هذه القيم معا. ما لم تكن هناك قطع أثرية إضاءة ملحوظة تنتج عن التكميم العادي ، فلا يوجد سبب لزيادة دقتها. في بعض الحالات ، على الرغم من ذلك ، يمكن تعيين هذه المكونات إلى NONE:normal،tangentولاbinormalتكون هناك حاجة إليها إلا عند إضاءة مادة واحدة على الأقل في النموذج. في ARR ، هذا هو الحال عند استخدام مادة PBR على النموذج في أي وقت.tangentولاbinormalتكون هناك حاجة إليها إلا عندما تستخدم أي من المواد المضاءة نسيج خريطة عادي.
texcoord0،texcoord1: يمكن أن تستخدم إحداثيات النسيج دقة مخفضة (16_16_FLOAT) عندما تبقى قيمها في[0; 1]النطاق وعندما يكون الحد الأقصى لحجم القوام المعالج 2048 × 2048 بكسل. إذا تم تجاوز هذه الحدود ، فستعاني جودة رسم خرائط الملمس.
مثال
افترض أن لديك نموذج المسح التصويري ، والذي يحتوي على إضاءة مخبوزة في القوام. كل ما هو مطلوب لتقديم النموذج هو vertex المواضع وإحداثيات الملمس.
بشكل افتراضي ، يجب أن يفترض المحول أنك قد ترغب في استخدام مواد PBR على نموذج في وقت ما ، لذلك سيقوم بإنشاء normal، tangentوبيانات binormal لك. وبالتالي ، فإن استخدام الذاكرة لكل قمة هو position (12 بايت) + (8 بايت) + (4 بايت) + (4 بايت) + tangenttexcoord0normalbinormal (4 بايت) = 32 بايت. يمكن أن تحتوي الطرز الأكبر حجما من هذا النوع بسهولة على عدة ملايين من النماذج الناتجة التي يمكن أن تستهلك عدة غيغابايت من vertices الذاكرة. ستؤثر هذه الكميات الكبيرة من البيانات على الأداء وقد تنفد الذاكرة.
مع العلم أنك لا تحتاج أبدا إلى إضاءة ديناميكية على النموذج ، ومعرفة أن جميع إحداثيات النسيج في [0; 1] النطاق ، يمكنك تعيين normal، وإلى binormaltexcoord0NONE ونصف الدقة (16_16_FLOAT) ، tangentمما يؤدي إلى 16 بايت فقط لكل .vertex يتيح لك قطع بيانات الشبكة إلى نصفين تحميل طرز أكبر ومن المحتمل أن يحسن الأداء.
تحسينات الذاكرة
قد يصبح استهلاك الذاكرة للمحتوى المحمل عنق الزجاجة في نظام العرض. إذا أصبحت حمولة الذاكرة كبيرة جدا، فقد يؤدي ذلك إلى تعريض أداء العرض للخطر أو التسبب في عدم تحميل النموذج تماما. تناقش هذه الفقرة بعض الاستراتيجيات المهمة لتقليل بصمة الذاكرة.
الثبات
Instancing هو مفهوم حيث يتم إعادة استخدام الشبكات للأجزاء ذات التحولات المكانية المتميزة ، بدلا من كل جزء يشير إلى هندسته الفريدة. Instancing له تأثير كبير على بصمة الذاكرة. مثال على حالات الاستخدام للتثبيت هي البراغي في نموذج المحرك أو الكراسي في نموذج معماري.
ملاحظة
يمكن أن يؤدي Instancing إلى تحسين استهلاك الذاكرة (وبالتالي أوقات التحميل) بشكل كبير ، ولكن التحسينات على جانب أداء العرض غير مهمة.
تحترم خدمة التحويل instancing إذا تم ترميز الأجزاء وفقا لذلك في الملف المصدر. ومع ذلك ، لا يؤدي التحويل إلى تحليل عميق إضافي لبيانات الشبكة لتحديد الأجزاء القابلة لإعادة الاستخدام. وبالتالي فإن أداة إنشاء المحتوى وخط أنابيب التصدير الخاص بها هما المعياران الحاسم لإعداد instancing المناسب.
هناك طريقة بسيطة لاختبار ما إذا كان يتم الحفاظ على معلومات instancing أثناء التحويل وهي إلقاء نظرة على إحصاءات المخرجات ، وتحديدا العضو numMeshPartsInstanced . إذا كانت قيمة ال per numMeshPartsInstanced أكبر من الصفر، فهذا يشير إلى أن الشبكات تتم مشاركتها عبر المثيلات.
مثال: إعداد Instancing في 3ds Max
يحتوي Autodesk 3ds Max على أوضاع استنساخ كائنات مميزة تسمى Copy، Instanceوالتي Reference تتصرف بشكل مختلف فيما يتعلق ب instancing في الملف المصدر.fbx.

Copyفي هذا الوضع ، يتم استنساخ الشبكة ، لذلك لا يتم استخدام أي ثبات (numMeshPartsInstanced= 0.:Instanceيشترك الجسمان في نفس الشبكة ، لذلك يتم استخدام instancing (numMeshPartsInstanced= 1.:Referenceيمكن تطبيق معدلات متميزة على الهندسة، لذلك يختار المصدر نهجا محافظا ولا يستخدم الثبات (numMeshPartsInstanced= 0.:
وضع التكوين القائم على العمق
إذا كانت الذاكرة مصدر قلق، فقم بتكوين جهاز العرض باستخدام وضع التكوين المستند إلى العمق. في هذا الوضع، يتم توزيع حمولة وحدة معالجة الرسومات عبر وحدات معالجة رسومات متعددة.
تقليل حجم قمة الرأس
كما نوقش في قسم أفضل الممارسات لتغييرات تنسيق المكونات ، يمكن أن يؤدي ضبط تنسيق القمة إلى تقليل بصمة الذاكرة. ومع ذلك ، يجب أن يكون هذا الخيار هو الملاذ الأخير.
أحجام الملمس
اعتمادا على نوع السيناريو، قد تفوق كمية بيانات النسيج الذاكرة المستخدمة لبيانات الشبكة. نماذج المسح التصويري هي المرشحين. لا يوفر تكوين التحويل طريقة لتقليل القوام تلقائيا. إذا لزم الأمر ، يجب إجراء تحجيم الملمس كخطوة معالجة مسبقة من جانب العميل. ومع ذلك ، فإن خطوة التحويل تختار تنسيق ضغط نسيج مناسب:
BC1للحصول على قوام ألوان غير شفافBC7للحصول على قوام اللون المصدر مع قناة ألفا
نظرا لأن التنسيق BC7 يحتوي على ضعف مساحة الذاكرة مقارنة BC1ب ، فمن المهم التأكد من أن قوام الإدخال لا يوفر قناة ألفا دون داع.
حالات الاستخدام النموذجية
يمكن أن يكون العثور على إعدادات استيراد جيدة لحالة استخدام معينة عملية شاقة. من ناحية أخرى ، قد يكون لإعدادات التحويل تأثير كبير على أداء وقت التشغيل.
هناك فئات معينة من حالات الاستخدام المؤهلة لتحسينات محددة. وترد أدناه بعض الأمثلة.
حالة الاستخدام: التصور المعماري / الخرائط الخارجية الكبيرة
تميل هذه الأنواع من المشاهد إلى أن تكون ثابتة ، مما يعني أنها لا تحتاج إلى أجزاء متحركة. وفقا لذلك ، يمكن تعيين أو
staticحتىnone،sceneGraphModeمما يحسن أداء وقت التشغيل. باستخدامstaticالوضع، لا يزال من الممكن تحريك العقدة الجذرية للمشهد وتدويرها وقياسها، على سبيل المثال للتبديل ديناميكيا بين مقياس 1:1 (لعرض الشخص الأول) وطريقة عرض أعلى الطاولة.عندما تحتاج إلى نقل الأجزاء ، فهذا يعني عادة أنك بحاجة إلى دعم للبث الشعاعي أو الاستعلامات المكانية الأخرى ، بحيث يمكنك اختيار هذه الأجزاء في المقام الأول. من ناحية أخرى ، إذا كنت لا تنوي نقل شيء ما ، فهناك احتمالات كبيرة بأنك لست بحاجة إليه أيضا للمشاركة في الاستعلامات المكانية وبالتالي يمكنك إيقاف تشغيل العلم
generateCollisionMesh. هذا التبديل له تأثير كبير على أوقات التحويل وأوقات التحميل وكذلك تكاليف تحديث وقت التشغيل لكل إطار.إذا كان التطبيق لا يستخدم الطائرات المقطوعة ،
opaqueMaterialDefaultSidednessفيجب إيقاف تشغيل العلم. عادة ما يكون كسب الأداء 20٪ -30٪. لا يزال من الممكن استخدام الطائرات المقطوعة ، ولكن لن تكون هناك وجوه خلفية عند النظر إلى الأجزاء الداخلية من الأشياء ، والتي تبدو غير بديهية. لمزيد من المعلومات، راجع single sided rendering.
حالة الاستخدام: نماذج المسح التصويري
عند عرض نماذج المسح التصويري ، ليست هناك حاجة عادة إلى رسم بياني للمشهد ، لذلك يمكنك تعيين sceneGraphMode إلى none. نظرا لأن هذه النماذج نادرا ما تحتوي على رسم بياني معقد للمشهد في البداية ، فيجب أن يكون تأثير هذا الخيار ضئيلا ، على الرغم من ذلك.
نظرا لأن الإضاءة مخبوزة بالفعل في القوام ، فلا حاجة إلى إضاءة ديناميكية. لذلك:
unlitMaterialsاضبط العلمtrueلتحويل جميع المواد إلى مواد ملونة غير مضاءة.- إزالة البيانات غير الضرورية من تنسيق الرأس. انظر المثال أعلاه.
حالة الاستخدام: تصور الآلات المدمجة ، إلخ.
في حالات الاستخدام هذه ، غالبا ما تحتوي النماذج على تفاصيل عالية جدا داخل حجم صغير. تم تحسين جهاز العرض بشكل كبير للتعامل مع مثل هذه الحالات بشكل جيد. ومع ذلك ، فإن معظم التحسينات المذكورة في حالة الاستخدام السابقة لا تنطبق هنا:
- يجب أن تكون الأجزاء الفردية قابلة للاختيار وقابلة للنقل ، لذلك
sceneGraphModeيجب تركها لdynamic. - عادة ما تكون قوالب الأشعة جزءا لا يتجزأ من التطبيق ، لذلك يجب إنشاء شبكات التصادم.
- تبدو الطائرات المقطوعة أفضل مع
opaqueMaterialDefaultSidednessتمكين العلم.
الميزات المهملة
لا يزال توفير الإعدادات باستخدام اسم conversionSettings.json الملف غير المحدد للطراز مدعوما ولكنه مهمل.
يرجى استخدام اسم <modelName>.ConversionSettings.json الملف الخاص بالطراز بدلا من ذلك.
لا يزال استخدام إعداد لتحديد ملف تجاوز المواد في ملف إعدادات التحويل مدعوما material-override ولكنه مهمل.
يرجى استخدام اسم <modelName>.MaterialOverrides.json الملف الخاص بالطراز بدلا من ذلك.