2015-11-09 2 views
0

Если я запускаю пример ниже это дает мне эту ошибку:ColladaLoader не может загрузить две различные модели

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 

Это последняя строка, где она вызывает визуализации()

Если я загружаю в два раза та же модель с loader.load (..) ошибка не происходит, она возникает только при выборе разных моделей.

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

(я удалил «Решено» из Вашей книги Если один из ответов помог вам, вы можете принять его, нажав на кнопку «проверить» отмечают, что достаточно индикации. для всех найдено приемлемое решение. Если вы нашли ответ самостоятельно, и это не соответствует данным ответам, вы можете сами добавить свой ответ.) – usr2564301

ответ

1

Вы попирая переменной model. Обратный вызов, который вы предоставили, не запускается до загрузки модели, но он уже начал загрузку другой.

model = colladaModel.scene; 

Вы не объявить переменную model, что делает его глобальным переменным, которая, таким образом, общий браузер широко и между этими двумя обратными вызовами). На самом деле это window.model, что вы там используете.

Изменение их:.

var model = colladaModel.scene; 
+0

Вы правы, изменили его, но ошибка все еще существует – anopows

+0

Какую версию трёх.js вы используете, и почему вы используете мини-версию для разработки? Работа с three.js намного приятнее, если у вас есть исходный код для просмотра. – Leeft

+0

О, мой плохой, с новейшей версией three.js теперь он работает. Спасибо за помощь. – anopows

Смежные вопросы