Javascript THREE.js:Errormessage“;三、OBJLoader不是构造函数“;

Javascript THREE.js:Errormessage“;三、OBJLoader不是构造函数“;,javascript,three.js,Javascript,Three.js,我正在学习three.js的用法。看起来很好,但现在我有一个问题,我无法解决 我想加载一个OBJ文件,这是我以前在blender中创建的。为此,我尝试使用THREE.OBJloader。 我从中复制了代码,但在第32行中收到错误消息“THREE.OBJLoader不是构造函数” 其他一切都很好:添加场景、添加材质、添加立方体等 为了方便起见,下面是代码: var renderer, scene, camera, banana; var ww = window.innerWidth, wh = w

我正在学习three.js的用法。看起来很好,但现在我有一个问题,我无法解决

我想加载一个OBJ文件,这是我以前在blender中创建的。为此,我尝试使用THREE.OBJloader。 我从中复制了代码,但在第32行中收到错误消息“THREE.OBJLoader不是构造函数”

其他一切都很好:添加场景、添加材质、添加立方体等

为了方便起见,下面是代码:

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();
我希望,有人有一个想法,这可能来自哪里


尊敬的Christian

当您从Codepen示例复制时,请始终转到pen并在“设置”下进行检查,以查看项目中使用的任何其他文件

在您的案例中,作者正在使用,而这正是
OBJLoader
构造函数的来源,您没有对它的引用。因此,您得到了错误。包括引用,它应该可以工作。

导入OBJLoader -从'/jsm/loaders/OBJLoader.js'导入{OBJLoader}

回答得好。 一个想法是。。。在该.js文件中,没有对该版本的引用,这些更改就像在过山车上一样,功能每天都被弃用(例如,投影仪在我认为v71左右之前还可以吗?)
three.js项目的向后兼容性存在许多问题,并且缺少一个有组织的.js文件存储库。我没有想到要导入另一个脚本,因为我没有看到注释。现在我在treejs.org的文档中看到了它。谢谢你的帮助。这不是问题的答案-请使用评论功能