加载obj文件时出现threejs错误

时间:2016-01-03 09:22:59

标签: javascript three.js

我遇到了从互联网上下载的obj文件的麻烦。 所有这些文件都呈现为这张照片: Obj pic
我正在使用标准的OBJLoader。

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


    });

1 个答案:

答案 0 :(得分:0)

您的代码显示正常。

您是否在Firefox中进行测试并且您的对象设置正确吗?

目前,我在想,也许你的objUrl设置为某个地方的http://i.stack.imgur.com/26Zsk.png并且它没有改变回你想要的图像。

另一件事是,从互联网上下载的obj文件放在与使用blender创建的文件夹相同的文件夹位置吗?

我在http://tf3dm.com/download-page.php?url=high-poly-male-2014使用了你的代码,并在我的index.html旁边有了Zuccarello.obj

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

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