three.js使用ObjectExporter导出后,材质无法正常工作

时间:2014-08-08 14:46:48

标签: three.js

使用ObjectExporter导出模型,我的代码如下

exporter = new THREE.ObjectExporter;
    var obj = exporter.parse(globalObject);
    var json = JSON.stringify(obj);
    console.log(json);

我可以成功获取json导出的数据,但是在使用ObjectLoader加载后,几何加载材料没有加载,我按照代码加载我保存的模型

 var loader = new THREE.ObjectLoader();
loader.load("savedjson.json",function ( obj ) {
  scene.add( obj );
  console.log(obj);
}); 

使用ObjectExporter

获取材料的任何线索

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我首先尝试了一种解决方法(但需要对其进行改进)。我所做的是,在加载对象后,我遍历模型

    loader.load("savedjson.json", function (obj){

        obj.traverse(function(child){ initChild(child); });

        scene.add(obj);
    }

在initChild(child)中我这样做:

    initChild(child)
    {
        if(child.material != null)
        {
           var childMaterialName = child.material.name;
           child.material = new THREE.MeshPhongMaterial();
           child.material.name = childMaterialName ;
           AssignMap(child.material);
        }
    }

在AssignMap(材质)中,我首先加载纹理,然后根据材质名称指定它们:

    AssignMap(material)
    {
        var texture_metal = new THREE.ImageUtils.loadTexture("media/texture_metal.jpg");
        var texture_glass = new THREE.ImageUtils.loadTexture("media/texture_glass.jpg");

        if(material.name == "metal texture")
        {
            material.map = texture_metal;
        }

        if(material.name == "glass texture")
        {
           material.map = texture_glass;
        }
    }