2013-02-26 154 views
8

मैं तीन। जेएस का उपयोग कर एक 3 डी प्रोजेक्ट पर काम कर रहा हूं और मैं चरित्र जैसे साधारण Minecraft को एनिमेट करना चाहता हूं।तीन। जेएस स्किन किए गए मेष की हड्डियों को कैसे स्थानांतरित करें?

ऐसा करने के लिए, मैंने ब्लेंडर (हड्डियों के साथ) से एक निर्यात किया और मैं इसे SkinnedMesh क्लास का उपयोग करके THREE.JS के साथ प्रस्तुत करता हूं।

मैंने जाल की भुजा बनाने के लिए सबकुछ करने की कोशिश की लेकिन मैं यह नहीं समझ सकता कि इसे कैसे किया जाए। मैंने रोटेशन, स्थिति, मैट्रिक्स को बदलने और सभी ध्वज को सत्य में बदलने की कोशिश की (जैसे मैट्रिक्सवर्ल्ड नेड्स अपडेट किया लेकिन हाथ नहीं चला)।

यहां एक नमूना कोड है:

var meshBody = new THREE.SkinnedMesh(geometry, materialTexture); 

... 

animate = function(){ 
    meshBody.bones[3].rotation.z += 0.1  
    meshBody.bones[3].matrixAutoUpdate = true; 
    meshBody.bones[3].matrixWorldNeedsUpdate = true; 
} 

उत्तर

5

जबकि अपने जाल का निर्माण, सुनिश्चित करें कि आपके सामग्री के skinning संपत्ति true पर सेट किया जाता है, जैसे कि:

mesh = new THREE.SkinnedMesh (geometry, 
      new THREE.MeshBasicMaterial ({color: 0xaaaa00, skinning: true}) 
    ); 
+0

हम्म, जब मैं ऐसा करता हूं तो मॉडल गायब हो जाता है। इस ट्यूटोरियल पर [लिंक] (https://devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and-exporting-it-to-three-js/) यह नामकरण का उल्लेख करता है वर्टेक्स समूहों के समान हड्डियों। थोड़ा अजीब लगता है लेकिन मैंने कोशिश की और इससे कोई फर्क नहीं पड़ता ... – robshearing

+0

ठीक है अब मुझे मिल गया। मुझे एक से अधिक vertex जोड़ने की जरूरत है। – robshearing

0

यह डिफ़ॉल्ट रूप से चार का समुदाय रोटेशन का उपयोग करता है । meshBody.bones[i].useQuaternion = false; सेट करने का प्रयास करें और फिर रोटेशन के पैरा को बदलें या इसके बजाय quaternions का उपयोग करें।