threeJS jsonLoader - “无法读取未定义的属性'length'”

threeJS jsonLoader - "Cannot read property 'length' of undefined"

本文关键字:属性 length 未定义 jsonLoader 读取 threeJS      更新时间:2023-09-26

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

为了保存场景,我序列化所有对象(及其数据)。对于网格,其工作原理很简单:

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

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

无法读取未定义的属性"长度"

14990行的三.js。

这是这一行:

zLength = vertices.length;

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

var vertices = json.vertices;

但 json 对象仅包含以下属性:

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

我做错了什么?哪里出了问题,或者我该怎么做才能解决此问题?

R73

也许你应该使用THREE。对象加载

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