Javascript 加载obj文件时出现threejs错误

Javascript 加载obj文件时出现threejs错误,javascript,three.js,Javascript,Three.js,我对从互联网下载的obj文件有问题。 所有这些文件呈现为此图片: 我用的是标准的车载设备 var loader = new THREE.OBJLoader(); loader.load( objURL, function ( object ) { scene.add( object ); } ); 我想不出什么地方出了问题 编辑: 这是我的完整加载器: loader = new THREE.OBJLoader(manager); loader.load(filePa

我对从互联网下载的obj文件有问题。 所有这些文件呈现为此图片:
我用的是标准的车载设备

var loader = new THREE.OBJLoader();
loader.load( objURL, function ( object ) {
    scene.add( object );
} );
我想不出什么地方出了问题

编辑: 这是我的完整加载器:

    loader = new THREE.OBJLoader(manager);

    loader.load(filePath, function (object) {
        object.traverse(function (child) {

            if (child instanceof THREE.Mesh) {
                if (count == 1) {
                    child.material = material;
                    var box = new THREE.Box3().setFromObject(child);
                    xyzSizes = box.size();

                    var geometry = new THREE.Geometry();
                    geometry = child.geometry;

                    var volume = myVolume(geometry);
                    THREE.GeometryUtils.center(geometry);

                    scene.add(child);
                    DOM.children(".loading").remove();
                    myObj = child;
                    myObj.name = 'GL' + idfile;
                    maxSize = Math.max(xyzSizes.x, xyzSizes.y, xyzSizes.z);

                    maxSize = 2 / maxSize;
                    DOM.parent().find('.volumeVal').html(myRound(volume, 2));
                    DOM.parent().find('.sizesVal').html('x: ' + myRound(xyzSizes.x, 3) + ' y: ' + myRound(xyzSizes.y, 3) + ' z: ' + myRound(xyzSizes.z, 3));
                    console.log('il volume è: ' + volume + ' e gli assi xyz sono: ' + xyzSizes.x, xyzSizes.y, xyzSizes.z);
                    if (maxSize == 0)
                        maxSize = 0.1;
                    object.scale.set(maxSize, maxSize, maxSize);
                } else {
                    child.material = transparent;
                }
            } else {

            }
            count++;
        });


    });

您的代码看起来很好

您是否在Firefox中进行测试,您的objUrl设置是否正确

目前,我在想,也许你的目标被设置到了某个地方,但它并没有变回你想要的形象

另外,从internet下载的obj文件是否与使用blender创建的文件放在同一文件夹位置

我使用了您的代码,并将zuccarelo.obj放在index.html旁边

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

如果这些都没有帮助,请共享更多的代码,以便我能看到它,特别是涉及objURL变量的任何内容

您的代码看起来很好

您是否在Firefox中进行测试,您的objUrl设置是否正确

目前,我在想,也许你的目标被设置到了某个地方,但它并没有变回你想要的形象

另外,从internet下载的obj文件是否与使用blender创建的文件放在同一文件夹位置

我使用了您的代码,并将zuccarelo.obj放在index.html旁边

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

如果这些都没有帮助,请共享更多的代码,以便我能看到它,特别是涉及objURL变量的任何内容

如果我尝试加载在stl或使用blender创建的其他obj文件中转换的相同对象,根据文档,它们会正确显示,使用此加载程序时,默认材质为
MeshLambertMaterial
。你的场景中有灯光吗?@Mr_Pouet是的,我有灯光,我使用的是phong材质(但LambertMaterial也会出现错误),如果我尝试加载在stl或使用blender创建的其他obj文件中转换的相同对象,根据文档,它们会正确显示,使用此加载器时的默认材质为
MeshLambertMaterial
。你的场景中有灯光吗?@Mr_Pouet是的,我有灯光,我正在使用phong材质(但LambertMaterial也会出现错误)我正在使用chrome进行测试,我认为objUrl是正确的,因为它是由一个函数传递的,该函数在Web服务器根目录中上载文件,并传递文件的新路径。它与stl对象(及其加载程序)和以相同方式传递到脚本的其他obj文件一起工作。所以我认为这是物体的问题。但我觉得这很奇怪也很有趣。您是否看到使用chrome时出现任何控制台错误?另外,为了验证objurl,请放置一个console.log(objurl);加载前的语句,以确保objUrl是正确的,并让我知道控制台的内容。我检查了控制台,没有错误,我记录了objUl,它是正确的,还有其他想法吗?哦,我的场景中还有一个AxisHelper。它可以很好地处理正确显示的文件,但对于出现此错误的obj文件,它会显示,但网格会消失。我刚刚发现,如果我在blender中导入文件,然后以obj格式重新导出,当我重新加载它时,加载程序工作正常。所以文件有点问题。。。有什么想法吗?可能是错误的格式?我正在使用chrome进行测试,我认为objUrl是正确的,因为它是由一个函数传递的,该函数在Web服务器根目录中上载文件,并传递文件的新路径。它与stl对象(及其加载程序)和以相同方式传递到脚本的其他obj文件一起工作。所以我认为这是物体的问题。但我觉得这很奇怪也很有趣。您是否看到使用chrome时出现任何控制台错误?另外,为了验证objurl,请放置一个console.log(objurl);加载前的语句,以确保objUrl是正确的,并让我知道控制台的内容。我检查了控制台,没有错误,我记录了objUl,它是正确的,还有其他想法吗?哦,我的场景中还有一个AxisHelper。它可以很好地处理正确显示的文件,但对于出现此错误的obj文件,它会显示,但网格会消失。我刚刚发现,如果我在blender中导入文件,然后以obj格式重新导出,当我重新加载它时,加载程序工作正常。所以文件有点问题。。。有什么想法吗?可能是错误的格式?