2015-11-09 2 views
0

Si je lance l'exemple ci-dessous il me donne cette erreur:ColladaLoader ne peut pas charger deux modèles différents

Uncaught TypeError: Cannot read property 'x' of undefinedt @ three.min.js:462renderBuffer @ three.min.js:549k @ three.min.js:450render @ three.min.js:561render @ loaderTest.html:46 

Ceci est la dernière ligne où il appelle render()

Si je charge deux fois le même modèle avec loader.load (..) l'erreur ne se produit pas, cela ne se produit que lorsque je choisis différents modèles.

var scene = new THREE.Scene(); 
 
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 
 

 
var renderer = new THREE.WebGLRenderer(); 
 
renderer.setSize(window.innerWidth, window.innerHeight); 
 
document.body.appendChild(renderer.domElement); 
 

 
var light = new THREE.AmbientLight(0xFFFFFF); 
 
scene.add(light); 
 

 
var loader = new THREE.ColladaLoader(); 
 
loader.options.convertUpAxis = true; 
 

 
loader.load("models/model1.dae", function(colladaModel){ 
 
    var model = colladaModel.scene; 
 
    model.position.set(0,0,0); 
 
    scene.add(model); 
 
}); 
 

 
loader.load("models/model2.dae", function(colladaModel){ 
 
    var model = colladaModel.scene; 
 
    model.position.set(20,0,0); 
 
    scene.add(model); 
 
}); 
 

 
camera.position.z = 100; 
 

 
var render = function() { 
 
    requestAnimationFrame(render); 
 
    renderer.render(scene, camera); 
 
}; 
 

 
render();

+0

(j'ai enlevé le « Résolu » de votre titre Si l'une des réponses que vous avez aidé, vous pouvez l'accepter en cliquant sur la marque « vérifier » Cela suffit indication. Si vous avez trouvé la réponse par vous-même et que ce n'est pas dans les réponses données, vous êtes libre d'ajouter une réponse de votre choix.) – usr2564301

Répondre

1

Vous piétiner sur la variable model. Le rappel que vous avez fourni ne s'exécute pas tant que le modèle n'est pas chargé, mais il a déjà commencé à charger l'autre.

model = colladaModel.scene; 

Vous n'avez pas déclaré votre variable model, ce qui en fait une variable globale qui est ainsi partagé à l'échelle navigateur et entre ces deux callbacks). C'est en fait window.model que vous utilisez là-bas.

CHANGEANTS à:.

var model = colladaModel.scene; 
+0

Vous avez raison, vous l'avez changé mais l'erreur est toujours là – anopows

+0

Quelle version de three.js utilisez-vous, et pourquoi utilisez-vous une version minifiée pour le développement? Travailler avec three.js est beaucoup plus agréable quand vous avez le code source à regarder. – Leeft

+0

Oh mon diable, avec la dernière version de three.js, ça marche maintenant. Merci de votre aide. – anopows