Javascript Three.js循环“;在潜在内存不足崩溃之前暂停”;创建线几何图形时
我们有一个包含对象列表的walls数组。每个对象都有一对屏幕角。3th.js应用程序使用forEach over this walls数组将点推送到循环中的两个不同的3th.Geometry()对象中。此数组有405个对象,但循环在138次迭代后暂停。Chrome控制台显示“在潜在内存不足崩溃之前暂停”。创建这些几何图形的正确方法是什么Javascript Three.js循环“;在潜在内存不足崩溃之前暂停”;创建线几何图形时,javascript,three.js,react-redux,Javascript,Three.js,React Redux,我们有一个包含对象列表的walls数组。每个对象都有一对屏幕角。3th.js应用程序使用forEach over this walls数组将点推送到循环中的两个不同的3th.Geometry()对象中。此数组有405个对象,但循环在138次迭代后暂停。Chrome控制台显示“在潜在内存不足崩溃之前暂停”。创建这些几何图形的正确方法是什么 let lineGeometryPlan = new THREE.Geometry(); let lineGeometryElevation
let lineGeometryPlan = new THREE.Geometry();
let lineGeometryElevation = new THREE.Geometry();
this.props.walls.forEach((elem) => {
console.log("Looping walls");
lineGeometryPlan.vertices.push(
new THREE.Vector3(
elem.screen_corners[0][0],
elem.screen_corners[0][1],
elem.screen_corners[0][2]
)
);
lineGeometryPlan.vertices.push(
new THREE.Vector3(
elem.screen_corners[1][0],
elem.screen_corners[1][1],
elem.screen_corners[1][2]
)
);
var point = new THREE.Vector3(
elem.screen_wall_bottom_left[0],
elem.screen_wall_bottom_left[1],
elem.screen_wall_bottom_left[2]
);
var point2 = new THREE.Vector3(
elem.screen_wall_bottom_left[0],
elem.screen_wall_bottom_left[1] + elem.wallHeight,
elem.screen_wall_bottom_left[2]
);
var point3 = new THREE.Vector3(
elem.screen_wall_bottom_left[0] + elem.wallLength,
elem.screen_wall_bottom_left[1],
elem.screen_wall_bottom_left[2]
);
var point4 = new THREE.Vector3(
elem.screen_wall_bottom_left[0] + elem.wallLength,
elem.screen_wall_bottom_left[1] + elem.wallHeight,
elem.screen_wall_bottom_left[2]
);
lineGeometryElevation.vertices.push(point);
lineGeometryElevation.vertices.push(point3);
lineGeometryElevation.vertices.push(point2);
lineGeometryElevation.vertices.push(point);
lineGeometryElevation.vertices.push(point2);
lineGeometryElevation.vertices.push(point4);
lineGeometryElevation.vertices.push(point4);
lineGeometryElevation.vertices.push(point3);
});
我建议您使用
buffergeometry
,因为它的内存效率更高。