2016-11-13 206 views
1

我试图加载一个模型到我的场景中。THREE.FileLoader不是构造函数(...)

我已经包含在我的项目上这些文件:

 <script src="js/build/three.min.js"></script> 
    <script src="js/loaders/OBJLoader.js"></script> 

这是我的代码

var loader = new THREE.OBJLoader(); 
    loader.load("res/rose/ModelsAndTextures/rose.obj", function (object) { 
     scene.add(object); 
    }); 

,但我得到的错误:OBJLoader.js:46遗漏的类型错误: THREE.FileLoader不是构造函数(...)

我看着在OBJLoader.js文件,并找到THREE.FileLoader - 这是L国家统计局的错误是:这项工作很好

+0

'Three.js'的修订版? – prisoner849

+0

我刚刚从github上下载了three.min.js,所以应该是最新的 – snowy500

+0

我也尝试过使用主要的three.js – snowy500

回答

0

退房的

  var loader = new THREE.FileLoader(scope.manager); 

其他民族的例子,如果你使用的right OBJLoader.js

在展示了如何正确使用该对象的例子看看:

var scene = new THREE.Scene(); 
 
var renderer, camera, banana; 
 

 
var ww = window.innerWidth, 
 
    wh = window.innerHeight; 
 

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

 
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); 
 

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

 
    banana.rotation.z += .01; 
 

 
    renderer.render(scene, camera); 
 
}; 
 

 
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', 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(); 
 
     } 
 
    }); 
 
    
 
    scene.add(banana); 
 
    render(); 
 
    }); 
 
}; 
 

 
loadOBJ();
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r79/three.min.js"></script> 
 
<script src="http://mamboleoo.be/learnThree/demos/OBJLoader.js"></script> 
 

 
<canvas id="scene"></canvas>

+0

将'LoadingManager'作为参数传递给'ObjLoader'是没有必要的。 – prisoner849

+0

[jsfiddle](https://jsfiddle.net/prisoner849/s2re8e6s/)例子。 – prisoner849

+0

你是对的,编辑。谢谢。 – bosco

0

我有这个问题,并意识到我使用旧版本的three.js所的文件。我用three.js下载的OBJLoader的build文件夹中的three.js替换了它。