threeJS jsonLoader - "无法读取属性'长度'未定义"

时间:2016-01-21 17:06:06

标签: javascript three.js

我正在创建一个可以保存然后加载的场景。

要保存场景,我会序列化所有对象(及其数据)。对于网格,这个工作原理如下:

var json = {};
json.objectsInScene = [];
for (var i = 0; i < collectionOfObjects.length; i++)
{

    json.objectsInScene.push(collectionOfObjects[i].toJSON();
}

然后,我尝试加载它们,其工作原理如下:

var jsonObject = JSON.parse(json);

for (var i = 0; i < jsonObject.objectsInScene.length;i++){

    var loader = new THREE.JSONLoader();
    var geometry = loader.parse(jsonObject.objectsInScene[i]);

    var mesh = new THREE.Mesh(geometry.geometry, new THREE.MeshBasicMaterial());

    this.scene.add(mesh);
}

当我执行此代码时。我收到以下错误:

  

无法读取属性&#39;长度&#39;未定义的

     

three.js的第14990行。

这一行:

zLength = vertices.length;

在dev工具中检查时,我必须同意:vertices.length是undefined。事实上,它被分配了几行:

var vertices = json.vertices;

但是json-object只包含以下属性:

geometries: Array[15]
materials: Array[15]
metadata: Object
object: Object

我做错了什么?它出了什么问题,或者我可以做些什么来解决这个问题?

R73

1 个答案:

答案 0 :(得分:-1)

也许您应该使用 THREE.ObjectLoader

for (var i = 0; i < jsonObject.objectsInScene.length;i++){

    var loader = new THREE.ObjectLoader();
    var obj= loader.parse(jsonObject.objectsInScene[i]);

    this.scene.add(obj);
}