Javascript Three.js循环“;在潜在内存不足崩溃之前暂停”;创建线几何图形时

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

我们有一个包含对象列表的walls数组。每个对象都有一对屏幕角。3th.js应用程序使用forEach over this walls数组将点推送到循环中的两个不同的3th.Geometry()对象中。此数组有405个对象,但循环在138次迭代后暂停。Chrome控制台显示“在潜在内存不足崩溃之前暂停”。创建这些几何图形的正确方法是什么

     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
,因为它的内存效率更高。