我有一个很大的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},
...
]现在,如果我转过身来读回这篇文章,我会丢失我的three.js向量,并且必须逐个重新分配它们,如下所示:
newPoint[nn] = new THREE.Vector3(jsonData.Points[nn].x,jsonData.Points[nn].y,jsonData.Points[nn].z);也许我只是希望有某种魔法,但我觉得这样做会更有效率。有没有更好的方法在JSON中读/写three.js向量数组?
发布于 2015-09-11 23:53:10
我在我的项目中也有类似的任务。我只是使用了一组浮点数来保持点数。它允许减小文件大小。例如:
{
points: [x0, y0, z0, x1, y1, z1, ..., xn, yn, zn]
}也可以对坐标进行分组

要保留THREE.Vector3对象,可以使用js文件:
var pointList = [new THREE.Vector3(x0, y0, z0), new THREE.Vector3(x1, y1, z1), ..., new THREE.Vector3(xn, yn, zn)];发布于 2019-10-16 07:56:33
示例PART1。你可以用re_create循环来代替你的three.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);示例Part2。将这些three.Vector3传递给曲线,在本例中为BezierCurve。
let curve = new THREE.CubicBezierCurve3(array_of_threejs_points[0], array_of_threejs_points[1], array_of_threejs_points[2], array_of_threejs_points[3]); 是。我知道呀。应加强PART2;
PS1。在本例中,threejs_point是一个three.Vector3对象。
PS2。在这个例子中,最重要的指令是:
array_of_threejs_points.push(new THREE.Vector3(x_array[i],y_array[i],z_array[i]));
https://stackoverflow.com/questions/32511527
复制相似问题