2016-02-23 2 views
3

Я просто изучаю использование three.js. Кажется, все в порядке, но теперь у меня есть проблема, которую я не могу решить.TREE.js: Errormessage "THREE.OBJLoader не является конструктором"

Я хочу загрузить OBJ-файл, который я создал в блендере раньше. Для этого я пытаюсь использовать THREE.OBJloader. Я скопировал код из http://mamboleoo.be/learnThree/, но я получаю ErrorMessage «THREE.OBJLoader не конструктор» в строке 32.

Все остальное работает отлично: Добавление сцены, добавление материала, добавив куб и т.д.

Чтобы сделать это легко, это код:

var renderer, scene, camera, banana; 
var ww = window.innerWidth, 
wh = window.innerHeight; 

function init(){ 

renderer = new THREE.WebGLRenderer({canvas : document.getElementById('scene')}); 
renderer.setSize(ww,wh); 

scene = new THREE.Scene(); 

camera = new THREE.PerspectiveCamera(50,ww/wh, 0.1, 10000); 
camera.position.set(0,0,500); 
scene.add(camera); 

//Add a light in the scene 
directionalLight = new THREE.DirectionalLight(0xffffff, 0.8); 
directionalLight.position.set(0, 0, 350); 
directionalLight.lookAt(new THREE.Vector3(0,0,0)); 
scene.add(directionalLight); 

//Load the obj file 
loadOBJ(); 
} 

var loadOBJ = function(){ 

//Manager from ThreeJs to track a loader and its status 
var manager = new THREE.LoadingManager(); 
//Loader for Obj from Three.js 
var loader = new THREE.OBJLoader(manager); 
//Launch loading of the obj file, addBananaInScene is the callback when it's ready 
loader.load('http://mamboleoo.be/learnThree/demos/banana.obj', addBananaInScene); 

}; 

var addBananaInScene = function(object){ 
banana = object; 
//Move the banana in the scene 
banana.rotation.x = Math.PI/2; 
banana.position.y = -200; 
banana.position.z = 50; 
//Go through all children of the loaded object and search for a Mesh 
object.traverse(function (child) { 
    //This allow us to check if the children is an instance of the Mesh constructor 
    if(child instanceof THREE.Mesh){ 
     child.material.color = new THREE.Color(0X00FF00); 
     //Sometimes there are some vertex normals missing in the .obj files, ThreeJs will compute them 
     child.geometry.computeVertexNormals(); 
    } 
}); 
//Add the 3D object in the scene 
scene.add(banana); 
render(); 
}; 


var render = function() { 
requestAnimationFrame(render); 

//Turn the banana 
banana.rotation.z += .01; 

renderer.render(scene, camera); 
}; 

init(); 

Я надеюсь, кто-то имеет представление о том, где это может исходить от.

С уважением, христианские

ответ

7

При копировании из примеров Codepen, всегда идут на ручку и проверить под «Настройки», чтобы увидеть какие-либо другие файлы, которые используются в проекте.

В вашем случае автор использует OBJLoader.js и вот откуда строится конструктор OBJLoader, и у вас нет ссылки на него. Следовательно, вы получаете ошибку. Включите ссылку, и она должна работать.

+0

ИСТИНА. Я не ожидал, что придется импортировать другой скрипт, поскольку я не видел заметку. Теперь я вижу это в документе treejs.org. Спасибо за помощь. –

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