Javascript 如何最好地从THREE.js中的文件导出/导入THREE.Vector3数组?
我有一个很大的Javascript 如何最好地从THREE.js中的文件导出/导入THREE.Vector3数组?,javascript,arrays,json,three.js,Javascript,Arrays,Json,Three.js,我有一个很大的THREE.Vector3()数组,我想保存到一个JSON文件中,以便稍后读取 我可以将其写成JSON.stringify(Points),它输出一个对象数组,如下所示: "Points": [ {"x":115,"y":0,"z":-250}, {"x":115,"y":0,"z":-220}, {"x":115,"y":0,"z":-190}, ... ] newPoint[nn] = new TH
THREE.Vector3()
数组,我想保存到一个JSON文件中,以便稍后读取
我可以将其写成JSON.stringify(Points)
,它输出一个对象数组,如下所示:
"Points": [
{"x":115,"y":0,"z":-250},
{"x":115,"y":0,"z":-220},
{"x":115,"y":0,"z":-190},
...
]
newPoint[nn] = new THREE.Vector3(jsonData.Points[nn].x,jsonData.Points[nn].y,jsonData.Points[nn].z);
现在,如果我回过头来读这篇文章,我会松开我的三个.js vecotr,必须按照如下方式分别重新分配它们:
"Points": [
{"x":115,"y":0,"z":-250},
{"x":115,"y":0,"z":-220},
{"x":115,"y":0,"z":-190},
...
]
newPoint[nn] = new THREE.Vector3(jsonData.Points[nn].x,jsonData.Points[nn].y,jsonData.Points[nn].z);
也许我只是希望有某种魔力,但我觉得这样会更有效率。有没有更好的方法来读/写JSON中包含三个.js向量的数组 我的项目中有类似的任务。我只是使用浮点数数组来保持点数。它允许减少文件大小。例如:
{
points: [x0, y0, z0, x1, y1, z1, ..., xn, yn, zn]
}
也可以对坐标进行分组
要保留三个.Vector3对象,可以使用js文件:
var pointList = [new THREE.Vector3(x0, y0, z0), new THREE.Vector3(x1, y1, z1), ..., new THREE.Vector3(xn, yn, zn)];
示例第1部分。你可以用for循环重新创建你的3.Vector3
//Let's assume, at a given time you have this arrays;
let x_array=[-10,-5,20,10];
let y_array=[0,15,15,0];
let z_array=[0,0,0,0];
//This loop re_create yours three.Vector3;
let array_of_threejs_points=[];
let i=0;
for(i=0; i<x_array.length; i++)
{
array_of_threejs_points.push(new THREE.Vector3(x_array[i],y_array[i],z_array[i]));
}
console.log('array_of_threejs_points');
console.log(array_of_threejs_points);
对。我知道。第二部分应加强
PS1。在本例中,threejs_点是一个three.Vector3对象
PS2。在本例中,最重要的说明是:
array_of_threejs_points.push(新的THREE.Vector3(x_数组[i]、y_数组[i]、z_数组[i])代码>加载带有点的json文件并创建三个.Vector3对象的列表需要一些时间。值得考虑使用工人,谢谢你的回答!我注意到r72中现在有一个object3D.toJSON()
函数,所以我对此感到兴奋,并期待着使用它。但是我仍然想知道toJSON()
是否存在于三个数组中。Vector3()而不仅仅是对象。。。。