使用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
答案 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;
}
}