javascript - तीन जेएस-क्या आप एक कोलाडा फ़ाइल से लोड एनिमेशन क्लोन कर सकते हैं?



animation three.js (1)

मैं अनिवार्य रूप से एक ही प्रश्न पूछ रहा हूं जैसा कि यहां पाया गया - https://github.com/mrdoob/three.js/issues/1883 - तीन जेएस का उपयोग करना मैं मूल कुंजीफ्रेम एनीमेशन के साथ एक कोलाडा दृश्य आयात कर सकता हूं और उन एनिमेशन को वापस चला सकता हूं आसानी से पर्याप्त है, लेकिन एनीमेशन डेटा को एक दृश्य ऑब्जेक्ट से दूसरे में कॉपी करना चाहते हैं।

क्या यह संभव है?

रनटाइम में मैंने पाया है कि कोलाडा.एनिमेशन ऑब्जेक्ट्स में एक - कोलाडा.एनिमेशन [एन] .नोड - जो कि त्रिज्या। मेष ऑब्जेक्ट प्रतीत होता है, जिसे मैं रनटाइम पर बदलने का प्रयास कर रहा हूं (कोई लाभ नहीं)। मैंने यह भी देखा है कि collada.animations [एन] .हृषार [एन] ऑब्जेक्ट, नोड संपत्ति भी है जो इस तरह दिखती है:

cameras: Array[0]
channels: Array[9]
controllers: Array[0]
endTime: 2.5
geometries: Array[1]
id: "name_of_exported_object"
keys: Array[2]
matrix: THREE.Matrix4
name: "name_of_exported_object"
nodes: Array[0]
sid: null
sids: Array[9]
startTime: 0
transforms: Array[5]
type: "NODE"

यह ऑब्जेक्ट .name और .id द्वारा, "name_of_exported_object" से बंधा हुआ है, जिसे मैं अपने 3 डी पैकेज (ब्लेंडर) के साथ बनाया था ... मुझे काफी नहीं पता है कि यह नोड ऑब्जेक्ट कैसा है। मैं collada.animation कैसे बदल सकता हूँ [n] गतिशील रूप से निर्मित दृश्य वस्तु पर एक ही एनीमेशन का उपयोग करने के लिए पर्याप्त वस्तु?


चूंकि यह प्रश्न कुछ साल पहले लिखा गया था, इसलिए तीन। जेएस एनीमेशन सिस्टम को फिर से लिखा गया है। अब आपको "क्लोन" एनीमेशन की आवश्यकता नहीं है, आप अलग-अलग मिक्सर के उपयोग से उन्हें अन्य ऑब्जेक्ट पर बस लागू कर सकते हैं। उदाहरण:

var clip; // some THREE.AnimationClip instance.

var mixer1 = new THREE.AnimationMixer( object1 );
var mixer2 = new THREE.AnimationMixer( object2 );

var action1 = mixer1.clipAction( clip );
var action2 = mixer2.clipAction( clip );

action1.play();
action2.play();

यह COLLADA के लिए अद्वितीय नहीं है, यह एफबीएक्स, ग्लोबल एफएफ़ और अन्य प्रारूपों के लिए काम करता है, जो कि तीन जेएस एनीमेशन का समर्थन करता है।





collada