我正在创建一个可以保存然后加载的场景。
要保存场景,我会序列化所有对象(及其数据)。对于网格,这个工作原理如下:
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
答案 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);
}