मेरे पास THREE.Mesh
ऑब्जेक्ट्स की एक बड़ी संख्या (~ 1000) है जो THREE.Geometry
और THREE.MeshPhongMaterial
(जिसमें एक नक्शा है) से बनाया गया है।एक ही ज्यामिति और सामग्री के साथ कई मेष, क्या मैं उनके रंग बदल सकता हूं?
मैं इन वस्तुओं को अलग-अलग रंग (रंग) करना चाहता हूं।
नाइवेली, मैंने mesh.material.color
संपत्ति को बदलने की कोशिश की, लेकिन किसी भी वस्तु पर इस संपत्ति को बदलने से सभी वस्तुओं का रंग एक बार में बदल जाता है। यह समझ में आता है, क्योंकि केवल एक ही सामग्री है जो सभी वस्तुओं के बीच साझा की जाती है।
मेरा अगला विचार प्रत्येक ऑब्जेक्ट के लिए अलग THREE.MeshPhongMaterial
बनाना था। तो, अब मेरे पास THREE.Mesh
ऑब्जेक्ट्स की एक बड़ी संख्या है जो उसी THREE.Geometry
से बनाई गई थी, लेकिन व्यक्तिगत THREE.MeshPhongMaterials
(जो वही बनावट साझा करती है) है। यह मुझे व्यक्तिगत रूप से रंग बदलने की अनुमति देता है, लेकिन प्रदर्शन खराब है। क्रोम प्रोफाइलियर से पता चलता है कि ऐप भौतिक-चीजों को बदलने जैसी महत्वपूर्ण चीजें कर रहा है।
सामग्री रंग केवल शेडर में एक वर्दी है। तो, उस वर्दी को अद्यतन करना बहुत तेज़ होना चाहिए।
प्रश्न: जाल स्तर से सामग्री रंग को ओवरराइड करने का कोई तरीका है?
यदि वहां था, तो मुझे विश्वास है कि मैं अपनी सभी वस्तुओं के बीच सामग्री साझा कर सकता हूं और अपना प्रदर्शन वापस प्राप्त कर सकता हूं, जबकि रंग अलग-अलग बदलते हैं।
[मैं v49 और v54 पर परीक्षण किया है, वे समान प्रदर्शन और गिरावट है]
अद्यतन: मैं एक टेस्ट केस का निर्माण किया है, और इस की वजह से प्रदर्शन बूंद से छोटी मैंने सोचा कि यह किया गया है, लेकिन अभी भी मापनीय है।
यहाँ दो लिंक हैं:
- http://danceliquid.com/docs/threejs/material-test/index.html?many-materials=false
- http://danceliquid.com/docs/threejs/material-test/index.html?many-materials=true
पहले मामले में, केवल दो सामग्री, दूसरे मामले में प्रत्येक घन यह अपनी सामग्री है है कर रहे हैं। मैं इस मशीन पर 53 एफपीएस होने के पहले मामले के फ्रेमरेट को मापता हूं, और दूसरा फ्रेमरेट 46 एफपीएस है। यह लगभग 15% ड्रॉप है।
दोनों मामलों में, हर घन के सामग्री का रंग हर फ्रेम बदल जाता है। कई सामग्रियों के मामले में, हम वास्तव में प्रत्येक घन को अपने स्वयं के रंग प्राप्त करते देखते हैं, केवल दो सामग्रियों के मामले में, हम उन्हें सभी एक ही रंग (अपेक्षित के रूप में) देखते हैं।
उहम, जो "बग" जैसा लगता है। यदि आप r54 के साथ समस्या को पुन: उत्पन्न कर सकते हैं तो यह बहुत अच्छा होगा अगर आप इसे गीथब के मुद्दों अनुभाग में रिपोर्ट कर सकते हैं। – mrdoob
धन्यवाद @ mrdoob। मैंने एक मुद्दा जोड़ा है: https://github.com/mrdoob/three.js/issues/2916 – Harold