无法从加载的Three.js对象创建网格

时间:2014-07-31 19:31:37

标签: javascript three.js

我使用clara.io以ThreeJS Object格式导出一个带有四个纹理的模型。它会生成一个.json文件。我正在尝试加载它并正确显示它。如果我执行以下操作(直接从clara.io导出帮助中获取),它会加载并显示但没有纹理:

    var loader = new THREE.ObjectLoader();
    loader.load( "wsc3.json", function(obj){

        scene.add(obj);

        });

我发现的一件事是,在使用不同类型的加载器时,应该可以将加载的对象转换为THREE.Mesh,获取纹理,然后将它们应用于网格。我有一个有效的例子:

    loader = new THREE.JSONLoader();
    loader.load("wsc3.js", function(geometry, materials){

        // get the materials loaded from the file
        var materialsFromFile = new THREE.MeshFaceMaterial(materials);  

        // create our mesh with the loaded geometry and materials
        mesh = new THREE.Mesh(geometry, materialsFromFile);

        scene.add(mesh);

    });

使用JSONLoader的问题是我导出的模型有子部分,当导出JSONLoader使用的.js文件时,它会丢失模型层次结构(我检查了.js文件本身而没有子部分在那里。它只是一个巨大的顶点列表)。如果我看一下clara.io导出的.json文件,我可以看到列出的各个子部分,所以我猜我需要使用这种格式。

我环顾四周,看到有人建议从ObjectLoader生成的obj创建一个新网格。像这样:

    var loader = new THREE.ObjectLoader();
    loader.load( "wsc3.json", function(obj){

        // get the geometry from the obj
        var geometry = obj.geometry;
        // get the materials from the obj
        var materials = obj.materials;

        mesh = new THREE.Mesh(geometry, materials);

        scene.add(mesh);

    });

不幸的是,这不起作用。什么都没有显示。我无法弄清楚我做错了什么。是否存在Three.js将加载的格式,这不仅会带来纹理,还会带来层次结构?

0 个答案:

没有答案