2013-04-25 12 views
7

के बाद तीन जेएस कोई विजुअल अपडेट नहीं है इसलिए मेरे पास एक ज्यामिति है (इस कोड का दायरा तीन है। जीमेट्री.प्रोटोटाइप) और मैं गतिशील रूप से संपादन कर रहा हूं। newData {चेहरे: [चेहरे इंडेक्स की सरणी] का एक ऑब्जेक्ट है, शिखर: [वर्टिस इंडेक्स की सरणी]}। (ये सरणी मूल चेहरे और ऊर्ध्वाधर सरणी की लंबाई को बनाए रखते हैं और फॉर्म [शून्य, शून्य, शून्य, "4", "5", शून्य, शून्य ...])मैन्युअल रूप से संपादन ज्यामिति

इन सरणी का उपयोग करके, मैं सभी चेहरों और शिखरों के माध्यम से पट्टी करें और उन्हें 2 में से 1 नए सरणी पर लागू करें, प्रभावी रूप से सभी डेटा को 2 समूहों में विभाजित करें। मैं चेहरों पर पॉइंटर्स भी अपडेट करता हूं!

अंत में मुझे पता है कि मैंने ज्यामिति को अद्यतन किया है और यह सही है, लेकिन मेरे द्वारा किए गए परिवर्तन प्रदर्शित नहीं हो रहे हैं। मैंने कोशिश की है .elementsNeedUpdate जो कारण और त्रुटि। (InitWebGlObjects में अपरिभाषित कोई संपत्ति 'ए' नहीं है ... मैंने वहां देखा,

मैंने संकेतों को अद्यतन करने की कोशिश की है, यह कुछ भी नहीं करता है।

मैंने पिछले टूल के साथ संयोजन में अद्यतन सेंट्रॉइड भी कोशिश की है। यह कुछ भी नहीं करता है।

मैंने बफर का आकार बदलने में सक्षम नहीं होने के बारे में सुना है। बफर और बफर की लंबाई क्या है? मैं मॉडल को दे रहे वर्टिसीज की मात्रा?

मैंने देखा है "आप बड़े बफर को पूर्व-आवंटित करके आकार बदलना अनुकरण कर सकते हैं और फिर अनियंत्रित चरम को ढंका/छुपा कर रख सकते हैं।" ऐसा लगता है कि मैं क्या कर रहा हूं? मैं एक ऊर्ध्वाधर कैसे पतन/छुपा सकता हूँ? मैंने उसमें कोई संदर्भ नहीं देखा है।

आपके समय के लिए धन्यवाद!

 var oldVertices = this.vertices 
     var oldFaces = this.faces; 

     var newVertices = [] 
     var newFaces = []; 

     var verticeChanges = []; 

     this.vertices = []; 
     this.faces = [];   


     for(var i in oldVertices){ 
      var curAr = ((newData.vertices[i]) ? (newVertices):(this.vertices)); 
      curAr.push(oldVertices[i]); 
      verticeChanges[i] = curAr.length-1; 
     } 

     for(var i in oldFaces){ 
      var curAr = ((newData.faces[i]) ? (newFaces):(this.faces)); 
      oldFaces[i].a = verticeChanges[oldFaces[i].a]; 
      oldFaces[i].b = verticeChanges[oldFaces[i].b]; 
      oldFaces[i].c = verticeChanges[oldFaces[i].c]; 
     } 
     console.log('Vertices Cut from', oldVertices.length, "to:", newVertices.length, 'and', this.vertices.length); 
     console.log('Faces Cut from', oldFaces.length, "to:", newFaces.length, 'and', this.faces.length); 
+0

आप तीन.जे. का क्या संशोधन कर रहे हैं? – Jias

+0

मुझे लगता है कि मैं संशोधन 52 का उपयोग कर रहा हूं, जो भी नवीनतम है –

+0

क्या आप एक jsfiddle सेट कर सकते हैं? – gaitat

उत्तर

0

शायद this ट्यूटोरियल से इस बात से जुड़ा:

"मैं सिर्फ जल्दी से Three.js, जो है जिसे आप संशोधित करता है, तो उदाहरण के लिए, के लिए एक त्वरित पकड़ लिया कहना चाहता था, जाल के शिखर, आप अपने रेंडर लूप में नोटिस करेंगे कि कुछ भी नहीं बदलेगा। क्यों? ठीक है क्योंकि थ्री.जेएस (जहां तक ​​मैं कह सकता हूं) एक जाल के लिए डेटा को अनुकूलन के रूप में कैश करता है। आपको वास्तव में क्या चाहिए करने के लिए को तीन.जेएस में ध्वजांकित करना है कि कुछ बदल गया है इसलिए यह जो भी हो, उसे फिर से समझ सकता है। आप निम्न के साथ ऐसा कर:

// गतिशील करने के लिए ज्यामिति इतना है कि यह अद्यतन

की अनुमति देने के लिए सेट

sphere.geometry.dynamic = true

// कोने में परिवर्तन

sphere.geometry .__ dirtyVertices = true

// normals

sphere.geometry .__ dirtyNormals = सच में परिवर्तन;। "

+1

हाँ मैंने पहले ही इनका प्रयास किया है। उनका नाम बदल दिया गया है NeedUpdate और verticesNeedUpdate Propertiesries, यह पोस्ट पुराना है –

1

मैं हाल ही में अपने आप को इस समस्या का सामना किया मैंने पाया है कि अगर मैं कोने को जोड़ने और कर रहा हूँ करने के लिए का सामना कर रहा ज्यामिति, मुझे this.groupsNeedUpdate = true सेट करने के लिए रेंडरर को इसके आंतरिक बफर अपडेट करने के लिए कहने की आवश्यकता है।

संबंधित मुद्दे