首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.js: Errormessage消息"THREE.OBJLoader不是构造函数“

THREE.js: Errormessage消息"THREE.OBJLoader不是构造函数“
EN

Stack Overflow用户
提问于 2016-02-24 02:29:31
回答 4查看 19.1K关注 0票数 17

我只是在学习three.js的用法。这似乎很好,但现在我有一个问题,我不能解决。

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

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

为了简单起见,下面是代码:

代码语言:javascript
复制
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();

我希望,有人知道这可能是从哪里来的。

向您致敬,克里斯蒂安

EN

回答 4

Stack Overflow用户

发布于 2016-02-24 02:48:35

当你从Codepen examples中复制时,总是去pen并检查'Settings‘下的,看看项目中使用的任何其他文件。

在您的例子中,作者使用的是OBJLoader.js,这就是OBJLoader构造函数的来源,而您没有引用它。因此,你得到了错误。包括引用,它应该是有效的。

票数 14
EN

Stack Overflow用户

发布于 2021-11-30 07:13:16

您可以使用ObjectLoader.js

代码语言:javascript
复制
var objLoader = new THREE.ObjectLoader();

注意: OBJLoader不工作

票数 0
EN

Stack Overflow用户

发布于 2020-04-17 23:08:19

导入OBJLoader -从‘./jsm/loaders/OBJLoader.js’导入{ OBJLoader };

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35585353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档