finish material के लिए material गुण और material template सेट करें
रंग या texture base वाले finish material बनाएं, material template प्रबंधित करें और ऐसे texture अपलोड करें जो material से सही ढंग से जुड़ें।
Material Properties मोडल (SKU पर finish material बनाते/संपादित करते समय उपयोग होता है) उपयोगकर्ता को Color या Texture का base गुण चुनने देता है। यदि Texture चुना गया है, तो वास्तव में एक छवि अपलोड होनी चाहिए - अन्यथा 'Please upload a texture file' के साथ Save रुक जाता है; Color पर वापस जाने से सेव करते समय अपलोड किया गया कोई भी texture map हट जाता है। Texture अपलोड चयन के समय ही संग्रहीत होते हैं (प्रत्येक अपलोड एक texture asset बनाता है), और स्लाइडर/इनपुट PBR-शैली के गुणों (roughness, metalness, transmission आदि; transmission पर निर्भर कुछ फ़ील्ड मान सक्षम होने तक प्लेसहोल्डर दिखाते हैं) को नियंत्रित करते हैं। जानने योग्य एक विचित्रता: texture चौड़ाई/ऊँचाई के लिए 'lock aspect ratio' टॉगल प्रति material ब्राउज़र के localStorage में संग्रहीत होता है - यह मशीनों या उपयोगकर्ताओं के बीच सिंक नहीं होता, इसलिए टॉगल की स्थिति कंप्यूटरों के बीच भिन्न हो सकती है। Material Templates (इन गुणों के नामित प्रीसेट) अलग से प्रबंधित होते हैं: template का नाम अनिवार्य है ('Material Template name cannot be empty'), template अपडेट या जोड़े जा सकते हैं, और एक restore क्रिया संपादित मानों को template के संग्रहीत मानों पर लौटा देती है। Finish/panel-core SKU के CSV बल्क-क्रिएट के लिए template महत्वपूर्ण हैं, जहाँ material_template_id को reference sheet के किसी मौजूदा template को संदर्भित करना चाहिए।
✓ 18 अक्टूबर 2026 को प्रोडक्ट में जाँचा गयाजब base गुण Texture हो, तो material संपादक base texture के अतिरिक्त वैकल्पिक bump map और normal map slot भी प्रदान करता है, ताकि अपलोड किए गए texture के top पर गहराई जोड़ी जा सके।
✓ 18 अक्टूबर 2026 को प्रोडक्ट में जाँचा गयाtemplate निर्धारित करता है कि finish किन render गुणों का उपयोग करता है।
✓ 18 अक्टूबर 2026 को प्रोडक्ट में जाँचा गयाजब कोई material बनाया या अपडेट किया जाता है (UI या enterprise API), तो उसके properties JSON को लिंक किए गए material template के विरुद्ध मान्य किया जाता है: template अनुमत property नामों का सटीक सेट परिभाषित करता है (colour, opacity, roughness, metalness, texture map slot आदि)। template में परिभाषित न होने वाली कोई भी key सेव को PROPERTY_KEY_MISMATCH_WITH_MATERIAL_TEMPLATE_PROPERTY के साथ विफल कर देती है। अनुपस्थित keys की जाँच नहीं होती — कोई material template के गुणों के केवल एक उपसमुच्चय के साथ बिना किसी चेतावनी के सेव हो सकता है। सामान्य विफलता यह है कि कोई क्लाइंट एक template के लिए लिखा गया properties payload पुनः उपयोग करता है जबकि भिन्न material_template_id पास करता है: पुराने template के लिए वैध keys नए के विरुद्ध अस्वीकृत हो जाती हैं। API यांत्रिकी जो लोगों को उलझाती है: properties को stringified JSON object के रूप में भेजा जाना चाहिए — अपार्स करने योग्य न होने वाली string MATERIAL_CREATION_FAILURE (या MATERIAL_UPDATE_FAILURE) के साथ विफल होती है, और object के बजाय array भेजने पर INVALID_PARAMS के साथ विफलता होती है। यदि material_template_id बिल्कुल मौजूद न हो, तो त्रुटि MATERIAL_TEMPLATE_NOT_FOUND है। जब कोई क्लाइंट इनमें से कोई त्रुटि बताए, तो उनसे template प्राप्त करने, उसके property labels की सूची बनाने और अपने payload को ठीक उन्हीं keys तक सीमित करने को कहें।
texture दो फ़ील्ड, file और name, के साथ form-data के रूप में अपलोड होते हैं; समर्थित फ़ॉर्मेट jpeg, jpg और png हैं। अपलोड एक image रिकॉर्ड और उसे संदर्भित करने वाला एक texture रिकॉर्ड बनाता है, और प्रतिक्रिया texture को उसकी image सहित लौटाती है। अनुमतियाँ: अपलोड के लिए store या business unit पर catalogue-manager right आवश्यक है, लेकिन designers को भी स्पष्ट रूप से अनुमति है — एक designer catalogue प्रबंधन right के बिना भी design app से texture जोड़ सकता है। किसी material में texture का उपयोग करने के लिए, उसकी id material की 'map' property में जाती है। material सेव होते समय केवल वही base map मान्य किया जाता है: यदि map id किसी मौजूदा texture से मेल नहीं खाती, तो सेव विफल होता है (MATERIAL_CREATION_FAILURE / MATERIAL_UPDATE_FAILURE), और सफल होने पर texture की image स्वतः material की display swatch बन जाती है। अन्य map slot — normal, ambient occlusion, bump, metalness और roughness map — texture id स्वीकार करते हैं, लेकिन सेव के समय उनका अस्तित्व जाँचा नहीं जाता, इसलिए वहाँ गलत id बिना किसी त्रुटि के सेव हो जाती है और बाद में हल नहीं होती। यदि कोई क्लाइंट कहे कि उनका normal या roughness map 'does nothing', तो rendering डीबग करने से पहले सत्यापित करें कि id किसी वास्तविक texture की ओर इंगित करती है।