2015-02-03 14 views
5

मैं हाल ही में थ्री.जेएस को आजमा रहा हूं और मैंने ब्लेंडर के लिए निर्यातक एडन का उपयोग ब्लेंडर में मॉडल बनाने और निर्यात करने के लिए किया ताकि मैं उन्हें तीन में उपयोग कर सकूं .js कार्यक्रम।थ्री.जेएस JSONLoader ब्लेंडर मॉडल त्रुटि: संपत्ति 'लंबाई' अपरिभाषित

मैंने ब्लेंडर में एड-ऑन शामिल किया, और ब्लेंडर के केवल मूल घन मॉडल का उपयोग करके निर्यातक के रूप में इसे .json में निर्यात किया। तो फिर मैं एक guide के रूप में इस का उपयोग करते हुए मेरी Three.js में मॉडल आयातित लेकिन है कि मुझे एक त्रुटि दिया: (

Uncaught TypeError: Cannot read property 'length' of undefined. 

Ive पहले से ही ऑनलाइन खोज की है और के समारोह कॉल में एक माल सहित जैसे कुछ अलग दृष्टिकोण की कोशिश की लोडर) लेकिन कुछ भी काम नहीं करता है।

मैंने उत्तर के लिए स्टैक ओवरफ्लो भी चेक किया लेकिन अब तक कुछ भी हल नहीं हुआ है। अगर कोई यह स्पष्ट करेगा कि मैं क्या गलत कर रहा हूं तो मैं बहुत आभारी रहूंगा।

कोड मेरी three.js कार्यक्रम के लिए:

var WIDTH = 1000, 
     HEIGHT = 1000; 


var VIEW_ANGLE = 45, 
     ASPECT = WIDTH/HEIGHT, 
     NEAR = 0.1, 
     FAR = 10000; 


var radius = 50, 
     segments = 16, 
     rings = 16; 

var sphereMaterial = 
     new THREE.MeshLambertMaterial(
       { 
        color: 0xCCCCCC 
       }); 


var sphere = new THREE.Mesh(
     new THREE.SphereGeometry(
       radius, 
       segments, 
       rings), 
     sphereMaterial); 



var pointLight = 
     new THREE.PointLight(0x660000); 


var $container = $('#container'); 


var renderer = new THREE.WebGLRenderer(); 
var camera = 
     new THREE.PerspectiveCamera(
       VIEW_ANGLE, 
       ASPECT, 
       NEAR, 
       FAR); 

var scene = new THREE.Scene(); 

var loader = new THREE.JSONLoader(); // init the loader util 


scene.add(camera); 


pointLight.position.x = 10; 
pointLight.position.y = 50; 
pointLight.position.z = 130; 


scene.add(pointLight); 

camera.position.z = 300; 


renderer.setSize(WIDTH, HEIGHT); 

$container.append(renderer.domElement); 
window.requestAnimFrame = (function() { 
    return window.requestAnimationFrame || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      function (callback) { 
       window.setTimeout(callback, 1000/60); 
      }; 
})(); 


loader.load('test.json', function (geometry, materials) { 
    var material = new THREE.MeshFaceMaterial(materials); 
    var object = new THREE.Mesh(geometry, material); 
    scene.add(object); 

}); 


(function animloop() { 
    requestAnimFrame(animloop); 

    renderer.render(scene, camera); 
})(); 

उत्तर

3

मेरे अनुभव में अब तक निर्यातक के साथ, आप बहुत सावधान जो बक्से आप टिकटिक रहना होगा!

यह लंबाई त्रुटि आमतौर पर इसलिए होती है क्योंकि आप या तो वर्टेक्स निर्यात नहीं कर रहे हैं, या दृश्य को ऑब्जेक्ट का निर्यात नहीं कर रहे हैं।

+0

मैं कैसे डीबग कर सकते हैं? –

1

मुझे नए निर्यातक के साथ एक ही समस्या है।

यदि मैं केवल वस्तु और सामग्री और कोने का चयन करते हैं चुनिंदा दृश्य तो मैं आमतौर पर मिल

"गुण अपरिभाषित की 'लंबाई' पढ़ा नहीं जा सकता"। यह आमतौर पर हमेशा के लिए अटक गया लगता है।

अद्यतन

इस समस्या को इस प्रतिक्रिया की जांच करें!

Threejs blender exporter exports in wrong format

+0

मुझे एक ही समस्या थी, लेकिन ऐसा इसलिए था क्योंकि मैं तीन लोड में गलत लोडर का उपयोग कर रहा था। एक निर्यात किए गए दृश्य को लोड करने के लिए आपको JSONLoader के बजाय ऑब्जेक्ट लोडर का उपयोग करना होगा। कुछ 'var loader = new THREE.ObjectLoader(); \t \t \t loader.load ('डेटा/yourfile.json', समारोह (obj) { \t \t \t \t scene.add (obj); \t \t \t \t चेतन(); \t \t \t \t \t \t \t }); '। यह मेरी समस्या हल हो गई। – bre

5

जब आप निर्यात करते हैं, ज्योमेट्री (ब्लेंडर 2.76) को buffergeometry से प्रकार बदलने के

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